郑启龙老师编译原理与技术课程的实验,使用yacc与lex开发了一个交互式的迷你Python解释器。
- 包含:
- 数值(
INT和REAL) - 串(
STRING_LITERAL) - 列表(
List) - 无类型(
NoneType) 等数据类型及变量定义
- 数值(
- 包含以上类型间加
+减-乘*除///幂乘**等基本运算 - 支持取列表元素、取列表切片以及相关赋值等操作
- 支持列表的方法
append()count()extend()index()insert()pop()remove()reverse()
- 支持内置函数调用
len()list()print()range()type()quit()
- 终端设计
- 左右方向键移动光标
- 上下方向键调出输入历史
Ctrl+C实现键盘中断Tab实现自动补全
- Windows Subsystem for Linux: Ubuntu 18.04 LTS
$ uname -r
4.4.0-18362-Microsoft- bison 3.0.4
$ bison --version
bison (GNU Bison) 3.0.4
Written by Robert Corbett and Richard Stallman.
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.- flex 2.6.4
$ flex --version
flex 2.6.4yacc -d minipy-lab.y
lex minipy-lab.l
g++ y.tab.c
./a.outor use Make:
make allTo make clean:
make clean- 10月底:完成相关数据结构(属性)的设计并提交备查
- 11月底:检查实验
- 12.11:在教室完成了实验汇报