这个流氓语法有什么问题?
What's wrong with this Rascal grammar?
所以我试图让这个语法起作用,但是它给了我一个错误。它来自 Number 词法中的 @context="num" 。它告诉我它是模棱两可的,谁能告诉我为什么?
start syntax Statement = Type Id "=" Number ";" ;
lexical Id = @context="id" [a-z] !<< [a-z]+ !>> [a-z] \ Type;
lexical Number = @context="num" [0-9]+;
keyword Type = @context="type" ("int"|"str"|"float");
这真的很奇怪,因为它在没有 @context 标签的情况下也能工作,但是当我添加它时,我突然无法 import/find 不同模块中的符号语句。或者是给我语法不明确的错误。
请帮忙
**编辑:**
如果我将关键字 Type 更改为普通的词法类型,那么无论有没有括号,问题仍然存在。
我认为您不应该使用词法关键字进行解析,因为它往往是很多东西的组合。
并且,关键字必须是具有纯文字的普通列表操作产品。它不适用于任意正则表达式。
所以它在没有上下文的情况下工作的原因,我猜是因为您还删除了括号,这将它变成了一个通用的替代列表?
所以我试图让这个语法起作用,但是它给了我一个错误。它来自 Number 词法中的 @context="num" 。它告诉我它是模棱两可的,谁能告诉我为什么?
start syntax Statement = Type Id "=" Number ";" ;
lexical Id = @context="id" [a-z] !<< [a-z]+ !>> [a-z] \ Type;
lexical Number = @context="num" [0-9]+;
keyword Type = @context="type" ("int"|"str"|"float");
这真的很奇怪,因为它在没有 @context 标签的情况下也能工作,但是当我添加它时,我突然无法 import/find 不同模块中的符号语句。或者是给我语法不明确的错误。
请帮忙
**编辑:** 如果我将关键字 Type 更改为普通的词法类型,那么无论有没有括号,问题仍然存在。
我认为您不应该使用词法关键字进行解析,因为它往往是很多东西的组合。
并且,关键字必须是具有纯文字的普通列表操作产品。它不适用于任意正则表达式。
所以它在没有上下文的情况下工作的原因,我猜是因为您还删除了括号,这将它变成了一个通用的替代列表?