完整实现的 A-level Computer Science(9618) 伪代码解释器,支持所有标准伪代码语法结构。
A fully implemented A-level Computer Science(9618) pseudocode interpreter that supports all standard pseudocode syntax structures.
🌐 现已支持Web版!
点击 ➡️这里⬅️ 直接访问 https://code.i-o.autos 开始使用
python3 main.py your_program.pseudo-
完整的数据类型系统
- 基本类型:INTEGER, REAL, STRING, CHAR, BOOLEAN, DATE
- 复合类型:ARRAY(一维/二维数组,支持自定义下界)
- 自定义类型:TYPE...ENDTYPE(记录类型)
-
变量和常量
- DECLARE 变量声明
- CONSTANT 常量定义
- 支持大小写不敏感的标识符
-
控制结构
- IF-THEN-ELSE-ENDIF(支持嵌套)
- CASE-OF-OTHERWISE-ENDCASE(支持值匹配和范围匹配)
- FOR...TO...STEP...NEXT(计数循环)
- WHILE...ENDWHILE(前测试循环)
- REPEAT...UNTIL(后测试循环)
-
函数和过程
- PROCEDURE 过程定义和调用
- FUNCTION 函数定义(支持返回值)
- 参数传递:传值和传引用(BYREF)
⚠️ 注意:递归函数当前存在问题,正在修复中
-
输入输出
- INPUT 输入语句
- OUTPUT/PRINT 输出语句
- 支持多项输出
-
文件操作
- OPEN...FOR READ/WRITE/APPEND
- READFILE, WRITEFILE
- CLOSEFILE
- EOF() 文件结束检测
-
内置函数
- 字符串函数:ASC, CHR, LENGTH, LEFT, RIGHT, MID, UCASE, LCASE
- 数学函数:INT, ABS, SQRT, POWER, ROUND, MOD, DIV
- 日期函数:TODAY, DAYOF, MONTHOF, YEAROF, DATEDIFF
- 随机数:RANDOM, RANDOMINT
-
表达式
- 算术运算:+, -, *, /, ^ (幂)
- 字符串连接:&
- 比较运算:=, <>, <, >, <=, >=
- 逻辑运算:AND, OR, NOT
- 完整的运算符优先级
无需额外依赖,仅需Python 3.7+
cd pseudocode_interpreter
chmod +x main.pypython3 main.py your_program.pseudopython3 main.pypython3 main.py --debug your_program.pseudo# 开启严格模式,要求所有变量必须先声明
python3 main.py --strict your_program.pseudo
python3 main.py -s your_program.pseudo
# 组合使用
python3 main.py --strict --debug your_program.pseudo严格模式说明:
- 非严格模式(默认):允许隐式声明变量,
x <- 10会自动创建变量 - 严格模式(--strict):强制要求使用
DECLARE声明变量,未声明会报错 - 严格模式有助于发现拼写错误和未初始化变量,符合A-level考试规范
DECLARE x : INTEGER
DECLARE y : REAL
DECLARE name : STRING
x <- 10
y <- 3.14
name <- "Alice"
OUTPUT "x =", x
OUTPUT "y =", y
OUTPUT "name =", name
DECLARE score : INTEGER
score <- 75
IF score >= 60
THEN
OUTPUT "Pass"
ELSE
OUTPUT "Fail"
ENDIF
FOR i <- 1 TO 5
OUTPUT i
NEXT i
DECLARE numbers : ARRAY[1:5] OF INTEGER
FOR i <- 1 TO 5
numbers[i] <- i * 10
NEXT i
FOR i <- 1 TO 5
OUTPUT "numbers[", i, "] =", numbers[i]
NEXT i
DECLARE matrix : ARRAY[1:2, 1:3] OF INTEGER
matrix[1,1] <- 1
matrix[1,2] <- 2
matrix[1,3] <- 3
FOR row <- 1 TO 2
FOR col <- 1 TO 3
OUTPUT matrix[row, col]
NEXT col
NEXT row
DECLARE text : STRING
text <- "Hello World"
OUTPUT "LENGTH:", LENGTH(text)
OUTPUT "LEFT 5:", LEFT(text, 5)
OUTPUT "RIGHT 5:", RIGHT(text, 5)
OUTPUT "MID:", MID(text, 7, 5)
重要:伪代码使用缩进来表示代码块。每个控制结构(IF, FOR, WHILE等)的代码块必须缩进。
正确示例:
IF x > 0
THEN
OUTPUT "Positive"
ENDIF
错误示例:
IF x > 0
THEN
OUTPUT "Positive" // ❌ 缺少缩进
ENDIF
所有关键字必须大写:IF, THEN, ELSE, FOR, WHILE, DECLARE 等。
使用 <- 而非 = 进行赋值:
x <- 10 // ✅ 正确
x = 10 // ❌ 错误
数组可以使用自定义下界:
DECLARE arr : ARRAY[5:10] OF INTEGER // 下界是5,上界是10
arr[5] <- 100
arr[10] <- 200
pseudocode_interpreter/
├── main.py # 主程序入口
├── lexer.py # 词法分析器(处理缩进)
├── parser.py # 语法分析器(递归下降)
├── ast_nodes.py # AST节点定义
├── interpreter.py # 解释器核心
├── pseudocode_types.py # 类型系统
├── environment.py # 作用域和环境管理
├── builtin_functions.py # 内置函数库
├── tests/ # 测试用例
└── README.md # 本文档
- 手写词法分析器
- 处理缩进敏感的语法(INDENT/DEDENT tokens)
- 识别所有关键字和操作符
- 递归下降解析器
- 生成抽象语法树(AST)
- 支持所有伪代码语法结构
- 强类型系统
- 支持所有标准类型
- 可扩展的类型框架(易于添加新类型如DATE)
- 基于AST的树遍历解释器
- 访问者模式执行节点
- 完整的作用域管理
- 支持函数调用栈
在 builtin_functions.py 中添加:
def builtin_your_function(arg1, arg2):
# 实现你的函数
return result
# 注册函数
BUILTIN_FUNCTIONS['YOURFUNCTION'] = builtin_your_function在 pseudocode_types.py 中定义新类型:
class YourType(PseudocodeType):
def __init__(self, value):
super().__init__(value)
# 实现必要的方法运行测试用例:
python3 main.py tests/test_basic.pseudo
python3 main.py tests/test_arithmetic.pseudo
python3 main.py tests/test_if_fixed.pseudo
python3 main.py tests/test_loops2.pseudo
python3 main.py tests/test_array.pseudo
python3 main.py tests/test_builtins.pseudo本项目为教育目的开发,用于A-level CS课程学习。