antlr4相关内容

如何在 antlr 中解析带有嵌套字符串分隔符的 PDF 字符串?

我正在解析 PDF 内容流.字符串由括号分隔,但可以包含嵌套的未转义括号.来自 PDF 参考: 文字字符串应写为括号中包含的任意数量的字符.除了不平衡括号(LEFT PARENHESIS (28h) 和 RIGHT PARENTHESIS (29h))和反斜杠(REVERSE SOLIDUS (5Ch))之外的任何字符都可以出现在字符串中,它们应按照本子条款中的描述进行特殊处理.字符串中的平 ..
发布时间:2021-11-11 04:08:47 其他开发

antlr4 无法将文字提取到令牌中

我有以下语法,正在尝试慢慢开始,努力移动复杂的参数. 语法命令;命令:命令+ EOF;命令:NAME args NL;args : arg |;arg : 下划线 |降低;//arg : DASH 'a' |'X';名称:[_a-zA-Z0-9]+;NL : '\n';WS : [ \t\r]+ ->跳过 ;//空格、制表符、换行符破折号:'-';降低:[a-z];//'a' .. 'z'; ..
发布时间:2021-11-11 04:08:44 其他开发

ANTLR 语法也能识别数字键和整数

我正在尝试创建一个 ANTLR 语法来解析可选具有重复计数的键序列.例如,(a b c r5) 表示“重复键 a、b 和 c 五次". 我的语法适用于 KEYS : ('a'..'z'|'A'..'Z'). 但是当我尝试添加数字键 KEYS : ('a'..'z'|'A'..'Z'|'0'..'9') 时像 (a 5 r5) 这样的输入表达式,解析在中间 5 处失败,因为它无法判断 5 ..
发布时间:2021-11-11 04:08:38 其他开发

如何访问 antlr golang 目标中的语法组件

访问通过语法规则传递的运算符值时出现编译错误.例如,我有以下语法文件: 语法表达式;@parser::header {进口 (“操作系统")}@parser::members {func eval(left int, op antlr.Token, right int) int {如果(op.GetText()==“*"){返回左 * 右} else if (op.GetText() == "+ ..
发布时间:2021-11-11 04:08:35 其他开发

处理以空格开头的字符串

我正在尝试使用以下规则集创建 ANTLR v4 语法: 1.如果一行以@开头,就被认为是一个标签: @label 2.如果该行以cmd开头,则视为命令 cmd param1 param2 3.如果一行以空格开头,则视为字符串.应提取所有文本.字符串可以是多行的,所以它们以空行结束 支持多行的长字符串以及任何可以想象的特殊字符. 4.最后,如果一行以空格开头,@ ..
发布时间:2021-11-11 04:08:32 其他开发

Antlr解析python安装文件

我有一个 java 程序,它必须解析 python setup.py 文件才能从中提取信息.我有点工作,但我碰壁了.我首先从一个简单的原始文件开始,一旦我运行它,然后我就会担心去除我不想让它反映实际文件的噪音. 这是我的语法 grammar SetupPy ;file_input: (NEWLINE | setupDeclaration)* EOF;设置声明:'设置''('方法')';方法 ..
发布时间:2021-11-11 04:08:29 其他开发

Antlr 跳过标签外的文本

我试图跳过/忽略自定义标签外的文本: 此文本是要跳过的唯一标记 ?compo \5+5\ ?> 还有这个 我尝试使用以下词法分析器: TAG_OPEN : ''->流行模式;NUMBER_DIGIT : '1'..'9';零:'0';逻辑拷贝: 或者|和;比较: 情商|东北部|GT|通用电气|LT|乐;WS : ' ';换行:('\r\n'|'\n'|' ..
发布时间:2021-11-11 04:08:26 其他开发

ANTLR4:词法分析器规则匹配错误

我刚刚开始学习 ANTLR4 词法分析器规则.我的目标是为 Java properties 文件创建一个简单的语法.这是我目前所拥有的: 词法分析器语法 PropertiesLexer;行注释:( 行注释哈希|行注释排除)->跳过;片段 LineCommentHash: '#' ~[\r\n]*;片段 LineCommentExcl:'!'~[\r\n]*;片段包裹线: '\\'( '\r' ' ..
发布时间:2021-11-11 04:08:23 其他开发

模棱两可的 ANTLR 解析器规则

我有一个非常简单的示例文本,我想用 ANTLR 解析它,但由于规则的定义不明确,我得到了错误的结果. 语法如下: grammar SimpleExampleGrammar;编:事件EOF;事件:DEFINE EVT_HEADER eventName=eventNameRule;事件名称规则:数字+;定义:'#define';EVT_HEADER : 'EVT_';数字:[0-9a-zA-Z ..
发布时间:2021-11-11 04:08:18 其他开发

具有冲突令牌的 ANTLR 行为

在令牌冲突的情况下,ANTLR 词法分析器行为是如何定义的?让我解释一下我所说的“冲突"令牌是什么意思.例如,假设定义了以下内容: INT_STAGE : '1'..'6';INT:'0'..'9'+; 这里有一个冲突,因为在读取了一系列数字后,词法分析器不知道是一个 INT 还是多个 INT_STAGE 标记(或两者的不同组合).经过测试,看起来如果 INT 在 INT_STAGE 之后定义 ..
发布时间:2021-11-11 04:08:15 其他开发

antlr4 数组实现:获取元素的值

我正在尝试在 antlr4 中实现数组,但我不知道如何在像这样初始化时获取数组的多个元素: int array[] = {1, 2}; 我想把它们放在这样的 HashMap 中,关键是索引: public Maparray_memory = new HashMap(); 以下是我遵循的语法: grammar GaleugParserNew;/** 解析器规则*/声明变量: 整数 ID ' ..
发布时间:2021-11-11 04:08:12 Java开发

ANTLR4:词法分析器命令中无法识别的常量值

我正在学习如何使用“更多"词法分析器命令.我输入了 ANTLR 书籍第 281 页中显示的词法分析器语法: 词法分析器语法 Lexer_To_Test_More_Command ;LQUOTE : '"' -> more, mode(STR) ;WS : [ \t\r\n]+ ->跳过 ;模式 STR ;字符串:'"' -> 模式(DEFAULT_MODE);文本 : .->更多的 ; 然后我 ..
发布时间:2021-11-11 04:08:09 其他开发

如何在 ANTLR 4 中使用自定义标记和上下文

我使用 ANTLR3 已经有一段时间了.我只是切换到 ANTLR 4.总的来说,对于我的编译器课程中的学生来说,它更容易理解.但是,从我找到的这本书和其他文档中并不清楚如何制作形成解析树自定义类节点的标记和上下文.使用 ANTLR 3 我只是使用选项让生成的代码在生成的代码中重命名它们.在 ANTLR 4 中呢?是否有我应该能够找到的文档? 解决方案 Implement TokenFact ..
发布时间:2021-11-11 04:08:07 其他开发

在 ANTLR 解析树中存储行号

有没有办法使用 ANTLR 4 在创建的解析树中存储行号?我遇到了 这篇 文章,它确实做到了,但我认为它适用于较旧的 ANTLR 版本,因为 parser.setASTFactory(工厂); 它似乎不适用于 ANTLR 4.我正在考虑像 这样的东西 treenode.getLine() ,就像我们可以有 treenode.getChild() 解决方案 使用 ..

Antlr4 Visitor 几个规则上下文

我有这样的语法: 搜索: K_SEARCH 实体( K_QUERY expr )?( K_FILTER expr )?; 如你所见,我有两个可选的 expr. 我已经创建了我的访问者,我可以访问entity、K_QUERY 和K_FILTER.SearchContext 提供了一个 List 以获取所有 expr 的列表.但是,我怎么知道表达式是 K_QUERY expr 还是 K_FI ..
发布时间:2021-11-11 04:08:01 其他开发

未调用我的词法分析器令牌操作

我使用 antlr4 和 javascript 目标. 这是一个示例语法: P : T ;T : [a-z]+ {console.log(this.text);};开始:P; 当我运行生成的解析器时,虽然输入匹配,但没有打印任何内容.如果我将操作移动到标记 P,则它会被调用.这是为什么? 解决方案 在引用的规则中忽略操作.这是 ANTLR 4 的原始行为,当时词法分析器仅支持每个 ..
发布时间:2021-11-11 04:07:58 其他开发

ANTLR4 相当于什么!在词法分析器规则中?

我正在将旧的 ANTLR 2 语法转换为 ANTLR 4,但在字符串规则方面遇到了问题. STRING :'\''!(~('\'' | '\\' | '\r' | '\n'))*'\''!; 这将创建一个 STRING 标记,其文本包含字符串的内容,但 不包含开始和结束引号,因为 ! 引号文字后的符号. ! 符号上的 ANTLR 4 扼流圈,('!' 对我来说完全出乎意料 (AC0050 ..
发布时间:2021-11-11 04:07:55 其他开发

ANTLR 4 如何处理一元/负数

我正在尝试使用 Antlr 4 设置一个简单的计算器. 语法: grammar calcGrammar;输入:表达式EOF;表达 :减号表达式#unaryMinusExpr|表达式 op=(MULTIPLY | DIVIDE) 表达式 #multiplicationExpr|表达式 op=(MINUS | ADD) 表达式 #additiveExpr|NUMBER #num;数字:[0-9 ..
发布时间:2021-11-11 04:07:52 Java开发