实现pascal解释器(4)

1.介绍

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

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

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

2. 文法

2.1 上下文相关和上下文无关

在本节中作者提了文法相关的内容。这里的文法均指的是上下文无关文法。上下文相关可以用两个句子对比来理解:

本来我是来得及看电影的,被你浪费了这么多时间去不了啦

2.我有一本来自国外的书

以上两个句子都有 本来这个词,但是显然这个是上下文有关的,在不同的上下文中有不同的含义

2.1 文法的用处

......

实现pascal解释器(3)

1.介绍

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

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

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

2.概念补充巩固

2.1 语法图

语法图:语法图是指表示一种程序设计语言语法规则的示意图。本质上,一个语法图直观地显示了在你的程序设计语言中,允许使用哪些语句和不允许使用哪些语句。

语法图的两个主要目的:

它们以图表的形式表示一种程序设计语言的规范(语法)。

它们可以帮助你编写解析器,你可以通过遵循简单的规则将一个图表映射成代码。

实现pascal解释器(2)

1.介绍

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

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

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

2.改善加法解释器

在第一章中我们实现了一个简单的解释器,本节将增添减法、多位数和跳过空格的支持。在前面的作业中,我们已经做过了一部分内容,接下来就看看作者给出的代码和我们有什么区别吧。

calc3.py代码如下

import pdb

INTEGER, PLUS, MINUS, EOF = 'INTEGER', 'PLUS&......