问题标签 [lexical-analysis]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
compiler-construction - 如何使用 ANTLR 修改 CommonTokenStream 中的令牌文本?
我正在尝试学习 ANTLR,同时将其用于当前项目。
我已经到了可以在一段代码上运行词法分析器并将其输出到 CommonTokenStream 的地步。这工作正常,我已经验证源文本被分解成适当的标记。
现在,我希望能够修改此流中某些标记的文本,并显示现在修改的源代码。
例如我试过:
我正在尝试将所有标识符标记的文本设置为字符串文字“V”。
为什么当我调用 tokens.toString() 时我对令牌文本的更改没有反映出来?
我怎么知道各种令牌类型 ID?我带着我的调试器走过去,发现 IDENTIFIER 令牌的 ID 是“4”(因此我的常量在顶部)。但否则我怎么会知道呢?是否有其他方法可以将令牌类型 ID 映射到令牌名称?
编辑:
对我来说很重要的一件事是我希望标记具有其原始的开始和结束字符位置。也就是说,我不希望他们通过将变量名称更改为“V”来反映他们的新位置。这样我就知道标记在原始源文本中的位置。
c - 词法分析器/标记器和字符集
在构建词法分析器/标记器时,依赖诸如 isdigit/isalpha/... 之类的函数(在C中)是错误的吗?据我所知,它们依赖于语言环境。我是否应该选择一个字符集并专注于它并自己制作一个字符映射,从中查找分类?然后问题就变成了能够使用多个字符集。我是为每个字符集生成一个词法分析器/标记器,还是尝试对我编写的那个进行编码,这样我唯一要做的就是更改字符映射。什么是常见的做法?
parsing - 使用 Lex/Flex 的扫描仪中的字符位置
在 Lex/Flex 中,有没有办法获取令牌出现在字符流中的位置(从文件的开头)?有点像 yylineno ,只是它将字符位置作为整数返回?
如果没有,最好的方法是什么?我需要保留自己的柜台吗?
谢谢!
parsing - 在编程语言规范中,为什么词法分析不可翻译?
在所有编程语言的标准规范中,为什么不能直接将词法分析/布局翻译成可以插入并工作的语法?
我可以理解,它不可能适用于 Flex/Bison、Lex/Yacc、Antlr 等,而且无法使其易于阅读以供人类理解。
但可以肯定的是,如果它是一个标准规范,它应该是一个简单的复制/粘贴语法布局,而最终会导致大量的移位/减少错误,结果可能会适得其反,从而产生不准确的语法。
换句话说,为什么他们不让它可读以供语法/解析器工具直接使用?
也许这是一个值得商榷的事情,我不知道......
谢谢,最好的问候,汤姆。
nlp - 程序化解析和语言理解(英语)
我正在寻找一些与英语(或一般人类语言)的解析和理解有关的资源。虽然这显然是一个相当复杂和广泛的研究领域,但我想知道是否有人有任何书籍或互联网推荐来研究这个主题。我知道一些基础知识,例如搜索copulas来绘制单词关系,但是你们推荐的任何东西我一定会彻底阅读。
谢谢。
python - Python - 词法分析和标记化
我希望在这里加快我的发现过程,因为这是我第一次进入词法分析领域。也许这甚至是错误的道路。首先,我将描述我的问题:
我有非常大的属性文件(大约 1,000 个属性),经过提炼后,实际上只有大约 15 个重要属性,其余的可以生成或很少更改。
因此,例如:
这是我要创建的格式类型,用于标记以下内容:
进入
词法分析和标记化听起来是我最好的方法,但这是一种非常简单的形式。这是一个简单的语法,一个简单的替换,我想确保我不会带着大锤敲钉子。
我可以创建自己的词法分析器和分词器,或者可以使用 ANTlr,但我不喜欢重新发明轮子,而且 ANTlr 听起来有点矫枉过正。
我不熟悉编译器技术,因此非常感谢您提供正确方向和代码的指针。
注意:我可以更改输入格式。
parsing - 如何编写文本转换器?
假设我有一个可以轻松解析的文本。它由文本和特殊标识符组成。解析后,我得到一个与文本和文本中的特殊标识符相对应的标记列表。
我遇到的问题是如何将它从这个令牌列表转换为其他形式?
我不明白如何解决这个问题。
我试图构建一个解析树,但我不明白下一步该做什么。
请就这个解析的一般问题提出建议。
php - 实现编译为 PHP 的元语言的最佳方法
一段时间以来,我一直在研究一种可以编译为 PHP 的元语言的规范 / kitchensink。现在我想开始构建这个东西。在我使用 PHP_Lexergenerator 和 PHP_Parsergenerator 实现微型 DSL 之前,它们运行良好,但我以前从未构建过这种规模的任何东西。如果您有任何反馈/建议/经验,我将不胜感激!
我将规范粘贴在http://pastebin.com/613mFGsB上。
regex - flex(词法分析器)中是否可以反向引用?
我习惯于在语言中使用正则表达式,我可以使用括号来捕获引用。我看到的唯一接近 flex 的东西是 yytext 变量。但它的内容是完全匹配的正则表达式,而不仅仅是它的一部分。
在 flex 中不能使用反向引用吗?如果是这样,我该怎么做?我找不到关于这个主题的任何东西......
我说的是这个: http ://en.wikipedia.org/wiki/Flex_lexical_analysisr
web - 对网站进行分类 - 开源 LSI?
我希望对许多网站(数百万)进行分类。我可以使用 Nutch 抓取它们并获取网站的内容,但我正在寻找最好的(也是最便宜或免费的)工具来对它们进行分类。
一种选择是创建正则表达式来查找某些关键字并对站点进行分类,但也有像 Autonomy 这样的高端 LSI 类型工具。是否有任何开源或更便宜的工具可以从网页/站点获取文本并为我分类?我需要对使用的类别类型进行一些自定义。作为分类的一部分,我希望能够识别“假”网站,这些网站实际上只是停放的页面,或者在页面上放置广告的域名所有者以及普通的旧类别,比如新闻、体育、科学、健康、美食、娱乐等……