Skip to content

Release 0.1.0

らいパン粉 edited this page Aug 3, 2018 · 7 revisions

Release 0.1.0

簡単な演算の式をコンパイルできる。 さらに演算子の優先順位をカスタマイズできる。

定義できる演算子

+ - * /

演算子の定義方法

演算子は定義しなければならない。

優先順位の数値が大きいほど結合が強い。

優先順位は1~30まで。

infixr <優先順位> <演算子>

infixl <優先順位> <演算子>

infixl 0 *
infixl 1 +
4+5*2

これは+が*より優先して計算されることを示している。

infixは上書きできる。

BNF

+は1回以上

{}は0回以上を表す

<program> := {<stmt>}
<stmt>    := {<skip>} ( <infix> | <expr> ) {<skip>}
<expr>    := <num> { <op> <num> }
<infix>   := ('infixr' | 'infixl') <space>+ <num> <space>+ <op>
<op>      := '+' | '-' | '/' | '*'
<num>     := [0-9]+
<skip>    := '\n' | <space>
<space>   := ' ' | '\t'

Clone this wiki locally