lexer相关内容
我想将PHP源文件解析为AST(最好是嵌套的指令数组). 我基本上想转换诸如此类的东西 f($a, $b + 1) 变成类似 array( 'function_call', array( array( 'var', '$a' ), array( 'expression', array(
..
您将如何定义解析器和词法分析器规则,以解析使用缩进定义范围的语言. 我已经在Google上进行了搜索,并找到了一种聪明的方法来解析它,方法是在词法分析器中生成INDENT和DEDENT令牌. 如果我遇到有趣的事情,我会更深入地解决这个问题并发布答案,但是我希望看到解决该问题的其他方法. 编辑: 正如查理(Charlie)指出的那样,已经有了另一个非常相似的线程,如果没有的话一样.
..
我的Antlr语法有问题.我正在尝试为'typedident'编写一个解析器规则,该规则可以接受以下输入: 'int a'或'char a' 变量名"a"来自我的词法分析器规则"IDENT",其定义如下: IDENT : (('a'..'z'|'A'..'Z') | '_') (('a'..'z'|'A'..'Z')|('0'..'9')| '_')*; 我的"typedid
..
解析数字和字符串是否是词法研究人员的工作? 考虑到我要问 lexer 是否应该 parse 输入这一事实,这听起来可能有些愚蠢.但是,我不确定这实际上是词法分析器的工作还是解析器的工作,因为为了正确地进行词法分析,词法分析器首先需要解析字符串/数字,因此如果解析器执行此操作,似乎代码将被复制. 这确实是词法学家的工作吗?还是词法分析器应该简单地将像123.456这样的字符串分解为字符串
..
我正在寻找"tokenizer","parser"和"lexer"分别是什么以及它们之间如何关联的明确定义(例如,解析器是否使用标记器,反之亦然)?我需要创建一个程序,该程序将通过c/h源文件提取数据声明和定义. 我一直在寻找示例并可以找到一些信息,但是我真的很难掌握语法规则,语法分析树和抽象语法树等基本概念以及它们之间的相互关系.最终,这些概念需要存储在实际的程序中,但是1)它们的外观如何
..
注意:这是 当我测试这个非常简单的语法时: grammar KeyValues; keyValueList: keyValue*; keyValue: key=IDENTIFIER '=' value=INTEGER ';'; IDENTIFIER: [A-Za-z0-9]+; INTEGER: [0-9]+; WS: [ \t\r\n]+ -> skip; 使用以下输入:
..
词法分析器和解析器在理论上真的有很大不同吗? 讨厌正则表达式似乎很流行:编码恐怖,另一篇博客文章. 但是,流行的基于词法的工具:色素,什么时候足够词汇,何时需要EBNF? 有没有人将这些词法分析器产生的令牌与bison或antlr解析器生成器一起使用? 解决方案 解析器和词法分析器的共同点是 他们从输入中读取某些字母的符号. 提示:字母不一定必须是字母.但它
..
我正在搜索技术字"AN-XYZ99".所以我用 SELECT * FROM foo WHERE CONTAINS(bar, 'AN{-}XYZ99') > 0 但是我也得到了类似"FO-XYZ99"或"BAR-XYZ99"的结果.我该怎么做才能确保预期结果? 我用过 BEGIN CTX_DDL.CREATE_PREFERENCE('FOO','BASIC_LEXER'
..
我有以下SQL语句. select emp_no,dob,dept_no from v_depts where catsearch (emp_no,'abc',NULL) > 0 or catsearch (dept_no,'abc',NULL) > 0 其中v_depts是视图. 现在,我想添加一个或多个表作为联接,以便可以对列进行文本搜索 例如employee_details包
..
我想知道,如果这是错误或行为,那是发明人想要的. 在这里,我有一个最基本的dypgen语法示例: { open Parse_tree let dyp_merge = Dyp.keep_all } %start main %layout [' ' '\t'] %% main: | a "\n"
..
我需要解析部分SQL查询(用于SQL注入审核工具).例如 '1' AND 1=1-- 应分解为类似令牌 [0] => [SQL_STRING, '1'] [1] => [SQL_AND] [2] => [SQL_INT, 1] [3] => [SQL_AND] [4] => [SQL_INT, 1] [5] => [SQL_COMMENT] [6] => [SQL_QUERY_EN
..
我想编写一个词法生成器,将MATLAB语言的基本子集转换为C#,C ++等.为了帮助我做到这一点,我想找到一个包含MATLAB形式语法的文档.花了一些时间对此进行了调查,看来Mathworks没有提供它. 有人知道我在哪里可以找到这样的文件吗? 解决方案 编写自己的形式语法的绝佳机会:) 如果您应该选择自己写语法,我可以推荐如果没有其他要求,则指向BNFC的链接包含一些帮助和有
..
我想在我的词法分析器中解析这样的内容: ( begin expression ) 其中表达式也用方括号括起来.表达式中的内容并不重要,我只想将(begin和匹配的)之间的所有内容作为标记.一个例子是: (begin (define x (+ 1 2))) 因此令牌的文本应为 (define x (+ 1 2))) 类似 PROGRAM : LPAREN BEG
..
我正在为Lua编写jFlex lexer,但在设计正则表达式以匹配语言规范的特定部分时遇到了问题: 也可以使用长括号括起来的长格式来定义文字字符串.我们将级别n的开头长括号定义为开头方括号,后跟n个等号,再后面是另一个开头方括号.因此,级别0的左括号被写成[[,级别1的左括号被写成[= [,依此类推.相似地定义了一个长括号.例如,级别4的右方括号写为] ====].长字符串以任何级别的开头长
..
我正在尝试为Lua创建ANTLR解析器.因此,我学习了Nicolai Mainero制作的语法(可在ANTLR的站点上下载,Lua 5.1语法)并开始工作. 语法很好.一件事不起作用:长字符串. Lua规范规则:文字 字符串也可以使用 用长括号括起来的长格式. 我们定义了一个 级别n作为开方括号 紧接着是n个等号,然后是 另一个开口方括号.所以, 级别0的长括号是 写为[[,长括
..
我正在编写玩具终端,在其中我使用Flex来解析从tty获得的常规文本和控制序列. Cocoa机制的一个细节是,它从tty中读取1024个字节的块,以便随时在我的.lex文件中描述的任何令牌都可以分为两部分:令牌的某些字节是前1024个块的最后一个字节,其余字节是下一个1024字节块的头几个字节. 所以我需要某种方式: 首先检测到这种情况:将令牌拆分为两个1024字节的块时. 记住令牌
..
这里程序不计算注释行,单行注释和多行注释的数目,并给出以file.txt作为输入的总注释输出 file.txt //hellow world /*hello world1*/ /*hello world2 */ /*hello world3 hello world3.1*/ #include count.l %{ #include
..
我有以下语法: rule: 'aaa' | 'a' 'a'; 它可以成功解析字符串'aaa',但无法解析'aa'并显示以下错误: line 1:2 mismatched character '' expecting 'a' 仅供参考,这是词法分析器的问题,而不是解析器的问题,因为我什至不调用解析器.主要功能如下: @members { public stat
..
我想用ANTLR4解析PostScript代码.我完成了语法的学习,但是一种特殊的语言扩展(由其他人引入)使重新协调变得很麻烦. 一个简短的例子: 1: % This is a line comment 2: % The next line just pushes the value 10 onto the stack 3: 10 4: 5: %?description This i
..
我想学习如何编写词法分析器.我的大学课程分配了一个任务,我们必须编写一个解析器(和一个词法分析器一起使用),但这是在没有指示或反馈的情况下(超出标准)提供给我们的,所以我并没有从中学到太多. 在搜索了该主题之后,我只能找到相当高级的文章,这些文章着重于我认为比我所处的位置要走几步的领域.我想讨论一种为非常简单的语言编写词法分析器的基础知识,我可以以此为基础来研究对更复杂的语言进行标记化.
..