antlr3相关内容
我有一种情况,我的语言包含一些在构建时未知但在运行时已知的单词,导致需要不断重建/重新部署程序以考虑新单词.我在徘徊是否可以在 Antlr 中从配置文件生成一些令牌? 例如在一个简化的例子中,如果我有一个规则 规则:WORDS+;单词:'abc'; 我的语言在运行时遇到了“bcd",我希望能够修改配置文件以将 bcd 定义为一个词,而不必重新构建然后重新部署. 解决方案 您可以向
..
如何在 ANTLR 的词法分析器和解析器规则中使用否定元字符 ~? 解决方案 否定可能发生在 词法分析器和解析器规则. 在词法分析器规则中,您可以否定字符,在解析器规则中,您可以否定标记(词法分析器规则).但是词法分析器规则和解析器规则只能分别否定单个字符或单个标记. 举几个例子: 词法规则 要匹配除小写ascii字母以外的一个或多个字符,您可以: NO_LOWE
..
我想开始使用 ANTLR,但在花了几个小时查看 antlr.org 站点,我仍然无法清楚地了解 Java 过程的语法. 有没有一些简单的例子,比如一个用 ANTLR 实现的四运算计算器,通过解析器定义,一直到 Java 源代码? 解决方案 注意:此答案适用于 ANTLR3!如果您正在寻找 ANTLR4 示例,那么这个 Q&A 演示了如何使用 ANTLR4 创建简单的表达式解析器和评估
..
什么是 ANTLR 中的语义谓词? 解决方案 ANTLR 4 对于 ANTLR 4 中的谓词,请查看这些堆栈溢出问答: Antlr4 中语义谓词的语法 ANTLR4 中的语义谓词? ANTLR 3 语义谓词是一种在语法上强制执行额外(语义)规则的方法使用纯代码操作. 语义谓词有 3 种类型: 验证语义谓词; 门控语义谓词; 消除歧义语义谓词.
..
有没有人有一个例子来说明如何设置 sbt 来构建一个 ANTLR 文件(到 scala),然后编译生成的代码. 我的文件布局 src/main/scala/Test.scala//scala 测试台src/main/scala/Test.g//antlr 语法build/antlr/TestParser.scala//antlr 输出文件构建/antlr/TestLexer.scala
..
是否可以以某种方式指定 ANTLR v3 生成的令牌的顺序?我的目标是以这样一种方式对标记进行排序,即我的规则“表达式"中的有效标记相互跟随,以便树遍历器(具有大约 90 个不同的分支)中的条件可以简化为一个分支.类似的东西 if(LA18_0 >= ARRAY_ACCESS && LA18_0
..
正如我在 Antlr greedy-option 中所述,我对可能包含字符串的语言有一些问题字符串文字中的 -literals,例如: 开始:"img src="test.jpg"" 先生Bart Kiers 在我的帖子中提到,无法创建可以解决我的问题的语法.因此我决定将语言更改为: 开始:“img src='test.jpg'" 在启动词法分析器(和解析器)之前. 文件输入可以是:
..
惊喜,我正在为项目构建类似SQL的语言解析器. 我主要使用它,但是当我开始对它的实际请求进行测试时,它将可以处理,我意识到它的内部行为与我所想的不同. 以下语法的主要问题是,我为语言关键字" pct_within "定义了词法分析器规则 PCT_WITHIN .这可以正常工作,但是如果我尝试匹配" attributes.pct_vac "之类的字段,则该字段的文本为" attribut
..
我一直在为程序编写扫描器,并且在线上的大多数教程都包括一个与扫描器一起的解析器.如果不同时编写解析器,似乎不可能编写词法分析器.我只是试图生成令牌,而不是解释它们.我想识别INT令牌,浮点令牌以及一些令牌,例如"begin"和"end" 我对如何匹配关键字感到困惑.我未成功尝试以下操作: KEYWORD:KEY1 |KEY2;KEY1:{input.LT(1).getText().equ
..
我有一个组合的语法,需要提供两个标识符词法分析器规则. 两个标识符可以同时使用.在语法上,Identifier1在Identifer2之前. 第一个标识符是静态的,而第二个标识符规则根据某个标志而改变(使用谓词). 我希望第二个标识符在解析器规则中匹配.但是由于这两个标识符可能与某些常用输入匹配,因此它不会属于identifer2. 我创建了小语法以使其易于理解.语法为:
..
我有一个SQL语法,该语法不支持主机变量.在这种情况下,我想为主机变量提供支持,但是遇到的情况很棘手. 语法中有SQL Identifier词法分析器规则,它支持字母数字以及一些特殊字符'@','#','$和'_'. 主机变量取决于嵌入SQL的语言.例如COBOL. COBOL标识符还允许在变量名中使用连字符(-)(它们之间的某些其他区别). 所以我在语法中另外添加了LANG_I
..
我首先要为诸如此类的表达式创建语法 (foo = bar or (bar = "bar" and baz = 45.43)) and test = true 到目前为止,我的语法如下: grammar filter; tokens { TRUE = 'true'; FALSE = 'false'; AND = 'and'; OR = 'or';
..
我在看用ANTLR 3编写的Javascript语法的代码, http://www.antlr3.org/grammar/1206736738015/JavaScript.g 我发现很多情况下 program : LT!* sourceElements LT!* EOF! ; LT!*是什么意思? 编辑: 来自 http://ftp.camk.ed
..
嗨,我的ANTLR树语法有一个小问题.我正在使用ANTLRWorks 1.4.在解析器语法中,我有如下规则: declaration : 'variable' IDENTIFIER ( ',' IDENTIFIER)* ':' TYPE ';' -> ^('variable' IDENTIFIER TYPE)+ 所以我希望每个IDENTIFIER都有一棵树. 在树
..
我正在将antlr3语法转换为antlr4语法.我删除了所有语法谓词.我正在努力对此进行正确的转换 relaxed_date_month_first : relaxed_day_of_week? relaxed_month COMMA? WHITE_SPACE relaxed_day_of_month (relaxed_year_prefix relaxed_year)?
..
ANTLR是否适合该项目? 我正在寻求处理和转换用户输入的字符串,其中可能包括自定义函数.例如,用户可能在字符串中写了诸如$ CAPITALIZE('word')之类的内容,而我想执行 使用StringUtils在后台进行实际转换. 我想用户有时会编写嵌套函数,例如: $ RIGHT_PAD($ RIGHT($ CAPITALIZE('a123456789'),6),3,'0')
..
我根据语法判断,我必须转换成Antlr4.语法不是我写的,所以我不知道如何以有意义的方式转换它们.这些是我必须转换的语法的主要变体. 1. simpleSelector : elementName ((esPred)=>elementSubsequent)* | ((esPred)=>elementSubsequent)+ ;
..
我正在尝试编写一种语法来解析媒体Wiki的Wiki语法,然后克里奥尔语语法(不幸的是,我现在的问题是,当我已经处于斜体规则之内时,就能够捕获一个大胆的规则,反之亦然.例如 '' this text is bold '''now it's italic''' and just bold again'' 此问题为我提供了很多帮助但我被卡住了.目标是使用动作(或可能是AST)在语法内部生成HT
..
我定义了以下语法. grammar Sample_1; @header { package a; } @lexer::header { package a; } program : define* implement* ; define : IDENT '=(' INTEGER',' INTEGER ')'
..
我正在研究Antlr语法,以使用Java解析多个变量中的多项式函数.合法输入的示例是 42; X; +42X; Y^42; 1337HelloWorld; 13,37X^42; 以下语法的确编译时没有警告或错误: grammar Function; parseFunction returns [java.util.List> lis
..