lexical-analysis

    2热度

    3回答

    我在写一个词法分析器,我使用Flex根据自定义规则生成它。 我想匹配以字母开头的各种标识符,然后可以有字母或数字。所以我写了下面的模式对他们来说: [[:alpha:]][[:alnum:]]* 它工作正常,获取生成词法分析器完美识别模式,虽然它不仅全字匹配,但该模式的悉数亮相。 因此,例如它会匹配输入“文本”和“9Text”(丢弃最初的9)。 考虑以下简单词法如上所述接受的ID: %{ #

    1热度

    2回答

    我想创建一个词法分析器的compiler.But我用正则表达式找东西如关键字和实数的问题。例如一些定义: id [aA-zZ][aA-zZ-0-9_]* keyword if|else|when|while integer [0-9]+ real integer\.integer ..有一些问题,但分析器不能得到一个关键字,例如,如果我给单词“其他”,它将它看作一个id(我得

    1热度

    1回答

    下面的词法分析器语法包含两组规则:(1)用于标记CSV格式化输入的规则,以及(2)标记键/值格式输入的规则。对于(1)我将令牌放在通道(0)上。对于(2)我把令牌放在通道(1)上。你看到我的词法分析器语法有问题吗? 下面是解析器语法,它还包含两套规则:(1)将CSV令牌构造成分析树的规则;(2)将键/值标记构造成分析树的规则。你认为我的解析器语法有什么问题吗? 当我申请ANTLR的语法文件,编译,

    -1热度

    1回答

    为什么在词法分析中使用缓冲?什么是EOF的最佳值?

    -1热度

    2回答

    我在java中编写词法分析器,需要在自定义数据类型列表(我的标记)中轻松向后或向前看。我已经尝试将下一个和上一个项目保存为副本,但后来我发现我需要远远地前进或后退。然后我尝试使用一个索引,但是调试起来并不令人不快,因为我不得不考虑减少,增加和获取当前位置(我甚至让对象存储了它们所在的位置),所有的同时保持在列表的范围内,所以这是一个丑陋的,很难阅读意大利面代码的混乱。 然后我看着linked li

    0热度

    1回答

    我需要实现一个词法分析器,我需要一个数据结构来保存关键字。 我被建议使用散列表来保持关键字,一个建议是使用C#哈希表格形式System.Collections。但我有一个问题:使用这个散列表我需要一个键和一个项目。我只有关键字。我应该使用关键字作为关键字还是作为项目,还是作为两者? 由于关键字不同,我可以使用其他数据结构,例如二叉树? 我的真正兴趣是:编译器如何实现这个问题?

    0热度

    1回答

    我使用ANTLR 4来创建词法分析器,但是我不知道如何创建一个捕捉不同类型的词法错误的词法分析器。 例如: 如果我有一个无法识别的符号等^词法分析器应的报告这样“无法识别的符号‘^’,” 错误如果我有一个无效的标识符像2n词法分析器应该报告这样的错误“标识符”2n“必须以字母开头” 请你帮我。

    3热度

    1回答

    import语句或tokenVocab选项可以放在解析器语法中以重用词法分析器语法。 Sam Harwell建议始终使用tokenVocab而不是import [1]。 import和tokenVocab之间有什么区别吗?如果没有区别(Sam说使用tokenVocab),那么为什么要有import声明? [1] I actually recommend avoiding the import st

    0热度

    1回答

    我在编译器设计过程中读到扫描的输出是一对序列(符号表中的符号代码,符号位置)。我对“职位”部分的含义有点困惑。 当符号表被表示为可以使用索引(例如数组)来访问元素的结构时,“位置”是清楚的,这意味着数组中的第1个,第2个,第99个元素。 例如,对于源代码: if (a == b) a = a + c; 的扫描的输出将是流:(...,(ID,1),...,(ID,2),... ,(id,3))

    1热度

    3回答

    >>> 1 .__hash__() 1 >>> 1.__hash__() File "<stdin>", line 1 1.__hash__() ^ SyntaxError: invalid syntax 在此之前已经介绍过,第二个示例不起作用,因为int文本实际上被解析为float。 我的问题是,为什么不是 python解析为一个int的属性访问,当解释