MGrammar仕様を作成して、特定の情報を探す擬似コードを解析しています。1つの重要な要素を除いて、ほとんどの仕様が機能しています。
擬似コードはif-then-else構文をサポートしており、それを解析するための十分な方法を見つけることができませんでした。正確な構成は...
IF expression operator expression THEN
Statement1
Statement2
Statementn
ELSEIF expression operator expression THEN
Statement1
Statement2
Statementn
ELSE
Statement1
Statement2
Statementn
ENDIF
...ElseとElseifはオプションです。
私がこれまでに持っているのは次のとおりです。`構文ステートメント=r:ReturnClause => r |
i:IfClause => i |
ei:ElseifClause => ei |
e:ElseClause => e |
end:EndClause => end |
v:式=> v;
構文IfClause=If name:Identifier operator:Operator Then statement:Statement => If [name、operator、Then [statement]];
構文ElseifClause=Elseif name:Identifier operator:Operator Then statement:Statement => ElseIf [name、operator、Then [statement]];
構文ElseClause=Else statement:Statement => Else [statement];
構文EndClause=Endif; `
ただし、「Then」および「Else」の後のステートメントは十分に貪欲ではなく、解析ツリーの最初のステートメントのみをキャプチャします。
誰かがMGrammarを使用してIfステートメントの解析を実装しようとしたか、何か提案がありますか?