新行作为空格和终止符

时间:2018-11-21 10:39:23

标签: javascript grammar rascal

我正在解析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";

解析错误转到换行符之后的下一行。

从空格或布局列表中删除会使我在文件开头的注释解析错误。

删除布局列表会给我带来歧义。

1 个答案:

答案 0 :(得分:1)

考虑使用一种较小的语言,我正在使用以下方法处理此问题(语句结尾可能是“;”,“ \ n”或文件结尾)

ReadonlyArray