lexical-analysis

    1热度

    1回答

    Node.js的版本: [email protected]:~/test/antlr4-js$ node --version v5.10.1 Java版本: [email protected]:~/test/antlr4-js$ java -version java version "1.7.0_91" OpenJDK Runtime Environment (IcedTea 2.6.3

    0热度

    1回答

    所以我编写了一个词法分析器程序(在PHP)作为作业,并且我必须标记一个C程序。 我已经从C代码我来分析这个下面的代码段: +e25.f12.e--然后这将标记化到OPERATOR => +,VARIABLE => e25但跳过.f12.e--因为它标志着它为错误。现在我不确定这是否是正确的行为,算法是否正常工作,或者它也应该标记(如果应该的话,您能否展示.f12.e--的标记化?)。 例如,下面的

    1热度

    1回答

    在编译器的词法分析阶段,如果遇到错误的标记,词法分析器将进入错误恢复模式,假设它放弃标记,直到看到下一个分号并再次开始分析。那么生成的整个令牌传递给解析器? 我的意思是说,如果词法分析器遇到错误,那么编译停止在这一点,或者它继续并进入解析阶段?

    2热度

    2回答

    介绍 在文档来看,ANTLR 2配合使用,有一些所谓predicated lexing,结合实例像这样的(由帕斯卡启发): RANGE_OR_INT : (INT "..") => INT { $setType(INT); } | (INT '.') => REAL { $setType(REAL); } | INT { $setType(INT); }

    1热度

    1回答

    我在写一个小程序,它需要预处理一些输入到另一个程序的数据文件。正因为如此,我无法改变输入文件的格式,并且遇到了问题。 我正在使用一种没有图书馆的语言,我不介意这个练习,所以我打算用手工实现词法分析器和解析器。我想实现一个基于this的Lexer,这是一个相当简单的设计。 我需要解释的输入文件有一个包含化学反应的部分。反应各侧的不同化学物质以'+'符号分隔,但物种的名称也可以具有+字符(象征电荷)。

    2热度

    2回答

    我想为代码点之间的范围定义一个词法分析规则,这些代码点需要四个以上的十六进制数字来标识。具体而言,我想声明以下规则: ID_Continue : [\uE0100-\uE01EF] ; 不幸的是,它不起作用。此规则将匹配不在此范围内的字符。 (我不能确定什么确切的行为,这导致,但它不是我想要的。)我也试过(带前导零和使用8位填充)以下: ID_Continue : [\U000E0100-\U

    2热度

    1回答

    许多编程语言的语法要求它们根据"maximal munch"原则进行标记。也就是说,这些令牌是根据输入流中可能的最大字符数构建的。 PLY的词法分析器似乎不适用这个原理。例如: import ply.lex as lex tokens = ('ASSIGNMENT', 'EQUALITY') t_ASSIGNMENT = r'[+\-*/]?=' t_EQUALITY = r'=='

    0热度

    1回答

    我目前正在研究ocaml lexing和解析来创建一个微型编译器。我的微型编译器旨在接受流作为输入做功能并显示流作为输出。有没有我可以阅读的关于如何做到这一点的在线资料?

    2热度

    2回答

    问题是为语言开发一个上下文无关文法,该语言包含的所有字符串的数量都多于B。 我想不出合乎逻辑的解决方案。有没有办法解决这些问题,有什么可以帮助我更好地处理这些问题?有人可以提出一个合理的方法来分析这样的语法问题吗?

    2热度

    2回答

    我写法对其中操作在前缀符号进行了特定的语言: (+ a b) --> (a + b) 的整数定义如下:整数可以有一个负号( - ),但没有正面标志。它可以在符号和数字之间有或没有空格。如果该值为0,则只允许一个数字0。否则,它与常用整数定义相同(不包含前导0)。在lex表达 顺序如下(第一场比赛规则): 正则表达式的整数:[\-]?[ ]*((0)|([1-9][0-9]*)) 正则表达式减法运算