我正在扩展我的C ++知识,并希望编写自己的脚本语言作为挑战自己的手段,也可以编写一个用于休闲脚本等的项目。我在stackoverflow上看到了一些旧帖子,但他们&#39 ;相当陈旧,想知道是否有人可以提供任何新的资料来源等......?
答案 0 :(得分:2)
简而言之:
定义您的语言
您需要定义所有命令及其语法
定义它们之后,您可以按语法模式对它们进行分组。
设计Lexer
Lexer是扫描输入语言元素并将其转换为标记的部分。然后将令牌馈送到解析器。
设计分析器
解析器是评估令牌的部分,例如它们的顺序和参数数量。
设计口译员
解释器是执行解析器输出的部分
您应该将其视为计算机的高级模型。例如,您是否需要变量,寄存器,输入,输出,数学指令等。
复杂的解释器是BASIC语言解释器(或Visual BASIC)。 Java有一个解释字节码的JVM。还有LISP口译员。
如果可以的话,您可能需要查看Python解释器源代码。
另外,请查看GNU和CLanguage编译器的源代码。
编译器和口译员通常由人员编写(以缩短开发时间)。准备好花很长时间来完成这个项目。