【问题标题】:MGrammar for parsing IF statement解析 IF 语句的语法
【发布时间】:2009-09-17 08:36:28
【问题描述】:

我正在构建一个 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 => 结束 |
v:表达式 => v ;

语法 IfClause = If name:Identifier operator:Operator Then 语句:Statement => If[name, operator, Then[statement]];
语法 ElseifClause = Elseif name:标识符 operator:Operator Then 语句:Statement => ElseIf[name, operator, Then[statement]];
语法 ElseClause = Else statement:Statement => Else[statement];
语法 EndClause = Endif; `

但是,'Then' 和 'Else' 之后的语句不够贪心,只捕获解析树中的第一条语句。

有没有人尝试过使用 MGrammar 实现 If 语句的解析或有什么建议??

【问题讨论】:

  • 由于截止日期,我不得不放弃 Mgrammer 方法,但如果有人有答案,最好能解决这个问题,因为这对未来的一些工作很有好处。跨度>

标签: oslo mgrammar if-statement


【解决方案1】:

您可以在 codeplex 上的原型项目中找到(几乎)完整的 C# 4.0 语法。 Dan Vanderboom 编写它是为了准备他的名为“Archetype”的新语言代码。

也许有帮助:http://archetype.codeplex.com/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-22
    • 2016-06-16
    • 2018-07-14
    • 1970-01-01
    • 2011-12-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多