-
Notifications
You must be signed in to change notification settings - Fork 4
Release 0.1.0
らいパン粉 edited this page Aug 4, 2018
·
7 revisions
簡単な演算の式をコンパイルできる。 さらに演算子の優先順位をカスタマイズできる。
+ - * /
演算子は定義しなければならない。
優先順位の数値が大きいほど結合が強い。
優先順位は1~30まで。
infixr <優先順位> <演算子>
infixl <優先順位> <演算子>
例
infixl 0 *
infixl 1 +
4+5*2
これは+が*より優先して計算されることを示している。
infixは上書きできる。
+は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'