使用 Rascal 解析以注释开头的文件
Parsing files that start with comment using Rascal
我正在尝试解析以下 ES6 文件:
// comment1
function sum(x, y) {
return x + y;
}
// comment2
var value = 22;
解析不适用于以注释、空格、换行符开头的文件。它适用于代码所有部分的注释。我得到的错误是:
[parsing file:] /test/function.js... found an error at line 3, column 0
语法的起始行是:
start syntax CompilationUnit = Statement* statements LAYOUT?;
我的 LAYOUT 定义如下:
lexical LAYOUT
= Whitespace
| Comment
;
layout LAYOUTLIST
= LAYOUT*
!>> [\t\ \n]
!>> "/*"
!>> "//" ;
我尝试将 LAYOUT?
和 LAYOUT*
添加到开始语法语句的开头,但我得到:
[parsing file:] /test/function.js|std:///ParseTree.rsc|(13348,964,<407,0>,<442,87>): Ambiguity(|unknown:///|(0,84,<1,0>,<10,0>),"CompilationUnit","//comment 1\n\nfunction sum(x, y) {\n return x + y;\n}\n\n//akakakakak\n\nvar caio = 22;\n")
at *** somewhere ***(|std:///ParseTree.rsc|(13348,964,<407,0>,<442,87>))
at parse(|std:///ParseTree.rsc|(14305,5,<442,80>,<442,85>))
at $root$(|prompt:///|(0,45,<1,0>,<1,45>))
有什么建议吗?
谢谢
有一条自动为您生成的隐式规则:
start[CompilationUnit] = LAYOUTLIST CompilationUnit top LAYOUTLIST;
根据此信息,您可以推断出您需要致电:
parse(#start[CompilationUnit], myFile)
您将得到一棵树,其中包含开始非终结符前后的空格和注释。 'top' 字段可用于投影空白
之间的内容
我正在尝试解析以下 ES6 文件:
// comment1
function sum(x, y) {
return x + y;
}
// comment2
var value = 22;
解析不适用于以注释、空格、换行符开头的文件。它适用于代码所有部分的注释。我得到的错误是:
[parsing file:] /test/function.js... found an error at line 3, column 0
语法的起始行是:
start syntax CompilationUnit = Statement* statements LAYOUT?;
我的 LAYOUT 定义如下:
lexical LAYOUT
= Whitespace
| Comment
;
layout LAYOUTLIST
= LAYOUT*
!>> [\t\ \n]
!>> "/*"
!>> "//" ;
我尝试将 LAYOUT?
和 LAYOUT*
添加到开始语法语句的开头,但我得到:
[parsing file:] /test/function.js|std:///ParseTree.rsc|(13348,964,<407,0>,<442,87>): Ambiguity(|unknown:///|(0,84,<1,0>,<10,0>),"CompilationUnit","//comment 1\n\nfunction sum(x, y) {\n return x + y;\n}\n\n//akakakakak\n\nvar caio = 22;\n")
at *** somewhere ***(|std:///ParseTree.rsc|(13348,964,<407,0>,<442,87>))
at parse(|std:///ParseTree.rsc|(14305,5,<442,80>,<442,85>))
at $root$(|prompt:///|(0,45,<1,0>,<1,45>))
有什么建议吗? 谢谢
有一条自动为您生成的隐式规则:
start[CompilationUnit] = LAYOUTLIST CompilationUnit top LAYOUTLIST;
根据此信息,您可以推断出您需要致电:
parse(#start[CompilationUnit], myFile)
您将得到一棵树,其中包含开始非终结符前后的空格和注释。 'top' 字段可用于投影空白
之间的内容