lexer相关内容

为什么有些语言要求在调用之前在代码中声明函数?

假设您有这个伪代码 do_something(); function do_something(){ print "I am saying hello."; } 为什么某些编程语言要求对do_omething()的调用出现在函数声明的下方才能运行代码? 推荐答案 编程语言使用符号表保存源代码中使用的各种类、函数等。一些语言在一次循环中编译,因此一旦符号被使用,就会从符 ..

作为运算符的邻接--任何lexer都可以处理它吗?

假设一种语言将两个数学Unicode字母数字符号的邻接定义为一个运算符。比方说,𝑥𝑦+1表示𝑥%adj𝑦+1,其中%adj表示运算符邻接定义的任何内容,在本例中为乘法。我在想,现有的任何词汇分析工具都能处理这个问题吗? 推荐答案 不可见运算符无法通过词法分析识别,原因应该或多或少是显而易见的。您只能通过分析语法上下文来推断是否存在不可见运算符,这是解析器的角色。 当然,大多数 ..
发布时间:2022-04-10 18:00:20 其他开发

如何运行Wave快速入门示例?

(源自this问题。) 我尝试使用this示例失败。 我的尝试是复制并稍微编辑链接处的代码。结果是这样(我留下Boost网站的评论,以便更容易将我的编辑与原始版本进行比较): #include #include int main() { // The ..
发布时间:2022-03-07 16:18:07 C/C++开发

C# Lua 解析器/分析器

第一件事; 我正在用 C# 编写一个小 LUA-Ide.代码执行由名为 LuaInterface 的程序集完成.代码编辑由 Scintilla-Port & 完成.RAD/UI 界面是通过可扩展的 IDesignSurfaceExt Visual Studio(一种方式代码生成).文件处理由用作项目包文件的小 sql-lite-db 提供. 总而言之,我已经拥有了我需要的一切..... ..
发布时间:2021-12-30 20:30:34 C#/.NET

用 Javascript 编写的词法分析器?

我有一个项目,其中用户需要为完全用 JavaScript 编写的 ui 定义一组指令.我需要能够解析一串指令,然后将它们翻译成指令.是否有任何用于解析 100% javascript 的库?或将在 javascript 中生成的生成器?谢谢! 解决方案 Something like http://jscc.phorward-software.com/,也许? JS/CC 是第一个适用 ..
发布时间:2021-12-12 23:59:40 前端开发

寻找“标记器"、“解析器"的明确定义和“词法分析器"它们是以及如何相互关联和使用的?

我正在寻找关于“分词器"、“解析器"和“词法分析器"的明确定义以及它们之间的关系(例如,解析器是否使用分词器,反之亦然)?我需要创建一个程序,将通过 c/h 源文件来提取数据声明和定义. 我一直在寻找示例并且可以找到一些信息,但我真的很难掌握语法规则、解析树和抽象语法树等基本概念以及它们如何相互关联.最终这些概念需要存储在实际程序中,但 1) 它们是什么样子的,2) 是否有通用的实现. ..
发布时间:2021-12-12 23:52:09 其他开发

ANTLR4 访问者模式简单算术示例

我是一个完整的 ANTLR4 新手,所以请原谅我的无知.我遇到了这个演示文稿,其中定义了一个非常简单的算术表达式语法.看起来像: 语法表达;开始:expr;expr : left=expr op=('*'|'/') right=expr #opExpr|left=expr op=('+'|'-') right=expr #opExpr|原子=INT #atomExpr;INT : ('0'..' ..
发布时间:2021-11-28 18:05:42 Java开发

如何合并两个AST?

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

如何手动构建 AST?

我目前正在学习解析,但我对如何生成 AST 有点困惑.我编写了一个解析器,可以正确验证表达式是否符合语法(当表达式符合时它是静默的,如果不符合则引发异常).我从哪里开始构建 AST?我找到了大量有关构建 LL(1) 解析器的信息,但关于构建 AST 的信息却很少. 我当前的代码(用非常简单的 Ruby 编写,包括词法分析器和解析器)可在 github 上找到:https://gist.git ..
发布时间:2021-11-26 17:59:19 其他开发

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

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

我们如何获得 TypeScript 的语法树?

是否有获取编译器语法树的过程.我们被分配到一个需要访问 typescript 语法树的项目(它是开源的,所以我们可以看到整个编译器的代码).但我们不知道如何获得它.我一直在互联网上阅读一些文章,但我真的找不到一篇用户友好的文章,或者用雷曼的术语写的.相信有人提到我们需要做的第一步是找到解析步骤.但在那之后,我们不知道接下来要做什么. 对不起,菜鸟问题.:) 解决方案 TypeScri ..

使用 ANTLR4 在语法中对词法分析器规则进行排序

我正在使用 ANTLR4 来生成解析器.我是解析器语法的新手.我已经阅读了非常有帮助的 ANTLR Mega 教程,但我仍然坚持如何正确订购(和/或编写)我的词法分析器和解析器规则. 我希望解析器能够处理这样的事情: 你好>,你好吗? 在运行时,我会用用户名替换“>". 所以我主要是在解析文本单词(以及标点符号、符号等),除了偶尔的“ ..
发布时间:2021-11-11 04:11:57 其他开发

ANTLR4 - 需要对此字符串文字的解释

在我的作业中,我有关于字符串词法分析器的描述: "字符串字面量包含零个或多个由 double 括起来的字符引号 (").使用转义序列(如下所列)表示特殊字符串中的字符.这是一个新行的编译时错误或出现在字符串文字中的 EOF 字符. 所有支持的转义序列如下: \b 退格 \f 换页 \r 回车 \n 换行 \t 水平制表符 \" 双引号 \反斜杠 ..
发布时间:2021-11-11 04:11:54 其他开发

重叠规则 - 不匹配的输入

我的语法(如下(从原文删减))需要一些重叠的规则 语法 NOVIANum;语句 : (priorityStatement | integerStatement)* ;priorityStatement : T_PRIO TwoDigits ;integerStatement : T_INTEGER 整数;WS : [ \t\r\n]+ ->跳过 ;T_PRIO : 'PRIO' ;T_INTEG ..
发布时间:2021-11-11 04:11:31 其他开发

是否可以让 Antlr4 从基本语法词法分析器而不是一般词法分析器生成词法分析器?

我有名为 BasicTokens 的 lexer 语法,它是我的语言的一组基本标记,具有像 null、true、false 等 现在,当我创建解析器语法时说 BasicGrammar 导入引用 BasicTokens 和另一个名为 InheritedGrammar 的语法导入 BasicGrammar. 当 Antlr4 为 InheritedGrammar 生成解析器时,它包含了 B ..
发布时间:2021-11-11 04:11:19 Java开发

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

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 其他开发

如何修复“不允许使用多字符文字"antlr4 词法分析器规则中的错误?

我想写的规则是: 字符:'\u0000'..'\u10FFF'; 但是当尝试针对定义它的词法分析器文件运行 antlr 工具时,我收到以下错误: 词法分析器集中不允许使用多字符文字:'\u10FFF' 如何解决这个问题? 解决方案 尝试用 { 和 } 包装多字符文字,并使用 v4 样式字符集[...]: 字符:[\u0000-\u{10FFF}]; 来自 https://git ..
发布时间:2021-11-11 04:06:46 其他开发