title | date | draft | tags | |||
---|---|---|---|---|---|---|
コンパイラ作成日記 4日目 |
2022-03-11 17:32:53 +0900 |
false |
|
こちらの挑戦日記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 ")"