编译原理词法分析python_<编译原理 - 函数绘图语言解释器(1)词法分析器 - python>...

这篇博客介绍了如何利用Python实现一个函数绘图语言的解释器,包括词法分析器、语法分析器和解释器的组成部分。词法分析器通过读取输入序列,识别保留字、常量、参数等,并将其转化为记号流。博客提供了具体的Python代码实现,包括`scannerclass.py`、`scannerfunc.py`和`scannermain.py`三个文件,用于处理输入流和输出流。并给出了两个测试文本的运行结果。
摘要由CSDN通过智能技术生成

背景

编译原理上机实现一个对函数绘图语言的解释器 - 用除C外的不一样种语言实现git

解释器分为三个实现块:数组

词法分析器:用于识别一条语句中的关键词是否符合预先定义的规则。缓存

语法分析器:用来肯定一条语句是否知足语法规则。函数

解释器:用来肯定知足语法规则的句子,在乎思上是否符合要求。测试

设计思路:优化

设计记号:词法分析器读取一个序列并根据构词规则把序列转化为记号流spa

定义一个字典:把全部符合一个模式的保留字、常量名、参数名、函数名等放进字典。字典是个数组,其元素的类型和记号的类型相同设计

设计程序的结构,具体见下面的代码

用Pycharm写了三个.py文件:

scannerclass.py

scannerfunc.py

scannermain.py

输入流是序列(存储在.txt文本),输出流是“字典”(一个个识别好的记号对象)

测试文本序列(1): FOR T FROM 0 TO 2*PI STEP PI/50 DRAW(COS(t),sin(t));

测试文本序列(2):

//------------------This is zhushi!!------------------------ ORIGIN IS (100,300); // Sets the offset of the origin ROT IS 0; // Set rotation Angle. SCALE IS (1,1); // Set the abscissa and ordinate scale. FOR T FROM 0 TO 200 STEP 1 DRAW (T,0); // The trajectory of the x-coordinate. FOR T FROM 0 TO 150 STEP 1 DRAW (0,-T); // The trajectory of the y-coordinate. FOR T FROM 0 TO 120 STEP 1 DRAW (T,-T); // The trajectory of the function f[t]=t. ```

函数绘图语言介绍

语句介绍

576b953dcebd6b28ad6e7dc7ce7795b7.png

函数绘图源程序举例介绍

d4a5cc538a61dc5c65dbf986ea604c45.png

画出的图形介绍

7a6b5b2d3445ece60f44ee17a23d1ba3.png

Step 1 :scannerclass.py - 构造枚举类 记号类 符号表

from enum import Enum

import math

Token_Type = Enum('Token_Type', ('ORIGIN', 'SCALE', 'ROT', 'IS', 'TO', 'STEP', 'DRAW', 'FOR', 'FROM', #保留字

'T', #参数

'SEMICO

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值