MGrammar用于解析IF语句

我正在构建一个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是可选的。 到目前为止我所拥有的是: `syntax Statement = r:ReturnClause => r | i:IfClause => i | ei:ElseifClause => ei | e:ElseClause => e | 结束:EndClause => end | v:表达式=> v; 语法IfClause =如果name:Identifier operator:Operator Then语句:Statement => If [name,operator,Then [statement]]; 语法ElseifClause = Elseif名称:Identifier运算符:Operator Then语句:Statement => ElseIf [name,operator,Then [statement]]; 语法ElseClause = Else语句:Statement => Else [statement]; 语法EndClause = Endif; ` 但是,'Then'和'Else'之后的Statement不够贪婪,只捕获解析树中的第一个语句。 有没有人试图使用MGrammar实现If语句的解析或有任何建议?     
已邀请:
您可以在codeplex上的原型项目中找到(几乎)完整的C#4.0语法。 Dan Vanderboom在准备他的新语言代码“Archetype”时写了这篇文章。 也许这有帮助:http://archetype.codeplex.com/     

要回复问题请先登录注册