lexer相关内容
我想用 ANTLR4 解析 PostScript 代码.我完成了语法,但是一个特定的语言扩展(由其他人引入)导致难以重新调整. 一个简短的例子: 1: % 这是一行注释2: % 下一行只是将值 10 压入堆栈3:104:5: %?description 这是有问题的特殊行注释6:/过程{7:/var1 30 def %这只是创建一个变量8:/var2 10 def %?descriptio
..
给定以下词法分析器: 词法分析器语法 CodeTableLexer;@header {包 ch.bsource.ice.parsers;}CodeTabHeader : OBracket 代码''表''版本CBracket;代码表:代码''*表;EndCodeTable : 'end' ' '* Code ' '* Table;代码:'代码';表:'表';版本:'1.0';行:'行';Tabde
..
我有一个 ANTLR 4 语法: 语法测试;开始:非零数字'.'数字数字?EOF;点:'.';加号:'+';减 : '-' ;冒号 : ':' ;逗号 : ',' ;引用 : '\"' ;等于: '=' ;分号:';';下划线:'_';反斜杠 : '\\' ;单引号 : '\'' ;RESULT_TYPE_NONE :
..
如何使用具有相同开头的词法分析器规则? 我正在尝试使用两个相似的词法分析器规则(具有相同的开头): TIMECONSTANT: ('0'..'9')+ ':' ('0'..'9')+;整数 : ('0'..'9')+;冒号 : ':'; 这是我的示例语法: grammar TestTime;文本 : (timeexpr | caseblock)*;时间表达式:时间;ca
..
我正在使用 ANTLR4 来学习我现在正在上课的课程,我似乎理解其中的大部分内容,但我无法弄清楚“+"的作用.我只能说它通常在括号中的一组字符之后. 解决方案 plus 是 ANTLR 中的 BNF 运算符之一,可以确定表达式的基数.其中有 3 个:加号、星号(又名 kleene 运算符)和问号.意思很容易理解: 问号代表:零或一 Plus 代表:一个或多个 星号代表:零个或多个
..
输入内容: 语法: 语法测试;p:EOF;字符:[a-z];片段标签:'\t';片段空间:'';T1 : (Tab|Space)+ ->skip;T2 : '#' T1+ 字符+; 匹配结果是这样的: [@0,0:6='#abc',,1:0] 请忽略最后一行的错误.我
..
我正在尝试为一种相对简单但特殊的语言编写解析器. 简单地说,其中一条规则是注释行用星号表示仅,如果该星号是行的第一个字符.我该如何在 ANTLR4 中正式化这样的规则?我想过使用: START_LINE_COMMENT: '\n*' .*?'\n' ->跳过; 但我确信这不会连续处理多于一行的注释,因为末尾的换行符将作为 START_LINE_COMMENT 标记的一部分使用,这意味着任
..
我正在尝试实现一个工具来合并某些源代码的不同版本.给定相同源代码的两个版本,想法是解析它们,生成各自的抽象源树 (AST),最后将它们合并成一个保持语法一致性的输出源——词法分析器和解析器是问题
..
我想在我的词法分析器中解析这样的东西: (开始表达式) where 表达式也用括号括起来.表达式中的内容并不重要,我只想将 (begin 和匹配的 ) 之间的所有内容作为标记.一个例子是: (开始(定义 x (+ 1 2))) 所以令牌的文本应该是 (define x (+ 1 2))) 类似的东西 程序:LPAREN BEGIN .* RPAREN; (显然)不起作用,因为一旦
..
我很惊讶 ANTLR 网站和任何文档中都没有对此进行解释,但是 ATN(不是 ANT)代表什么?知道首字母缩略词代表什么将有助于我理解 ATN, ATNSimulator 等组件库.谁能帮我解决这个问题? 解决方案 Augmented Transition Networks,可以找到 ANTLR 上下文中的描述,例如这里 http://www.antlr.org/papers/LL-
..
我正在为 CoffeeScript 编写一个 Eclipse/Xtext 插件,我意识到我可能需要手动为它编写一个词法分析器.CoffeeScript 解析器还使用 手写词法分析器处理语法中的缩进和其他技巧. Xtext 生成一个扩展 org.eclipse.xtext.parser.antlr.Lexer 的类,而后者又扩展了 org.antlr.runtime.Lexer.所以我想我会延
..
如果有人能让我从前瞻关系与涉及贪婪/非贪婪匹配的标记化背后的困惑中清醒过来,我会非常高兴.请注意,这是一篇略长的帖子,因为它遵循了我的思考过程. 我正在尝试编写允许我匹配输入的 antlr3 语法,例如: “标识符关键字" 我想出了一个类似 Antlr 3.4 的语法: KEYWORD: '关键字' ;标识符:(选项 {greedy=false;}: (LOWCHAR|HIGH
..
我想为简单的Java逻辑创建一个类似流程图的自动可视化,为此我需要解析Java源代码,我有2个候选,ANTLR 和 javax.lang.model 的 Java 6.两者都不容易. 我还没有找到一个可以与我想要实现的目标相去甚远的可行示例. 我想找到简单的变量声明、赋值和流程(if、for、switch、布尔条件等) 是否有针对其中任何一个的简单示例或教程?我发现很少的 ANT
..
问题:无法正确打印 Unicode 字符. 这是我的语法: options { k=1;过滤器=真;//允许任何字符但 \uFFFF(16 位 -1)charVocabulary='\u0000'..'\uFFFE';}任何字符:'$'|'_' { System.out.println("找到下划线:"+getText());}|'a'..'z' { System.out.println(
..
我一直在为一些嵌入在 HTML (FreeMarker) 中的模板语言开发解析器,这里有一个例子: ${abc}欢迎您!
欢迎 ${user},我们亲爱的领导!
我们的最新产品:${latestProduct}!
..
我有以下语法: 规则:'aaa' |'a' 'a'; 它可以成功解析字符串'aaa',但是解析'aa'失败,报错如下: line 1:2 不匹配的字符 ''期待 'a' 仅供参考,这是词法分析器的问题而不是解析器的问题,因为我什至不调用解析器.主要功能如下: @members {public static void main(String[] args) 抛出异常 {RecipeLexe
..
我一直在为我的程序编写一个扫描器,大多数在线教程都包含一个解析器和扫描器.似乎不可能在不同时编写解析器的情况下编写词法分析器.我只是想生成令牌,而不是解释它们.我想识别 INT 标记、浮动标记和一些标记,例如“开始"和“结束" 我对如何匹配关键字感到困惑.我尝试了以下失败: KEYWORD : KEY1 |KEY2;KEY1:{input.LT(1).getText().equals("B
..
我有一个 antlr4 词法分析器语法.它有很多单词规则,但我也希望它为其他规则无法匹配的任何单词创建一个未知标记.我有这样的事情: 空格:[ \t\n\r]+ ->跳过;标点符号:[.,:;?!];//其他规则在这里未知:.+?; 现在生成的匹配器将 '~' 捕获为未知,但为输入 '~~~' 创建了 3 个 '~' 未知标记,而不是单个 '~~~' 标记.我该怎么做才能告诉词法分析器为未知的
..
antlr3 中的“孤岛语法"是什么以及如何使用? 解决方案 孤岛语法是将大部分语言视为一团文本(“水")并挑选出感兴趣的语言部分进行解析的语法使用语法规则(“岛").例如,您可能会选择构建一个孤岛语法来挑选出在 C# 程序中找到的所有表达式,而忽略变量/方法/类声明和语句语法(if、while、...). 真正的问题是,“你应该使用孤岛语法吗?". 积极的好处: 您不必
..
.NET 有没有好的解析器生成器(想想 lex/yacc 或 antlr)?任何有执照不会吓到律师的人?很多 LGPL,但我正在研究嵌入式组件,有些组织对我依赖 LGPL 感到不舒服. 我听说 Oslo 可能会提供此功能,但我不确定它是构建时依赖项还是运行时依赖项.谁能澄清奥斯陆将提供什么? 更新 我真正想要的是一个解析器生成器,它只是构建时的依赖项.看起来 ANTLR 有一个运行时
..