Closed ochaochaocha3 closed 5 years ago
以下の問題が発覚したため、構文解析を現在のLALR(1)構文解析器で行うことが不可能と分かった。原因は、トークンの先読みが1個しかできないことだった。
R
U
xRn
xUn
そこで、これらの問題を解消できるPEG(Parsing Expression Grammar)構文解析器を作る。PEG構文解析器の特長は、トークンを無限回先読みできることと、解析の順番を明記できることである。一方、PEG構文解析器には左再帰(a <- a PLUS b など)を単純に書けないという弱点もある。これまでのLALR(1)構文解析器のテストコードをほぼそのまま使えるようにし、最終的に生成される抽象構文木が等しくなるように作る。
a <- a PLUS b
以下の問題が発覚したため、構文解析を現在のLALR(1)構文解析器で行うことが不可能と分かった。原因は、トークンの先読みが1個しかできないことだった。
R
やU
とダイスロールのxRn
、xUn
が見分けられない。そこで、これらの問題を解消できるPEG(Parsing Expression Grammar)構文解析器を作る。PEG構文解析器の特長は、トークンを無限回先読みできることと、解析の順番を明記できることである。一方、PEG構文解析器には左再帰(
a <- a PLUS b
など)を単純に書けないという弱点もある。これまでのLALR(1)構文解析器のテストコードをほぼそのまま使えるようにし、最終的に生成される抽象構文木が等しくなるように作る。