实现pascal解释器(8)

1.介绍

本系列文章参照该教程学习总结,欢迎查看原文。我个人的学习代码已经放到我的github

词法分析、语法分析、语义分析等定义请参考编译器解释器中的词法分析、语法分析、语义分析

英文原作者所有源代码查看

2. 更多的AST

本节作者继续深化前一章的内容,增加一些一元操作。

这里再来复习下一元操作符和二元操作符的概念:

一元运算符:一元运算符只对一个表达式执行操作,该表达式可以是数值数据类型类别中的任何一种数据类型。例如一元的 '-'表示对表达式取反

二元运算符:二元运算是由两个元素形成第三个元素的一种规则。例如数的加法及乘法;更一般地,由......

实现pascal解释器(7)

1.介绍

本系列文章参照该教程学习总结,欢迎查看原文。我个人的学习代码已经放到我的github

词法分析、语法分析、语义分析等定义请参考编译器解释器中的词法分析、语法分析、语义分析

英文原作者所有源代码查看

2. 抽象语法树(abstract syntax tree)和分析树(parser tree or concrete syntax tree)

使用树这样的数据结构来表达中间表达式

下图用一个树结构来表达2*7+3

实现pascal解释器(5)

1.介绍

本系列文章参照该教程学习总结,欢迎查看原文。我个人的学习代码已经放到我的github

词法分析、语法分析、语义分析等定义请参考编译器解释器中的词法分析、语法分析、语义分析

英文原作者所有源代码查看

2. 优先级和语法图

2.1 优先级

associativiy表示左结合

优先级表格构建文法规则:

为每个优先级定义一个非终结符。非终结符所在产生式的主体应......