lexer相关内容
假设您有这个伪代码 do_something(); function do_something(){ print "I am saying hello."; } 为什么某些编程语言要求对do_omething()的调用出现在函数声明的下方才能运行代码? 推荐答案 编程语言使用符号表保存源代码中使用的各种类、函数等。一些语言在一次循环中编译,因此一旦符号被使用,就会从符
..
假设一种语言将两个数学Unicode字母数字符号的邻接定义为一个运算符。比方说,𝑥𝑦+1表示𝑥%adj𝑦+1,其中%adj表示运算符邻接定义的任何内容,在本例中为乘法。我在想,现有的任何词汇分析工具都能处理这个问题吗? 推荐答案 不可见运算符无法通过词法分析识别,原因应该或多或少是显而易见的。您只能通过分析语法上下文来推断是否存在不可见运算符,这是解析器的角色。 当然,大多数
..
(源自this问题。) 我尝试使用this示例失败。 我的尝试是复制并稍微编辑链接处的代码。结果是这样(我留下Boost网站的评论,以便更容易将我的编辑与原始版本进行比较): #include #include int main() { // The
..
第一件事; 我正在用 C# 编写一个小 LUA-Ide.代码执行由名为 LuaInterface 的程序集完成.代码编辑由 Scintilla-Port & 完成.RAD/UI 界面是通过可扩展的 IDesignSurfaceExt Visual Studio(一种方式代码生成).文件处理由用作项目包文件的小 sql-lite-db 提供. 总而言之,我已经拥有了我需要的一切.....
..
edit :我已经删除了词法分析器,因为它没有与 Qi 完全集成并且只是混淆了语法(请参阅下面的答案). 我的词法分析器如下所示: template 结构标记:lex::lexer{令牌(): left_curly("\"{\""),right_curly("\"}\""),left_paren("\"(\""),right_paren("\")\""),冒号(":"),冒号(";"),n
..
我有一个项目,其中用户需要为完全用 JavaScript 编写的 ui 定义一组指令.我需要能够解析一串指令,然后将它们翻译成指令.是否有任何用于解析 100% javascript 的库?或将在 javascript 中生成的生成器?谢谢! 解决方案 Something like http://jscc.phorward-software.com/,也许? JS/CC 是第一个适用
..
我正在寻找关于“分词器"、“解析器"和“词法分析器"的明确定义以及它们之间的关系(例如,解析器是否使用分词器,反之亦然)?我需要创建一个程序,将通过 c/h 源文件来提取数据声明和定义. 我一直在寻找示例并且可以找到一些信息,但我真的很难掌握语法规则、解析树和抽象语法树等基本概念以及它们如何相互关联.最终这些概念需要存储在实际程序中,但 1) 它们是什么样子的,2) 是否有通用的实现.
..
我是一个完整的 ANTLR4 新手,所以请原谅我的无知.我遇到了这个演示文稿,其中定义了一个非常简单的算术表达式语法.看起来像: 语法表达;开始:expr;expr : left=expr op=('*'|'/') right=expr #opExpr|left=expr op=('+'|'-') right=expr #opExpr|原子=INT #atomExpr;INT : ('0'..'
..
我正在尝试实现一个工具来合并某些源代码的不同版本.给定相同源代码的两个版本,想法是解析它们,生成各自的抽象源树 (AST),最后将它们合并为一个保持语法一致性的输出源——词法分析器和解析器是问题
..
我目前正在学习解析,但我对如何生成 AST 有点困惑.我编写了一个解析器,可以正确验证表达式是否符合语法(当表达式符合时它是静默的,如果不符合则引发异常).我从哪里开始构建 AST?我找到了大量有关构建 LL(1) 解析器的信息,但关于构建 AST 的信息却很少. 我当前的代码(用非常简单的 Ruby 编写,包括词法分析器和解析器)可在 github 上找到:https://gist.git
..
我想为简单的Java逻辑创建一个类似流程图的自动可视化,为此我需要解析Java源代码,我有2个候选,ANTLR 和 javax.lang.model 的 Java 6.两者都不容易. 我还没有找到一个可以与我想要实现的目标相去甚远的可行示例. 我想找到简单的变量声明、赋值和流程(if、for、switch、布尔条件等) 是否有针对其中任何一个的简单示例或教程?我发现很少有 ANT
..
是否有获取编译器语法树的过程.我们被分配到一个需要访问 typescript 语法树的项目(它是开源的,所以我们可以看到整个编译器的代码).但我们不知道如何获得它.我一直在互联网上阅读一些文章,但我真的找不到一篇用户友好的文章,或者用雷曼的术语写的.相信有人提到我们需要做的第一步是找到解析步骤.但在那之后,我们不知道接下来要做什么. 对不起,菜鸟问题.:) 解决方案 TypeScri
..
我正在使用 ANTLR4 来生成解析器.我是解析器语法的新手.我已经阅读了非常有帮助的 ANTLR Mega 教程,但我仍然坚持如何正确订购(和/或编写)我的词法分析器和解析器规则. 我希望解析器能够处理这样的事情: 你好>,你好吗? 在运行时,我会用用户名替换“>". 所以我主要是在解析文本单词(以及标点符号、符号等),除了偶尔的“
..
在我的作业中,我有关于字符串词法分析器的描述: "字符串字面量包含零个或多个由 double 括起来的字符引号 (").使用转义序列(如下所列)表示特殊字符串中的字符.这是一个新行的编译时错误或出现在字符串文字中的 EOF 字符. 所有支持的转义序列如下: \b 退格 \f 换页 \r 回车 \n 换行 \t 水平制表符 \" 双引号 \反斜杠
..
我的语法(如下(从原文删减))需要一些重叠的规则 语法 NOVIANum;语句 : (priorityStatement | integerStatement)* ;priorityStatement : T_PRIO TwoDigits ;integerStatement : T_INTEGER 整数;WS : [ \t\r\n]+ ->跳过 ;T_PRIO : 'PRIO' ;T_INTEG
..
我有名为 BasicTokens 的 lexer 语法,它是我的语言的一组基本标记,具有像 null、true、false 等 现在,当我创建解析器语法时说 BasicGrammar 导入引用 BasicTokens 和另一个名为 InheritedGrammar 的语法导入 BasicGrammar. 当 Antlr4 为 InheritedGrammar 生成解析器时,它包含了 B
..
我有以下语法,正在尝试慢慢开始,努力移动复杂的参数. 语法命令;命令:命令+ EOF;命令:NAME args NL;args : arg |;arg : 下划线 |降低;//arg : DASH 'a' |'X';名称:[_a-zA-Z0-9]+;NL : '\n';WS : [ \t\r]+ ->跳过 ;//空格、制表符、换行符破折号:'-';降低:[a-z];//'a' .. 'z';
..
在令牌冲突的情况下,ANTLR 词法分析器行为是如何定义的?让我解释一下我所说的“冲突"令牌是什么意思.例如,假设定义了以下内容: INT_STAGE : '1'..'6';INT:'0'..'9'+; 这里有一个冲突,因为在读取了一系列数字后,词法分析器不知道是一个 INT 还是多个 INT_STAGE 标记(或两者的不同组合).经过测试,看起来如果 INT 在 INT_STAGE 之后定义
..
我正在学习如何使用“更多"词法分析器命令.我输入了 ANTLR 书籍第 281 页中显示的词法分析器语法: 词法分析器语法 Lexer_To_Test_More_Command ;LQUOTE : '"' -> more, mode(STR) ;WS : [ \t\r\n]+ ->跳过 ;模式 STR ;字符串:'"' -> 模式(DEFAULT_MODE);文本 : .->更多的 ; 然后我
..
我想写的规则是: 字符:'\u0000'..'\u10FFF'; 但是当尝试针对定义它的词法分析器文件运行 antlr 工具时,我收到以下错误: 词法分析器集中不允许使用多字符文字:'\u10FFF' 如何解决这个问题? 解决方案 尝试用 { 和 } 包装多字符文字,并使用 v4 样式字符集[...]: 字符:[\u0000-\u{10FFF}]; 来自 https://git
..