3年不上易吧,发现最近流行起了解释器,编译器,不过发现,吧里很多大多数都没质量,之前我和一个公司合作做系统内核,就是打算加入解释器,先给大家一个基本思路,其实一个简单的解释器并不难,后面在慢慢加功能就行
一,规定语法
语法是一个语言的核心部分,语法什么样就决定你的语言能干什么,比如c时候底层开发,主要因为语法简洁,底层不需要类,对象什么的,而且指针也是一大特点,c#和JAVA都适合APP开发,主要API多,开发方便快捷,而且面相对象更适合APP,PHP,js适合做网站不用解释器了,简单,开发快速,而且对json,xml格式还有强大支持,很多网页开发需要的API
二,设计部分
对语法每个部分有个分类,比如var aaa;aaa是标识符var是关键字,为词法分析做准备设计一个好格式,其实百度有现成的,直接用就行,不过估计吧里有自己设计语言的,这部分得自己做了
三,词法分析
这部分已经开始敲code了,词法分析,语法分析,语义分析都属于前端部分
词法分析是为语法分析做准备,把源代码生成一个比较容易被语法分析器解析的格式,比如var i = 1可以被词法分析器分析成
关键字|var 标识符|i 运算符|= 值|1;
上面只是打一个比方,真正做起来肯定比这个复杂,这部分也得好好设计才行,要不后面维护可成问题了,所以得看你们自己了
4,语法分析
语法分析器的主要作用是根据词法分析器生成的格式,解析查错,生成语法树,其实主要的还是生成语法树,比如i = i+1可以生成语法树
i
|
add
/ \
/ \
/ \
/ \
i 1
太大的语法树画出来太费劲了,简单弄一个,其实语法树就是代码执行顺序类似
到这里前端就可以完成了,后端因为咱是解释器,相对简单,跟着语法树跑一遍就行了
一,规定语法
语法是一个语言的核心部分,语法什么样就决定你的语言能干什么,比如c时候底层开发,主要因为语法简洁,底层不需要类,对象什么的,而且指针也是一大特点,c#和JAVA都适合APP开发,主要API多,开发方便快捷,而且面相对象更适合APP,PHP,js适合做网站不用解释器了,简单,开发快速,而且对json,xml格式还有强大支持,很多网页开发需要的API
二,设计部分
对语法每个部分有个分类,比如var aaa;aaa是标识符var是关键字,为词法分析做准备设计一个好格式,其实百度有现成的,直接用就行,不过估计吧里有自己设计语言的,这部分得自己做了
三,词法分析
这部分已经开始敲code了,词法分析,语法分析,语义分析都属于前端部分
词法分析是为语法分析做准备,把源代码生成一个比较容易被语法分析器解析的格式,比如var i = 1可以被词法分析器分析成
关键字|var 标识符|i 运算符|= 值|1;
上面只是打一个比方,真正做起来肯定比这个复杂,这部分也得好好设计才行,要不后面维护可成问题了,所以得看你们自己了
4,语法分析
语法分析器的主要作用是根据词法分析器生成的格式,解析查错,生成语法树,其实主要的还是生成语法树,比如i = i+1可以生成语法树
i
|
add
/ \
/ \
/ \
/ \
i 1
太大的语法树画出来太费劲了,简单弄一个,其实语法树就是代码执行顺序类似
到这里前端就可以完成了,后端因为咱是解释器,相对简单,跟着语法树跑一遍就行了
