Filter 组合语法ANTLR选项过滤器

Filter 组合语法ANTLR选项过滤器,filter,antlr,grammar,lexer,Filter,Antlr,Grammar,Lexer,我在同一个文件上有一个组合语法词法分析器和解析器。我如何设置 filter = true 去莱克瑟 谢谢你不需要。选项{filter=true;}仅适用于lexer语法。您需要在两个单独的文件中定义语法分析器和词法分析器。编辑:不,它们可以放在一个文件中,请参见chollida的答案: FooParser.g 傻瓜 将这些lexer和parser结合在一起将产生一个解析器,该解析器只解析文件中的字符串或由数字组成的字符串 请注意,ANTLR插件或AntlWorks可能会抱怨,因为lexer规

我在同一个文件上有一个组合语法词法分析器和解析器。我如何设置

filter = true
去莱克瑟

谢谢

你不需要。选项{filter=true;}仅适用于lexer语法。您需要在两个单独的文件中定义语法分析器和词法分析器。编辑:不,它们可以放在一个文件中,请参见chollida的答案:

FooParser.g 傻瓜 将这些lexer和parser结合在一起将产生一个解析器,该解析器只解析文件中的字符串或由数字组成的字符串

请注意,ANTLR插件或AntlWorks可能会抱怨,因为lexer规则对其可见/不可见,但会在命令行上生成lexer和partser:

java -cp antlr-3.2.jar org.antlr.Tool FooLexer.g 
java -cp antlr-3.2.jar org.antlr.Tool FooParser.g 
工作正常。

你没有。选项{filter=true;}仅适用于lexer语法。您需要在两个单独的文件中定义语法分析器和词法分析器。编辑:不,它们可以放在一个文件中,请参见chollida的答案:

FooParser.g 傻瓜 将这些lexer和parser结合在一起将产生一个解析器,该解析器只解析文件中的字符串或由数字组成的字符串

请注意,ANTLR插件或AntlWorks可能会抱怨,因为lexer规则对其可见/不可见,但会在命令行上生成lexer和partser:

java -cp antlr-3.2.jar org.antlr.Tool FooLexer.g 
java -cp antlr-3.2.jar org.antlr.Tool FooParser.g 

很好。

为了澄清巴特在回答中说的话:

The options{filter=true;} only works in lexer-grammars. You will need to define a parser- and lexer grammar in two separate files:
实际上,您不需要将lexer和parser放在两个单独的文件中。您只需要将过滤规则放入lexer语法中。lexer和解析器语法都可以在同一个文件中

虽然巴特建议将它们放在不同的文件中,这是我通常使用的方法

举个例子,你可以在一个文件中完成

带有解析器和lexer Grammar.g的单个文件
注意过滤规则如何在lexer类定义中,但lexer和解析器在同一个文件中。

为了澄清巴特在回答中所说的话:

The options{filter=true;} only works in lexer-grammars. You will need to define a parser- and lexer grammar in two separate files:
实际上,您不需要将lexer和parser放在两个单独的文件中。您只需要将过滤规则放入lexer语法中。lexer和解析器语法都可以在同一个文件中

虽然巴特建议将它们放在不同的文件中,这是我通常使用的方法

举个例子,你可以在一个文件中完成

带有解析器和lexer Grammar.g的单个文件
注意过滤规则是如何在lexer类定义中,但lexer和解析器在同一个文件中。

不知道!谢谢你提供的信息。注意:在ANTLR4中,将两者放在同一个文件中不再有效。我不知道!感谢您提供的信息。注意:在ANTLR4中,将两者放在同一个文件中不再有效。
parser grammar FooParser;

parse
:  Number+ EOF
;

lexer grammar FooLexer;

options{filter=true;}

Number
:  '0'..'9'+
;