コンパイラ作成日記 4日目
こちらの挑戦日記4日目
リポジトリはこちら。 gennei/compilerbook-challenge
今日やったこと
- 比較演算子の実装
commit: gennei/compilerbook-challenge@ba71e9b
比較演算子の実装
教本では一度に実装していたが、一度に大きく変更するとわけわからなくなるので一文字演算子だけ実装してみた。
<
,>
だけ実装した- 2文字以上扱えるようにした
==
,!=
を実装<=
,>=
を実装
教本にあるこれが読めるようになったのでそんなに難しくなかった。
expr = equality
equality = relational ("==" relational | "!=" relational)*
relational = add ("<" add | "<=" add | ">" add | ">=" add)*
add = mul ("+" mul | "-" mul)*
mul = unary ("*" unary | "/" unary)*
unary = ("+" | "-")? primary
primary = num | "(" expr ")"