Skip to content

Release 0.1.0

らいパン粉 edited this page Aug 4, 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_many> ( <infix> | <expr> ) <skip_many>
<expr>     := <num> <skip_many> { <op> <skip_many> <num> <skip_many> }
<infix>    := ('infixr' | 'infixl') <space>+ <num> <space>+ <op>
<op>       := '+' | '-' | '/' | '*'
<num>      := [0-9]+
<skip>     := '\n' | <space>
<skip_many>:= {<skip>}
<space>    := ' ' | '\t'

Clone this wiki locally