自定义编程语言实现分析
一、实现自定义编程语言需要做什么
-
程序是如何运行的
以Java语言为例,Java语言如果需要运行那么首先源代码需要进行编译,编译成字节码文件(.class)后由JVM执行; 也就是说我们直接写的代码JVM是不可以运行, 所以这里需要对源代码进行翻译
-
翻译的具体过程
-
翻译的过程实际上就是编译原理的内容, 编译原理中我们可以知道实现编译器需要几个大致步骤如下:
-
词法分析:如果将源代码理解为字符串,那么词法分析的作用就是将一串字符串分解为一些列的单词(Token)并标注上单词的类型, 如:
源代码: "int age = 10;" 词法分析后: int -> keyword age -> variable = -> operator 10 -> integer
-
语法分析:语法分析就是将词法分析得到的Token序列构建为一颗语法树, 就好像我们人看到一段文章时词法分析就类似断句,语法分析就是去组织这些Token确定是否能构成语法上正确的程序
-
语义分析:起作用就是检查当前程序是否存在语义错误
-
中间代码生成: 在有的编译程序中会将源代码变成一种内部表示形式,比如Java会将源代码生成字节码
-
目标代码生成:也就是把当前代码转为为一种能够在特定机器上执行的代码(如:汇编代码)
-
-
-
总结:
如果想实现一种自己的变成需要,那么需要自己实现一个编译器,编译器本质上也是一个程序只不过他的功能时将源代码转换为目标代码的程序
二、具体的实现步骤
1. 实现词法分析器
- 文章链接:词法分析器实现
- 代码仓库地址: 代码地址
- 目标:将源代码字符序列,转换为Token序列, Token序列也就是将代码中的各个符号/关键字/标识符分离按类别分离
- 具体实现步骤:
- 定义Token类型
- 定义关键字
- 利用有穷状态机分离出符号/关键字/标识符
2. 语法分析器实现
- 文章链接:语法分析–表达式解析