lexer相关内容

使用 ANTLR4 识别单行中的多行注释

我想用 ANTLR4 解析 PostScript 代码.我完成了语法,但是一个特定的语言扩展(由其他人引入)导致难以重新调整. 一个简短的例子: 1: % 这是一行注释2: % 下一行只是将值 10 压入堆栈3:104:5: %?description 这是有问题的特殊行注释6:/过程{7:/var1 30 def %这只是创建一个变量8:/var2 10 def %?descriptio ..
发布时间:2021-11-11 03:48:13 其他开发

ANTLR:如何跳过多行注释

给定以下词法分析器: 词法分析器语法 CodeTableLexer;@header {包 ch.bsource.ice.parsers;}CodeTabHeader : OBracket 代码''表''版本CBracket;代码表:代码''*表;EndCodeTable : 'end' ' '* Code ' '* Table;代码:'代码';表:'表';版本:'1.0';行:'行';Tabde ..
发布时间:2021-11-11 03:47:52 其他开发

令牌识别错误:antlr

我有一个 ANTLR 4 语法: 语法测试;开始:非零数字'.'数字数字?EOF;点:'.';加号:'+';减 : '-' ;冒号 : ':' ;逗号 : ',' ;引用 : '\"' ;等于: '=' ;分号:';';下划线:'_';反斜杠 : '\\' ;单引号 : '\'' ;RESULT_TYPE_NONE : ..
发布时间:2021-11-11 03:47:34 其他开发

ANTLR 如何使用具有相同开头的词法分析器规则?

如何使用具有相同开头的词法分析器规则? 我正在尝试使用两个相似的词法分析器规则(具有相同的开头): TIMECONSTANT: ('0'..'9')+ ':' ('0'..'9')+;整数 : ('0'..'9')+;冒号 : ':'; 这是我的示例语法: grammar TestTime;文本 : (timeexpr | cas​​eblock)*;时间表达式:时间;ca ..
发布时间:2021-11-11 03:47:16 其他开发

ANTLR4 '+' 操作

我正在使用 ANTLR4 来学习我现在正在上课的课程,我似乎理解其中的大部分内容,但我无法弄清楚“+"的作用.我只能说它通常在括号中的一组字符之后. 解决方案 plus 是 ANTLR 中的 BNF 运算符之一,可以确定表达式的基数.其中有 3 个:加号、星号(又名 kleene 运算符)和问号.意思很容易理解: 问号代表:零或一 Plus 代表:一个或多个 星号代表:零个或多个 ..
发布时间:2021-11-11 03:45:43 其他开发

如何检查一行的第一个字符是否为“*"?在 ANTLR4 中?

我正在尝试为一种相对简单但特殊的语言编写解析器. 简单地说,其中一条规则是注释行用星号表示仅,如果该星号是行的第一个字符.我该如何在 ANTLR4 中正式化这样的规则?我想过使用: START_LINE_COMMENT: '\n*' .*?'\n' ->跳过; 但我确信这不会连续处理多于一行的注释,因为末尾的换行符将作为 START_LINE_COMMENT 标记的一部分使用,这意味着任 ..
发布时间:2021-11-11 03:44:37 其他开发

如何合并两个AST?

我正在尝试实现一个工具来合并某些源代码的不同版本.给定相同源代码的两个版本,想法是解析它们,生成各自的抽象源树 (AST),最后将它们合并成一个保持语法一致性的输出源——词法分析器和解析器是问题 ..
发布时间:2021-11-11 03:43:34 Java开发

ANTLR:如何使用词法分析器解析匹配括号内的区域

我想在我的词法分析器中解析这样的东西: (开始表达式) where 表达式也用括号括起来.表达式中的内容并不重要,我只想将 (begin 和匹配的 ) 之间的所有内容作为标记.一个例子是: (开始(定义 x (+ 1 2))) 所以令牌的文本应该是 (define x (+ 1 2))) 类似的东西 程序:LPAREN BEGIN .* RPAREN; (显然)不起作用,因为一旦 ..
发布时间:2021-11-11 03:43:31 其他开发

ANTLR4 ATN 代表什么?

我很惊讶 ANTLR 网站和任何文档中都没有对此进行解释,但是 ATN(不是 ANT)代表什么?知道首字母缩略词代表什么将有助于我理解 ATN, ATNSimulator 等组件库.谁能帮我解决这个问题? 解决方案 Augmented Transition Networks,可以找到 ANTLR 上下文中的描述,例如这里 http://www.antlr.org/papers/LL- ..
发布时间:2021-11-11 03:42:50 其他开发

编写没有语法文件的自定义 Xtext/ANTLR 词法分析器

我正在为 CoffeeScript 编写一个 Eclipse/Xtext 插件,我意识到我可能需要手动为它编写一个词法分析器.CoffeeScript 解析器还使用 手写词法分析器处理语法中的缩进和其他技巧. Xtext 生成一个扩展 org.eclipse.xtext.parser.antlr.Lexer 的类,而后者又扩展了 org.antlr.runtime.Lexer.所以我想我会延 ..
发布时间:2021-11-11 03:41:44 其他开发

Lexer 前瞻如何与 ANTLR3 和 ANTLR4 中的贪婪和非贪婪匹配一起使用?

如果有人能让我从前瞻关系与涉及贪婪/非贪婪匹配的标记化背后的困惑中清醒过来,我会非常高兴.请注意,这是一篇略长的帖子,因为它遵循了我的思考过程. 我正在尝试编写允许我匹配输入的 antlr3 语法,例如: “标识符关键字" 我想出了一个类似 Antlr 3.4 的语法: KEYWORD: '关键字' ;标识符:(选项 {greedy=false;}: (LOWCHAR|HIGH ..
发布时间:2021-11-11 03:41:27 其他开发

使用 javax.lang.model 或 ANTLR JavaParser 获取 Java 源代码信息的示例/教程

我想为简单的Java逻辑创建一个类似流程图的自动可视化,为此我需要解析Java源代码,我有2个候选,ANTLR 和 javax.lang.model 的 Java 6.两者都不容易. 我还没有找到一个可以与我想要实现的目标相去甚远的可行示例. 我想找到简单的变量声明、赋值和流程(if、for、switch、布尔条件等) 是否有针对其中任何一个的简单示例或教程?我发现很少的 ANT ..
发布时间:2021-11-11 03:41:14 Java开发

ANTLR:Unicode 字符扫描

问题:无法正确打印 Unicode 字符. 这是我的语法: options { k=1;过滤器=真;//允许任何字符但 \uFFFF(16 位 -1)charVocabulary='\u0000'..'\uFFFE';}任何字符:'$'|'_' { System.out.println("找到下划线:"+getText());}|'a'..'z' { System.out.println( ..
发布时间:2021-11-11 03:40:51 Java开发

ANTLR 词法分析器根本无法向前看

我有以下语法: 规则:'aaa' |'a' 'a'; 它可以成功解析字符串'aaa',但是解析'aa'失败,报错如下: line 1:2 不匹配的字符 ''期待 'a' 仅供参考,这是词法分析器的问题而不是解析器的问题,因为我什至不调用解析器.主要功能如下: @members {public static void main(String[] args) 抛出异常 {RecipeLexe ..
发布时间:2021-11-11 03:38:44 其他开发

扫描仪(使用 ANTLR 对关键字进行词法分析)

我一直在为我的程序编写一个扫描器,大多数在线教程都包含一个解析器和扫描器.似乎不可能在不同时编写解析器的情况下编写词法分析器.我只是想生成令牌,而不是解释它们.我想识别 INT 标记、浮动标记和一些标记,例如“开始"和“结束" 我对如何匹配关键字感到困惑.我尝试了以下失败: KEYWORD : KEY1 |KEY2;KEY1:{input.LT(1).getText().equals("B ..
发布时间:2021-11-11 03:38:23 其他开发

在 antlr4 词法分析器中,如何有一个规则来捕获所有剩余的“单词"?作为未知令牌?

我有一个 antlr4 词法分析器语法.它有很多单词规则,但我也希望它为其他规则无法匹配的任何单词创建一个未知标记.我有这样的事情: 空格:[ \t\n\r]+ ->跳过;标点符号:[.,:;?!];//其他规则在这里未知:.+?; 现在生成的匹配器将 '~' 捕获为未知,但为输入 '~~~' 创建了 3 个 '~' 未知标记,而不是单个 '~~~' 标记.我该怎么做才能告诉词法分析器为未知的 ..
发布时间:2021-11-11 03:36:24 其他开发

岛文语法antlr3

antlr3 中的“孤岛语法"是什么以及如何使用? 解决方案 孤岛语法是将大部分语言视为一团文本(“水")并挑选出感兴趣的语言部分进行解析的语法使用语法规则(“岛").例如,您可能会选择构建一个孤岛语法来挑选出在 C# 程序中找到的所有表达式,而忽略变量/方法/类声明和语句语法(if、while、...). 真正的问题是,“你应该使用孤岛语法吗?". 积极的好处: 您不必 ..
发布时间:2021-11-11 03:35:43 Java开发

用于 .NET 的好的解析器生成器(想想 lex/yacc 或 antlr)?仅构建时间?

.NET 有没有好的解析器生成器(想想 lex/yacc 或 antlr)?任何有执照不会吓到律师的人?很多 LGPL,但我正在研究嵌入式组件,有些组织对我依赖 LGPL 感到不舒服. 我听说 Oslo 可能会提供此功能,但我不确定它是构建时依赖项还是运行时依赖项.谁能澄清奥斯陆将提供什么? 更新 我真正想要的是一个解析器生成器,它只是构建时的依赖项.看起来 ANTLR 有一个运行时 ..
发布时间:2021-11-11 03:34:35 C#/.NET