本编译原理实验报告详细记录了编译器设计与实现过程中的各项任务和挑战,包括词法分析、语法分析及代码生成等环节,并附有相关源代码。
对PL/0进行以下修改与扩充:
1. 增添保留字:ELSE、FOR、STEP、UNTIL、RETURN;
2. 引入运算符:+=, -=, ++, --, &&, ||, !;
3. 将不等号# 改为 <>;
4. 添加条件语句的 ELSE 子句。
相关文法:
- 条件语句扩展后包含如下形式:
IF condition THEN statement1 [ELSE statement2]
语法图示意(简化版):
```
IF -> if Condition then Statement [else Statement]
Condition -> Expression
Statement -> Assignment | Conditional | Loop | Return
Assignment -> Identifier = Expression
Conditional -> IfElseBlock
IfElseBlock -> IF Condition THEN Statement ELSE Statement
Loop -> ForLoop
ForLoop -> FOR Identifier = Expression TO Expression [STEP Expression] DO Statement
Return -> RETURN [( Expression )]
```
语义规则:
- 当条件为真时,执行THEN后的statement1;
- 若条件不成立,则执行ELSE子句中的statement2。
以上修改允许了程序更加灵活和简洁地处理流程控制与运算逻辑。