IFステートメントを解析するためのMGrammar
-
08-07-2019 - |
質問
MGrammar仕様を構築して、特定の情報ビットを探す擬似コードを解析しています。 1つの重要な要素を除き、ほとんどの仕様が機能しています。
擬似コードはif-then-else構文をサポートしており、構文解析の満足できる方法を見つけることができませんでした。正確な構成は...
IF式演算子式THEN
Statement1
Statement2
ステートメント
ELSEIF式演算子式THEN
Statement1
Statement2
ステートメント
ELSE
Statement1
Statement2
ステートメント
ENDIF
... ElseおよびElseifはオプションです。
これまでに私が持っているのは:
`構文ステートメント= r:ReturnClause => r |
i:IfClause => i |
ei:ElseifClause => ei |
e:ElseClause => e |
end:EndClause =>終了|
v:Expression => 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ステートメントの解析を実装しようとした人や提案がありますか?
解決
codeplexのアーキタイププロジェクトで(ほぼ)完全なC#4.0文法を見つけることができます。 Dan Vanderboomは、「Archetype」という名前の新しい言語コードの準備でそれを書きました。
役立つかもしれません: http://archetype.codeplex.com/