【发布时间】: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