我構建了一個MGrammar規範來解析一些尋找特定位信息的僞代碼。除了1個關鍵元素外,我大部分的規範都在工作。MGrammar用於解析IF語句
僞代碼支持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 |
end:EndClause => end |
v:Expression => v;
語法IfClause =如果名稱:標識符運算符:運算符然後語句:Statement =>如果[name,operator,Then [statement]];
語法ElseifClause = Elseif名稱:標識符運算符:運算符然後語句:Statement => ElseIf [name,operator,Then [statement]];
語法ElseClause =其他語句:Statement => Else [語句];
語法EndClause = Endif; `
但是,'Then'和'Else'之後的語句不夠貪婪,只能捕獲解析樹中的第一條語句。
有沒有人試圖實現使用MGrammar的If語句的解析或有任何建議?
這仍然是當前? –
由於截止日期的原因,我不得不放棄MGrammer方法,但如果有人有答案,這將很好地解決這個問題,因爲在將來的某些工作中,這樣做會很有幫助。 – Sam