我正在解析javascript ES6,但是如果没有分号,我将无法使其正常工作。我使用ES5中的Tin语法作为基础(https://github.com/usethesource/rascal/blob/master/src/org/rascalmpl/library/lang/javascript/saner/Syntax.rsc),并且已经从ES6中获得了大多数新功能,但是我仍然无法消除对分号的需要
例如:
lexical Whitespace
= [\t-\n\r\ ];
lexical LAYOUT
= Whitespace
| Comment
;
layout LAYOUTLIST
= LAYOUT*
!>> [\t\ \n]
!>> "/*"
!>> "//" ;
syntax Variable
= VariableIdentifier {VariableDeclaration ","}+ declarations ";"
syntax Statement
= varDecl: Variable varDecl;
替换“;”时出现解析错误到“ \ n”语法变量上,甚至为语句结尾创建新规则:
syntax EOS
= ";" | "\n";
解析错误转到换行符之后的下一行。
从空格或布局列表中删除会使我在文件开头的注释解析错误。
删除布局列表会给我带来歧义。
答案 0 :(得分:1)
考虑使用一种较小的语言,我正在使用以下方法处理此问题(语句结尾可能是“;”,“ \ n”或文件结尾)
ReadonlyArray