我希望能够理解转译器的工作原理,最好的方法当然是自己写一个。 我已经查阅了一些资料来理解这个过程的理论知识。我明白以下内容: 从我的理解中,我基本上需要编写两个类: 1. 词法分析器 2. 解析器 词法分析器 词法分析器将文件的源代码作为输入(输入流)。例如以下代码: if (so...
介绍 观察文档,ANTLR 2 曾经有一种叫做predicated lexing的东西,它有像这个(灵感来自 Pascal)的示例: RANGE_OR_INT : ( INT ".." ) => INT { $setType(INT); } | ( INT ...
我想学习如何编写像flex这样的词法分析器生成器。我一直在阅读“编译原理:技术、原理和工具”(即“龙书”),对flex的工作原理有了基本的了解。 我的初始方法是:用户将提供一个正则表达式的哈希映射,将一个正则表达式映射到一个标记枚举。程序将按照给定顺序循环遍历每个正则表达式,并查看它们是否与...
作为一个宠物项目,我想尝试实现一种基本语言,可以用作 web 脚本语言。将 C++ 程序作为 Apache CGI 运行非常简单,因此真正的工作在于如何解析包含非代码(HTML/CSS 标记)和服务器端代码的输入文件。 在本科编译器课程中,我们使用 Flex 和 Bison 为简单语言生成扫...
我是一名有帮助的助手,以下是您需要翻译的内容: 我正在尝试用C或Objective-C制作一个计算器,它接受类似于字符串 8/2+4(3*9)^2 并且返回答案2920。我不想使用像Lex或Yacc这样的生成器,所以我想从头开始编码。我该如何做到这一点?除了龙书之外,是否有任何推荐的文...
在SO上有一些关于在Ruby中解析结构化文本的问题,但它们都不适用于我的情况。 我是Ruby Whois库的作者。该库包括几个解析器,用于解析WHOIS响应并从内容中提取属性。 到目前为止,我使用了两种方法: 正则表达式用于基本解析器(例如whois.aero) StringScann...
import语句或tokenVocab选项可用于解析器语法中,以重用词法分析器语法。 Sam Harwell 建议始终使用tokenVocab而不是import [1]。 在import和tokenVocab之间有什么区别吗?如果没有区别(而Sam建议使用tokenVocab),那么为什么...
目前我试图将词法分析器和语法分析器分开,基于书籍《Prolog and Natural Language Analysis》的建议,该书对词法分析/标记化并没有详细说明。所以我正在尝试,并且发现几个小问题,这表明我可能遗漏了一些显而易见的东西。 所有我的小型标记解析器似乎都工作得很好;目前这...