Oberon-0实验三(Rose实验)是探究特定科学假设的一系列研究中的一个环节,通过精密设计的测试来验证理论模型的有效性。
编译原理实验三
一、讨论Oberon-0 语言的特点
1. 关于保留字与关键字的概念区分:
- 保留字是指在程序设计中的特定用途,例如IF, THEN, ELSIF等用于控制流程的语句,在循环、分支和判断条件中具有特殊意义。这些词不可被用户定义为变量或函数名。
- 关键字则主要用于类型定义和其他功能上,如Oberon 中integer 用来表示整数类型的声明;关键字还可以代表程序语言中的特定函数名称,比如write 和read等。
2. Oberon与C、Java的差别:
a) 主要过程procedure 的标志:在Oberon中使用begin和end来标识一个过程,在C或Java则采用花括号{}。
b) 变量定义方式:Oberon会在变量声明后加上类型,且需要先用var标记这是一个变量;而在C、Java中通常是在变量前直接指定其类型。
c) 数据结构支持:相较于其他语言,Oberon提供的数据结构选择较少,主要包含数组和类似C中的结构体。
二、文法的二义性讨论
该文法未出现二义性问题。在处理表达式解析树时(可能生成多个不同的解析树)以及if-else匹配导致的不确定性,在此EBNF定义中已解决。
1. 表达式的二义性:simple_expression = [+ | -] term {(+ | - | OR) term} ;term = factor {(* | DIV | MOD | &) factor} ;
从上述规则可以看出,乘法运算符*和除法、取余操作会在加减之前执行。通过将这些不同的算术运算分层次定义,消除了表达式的二义性。
2. if-else匹配的处理:在该文法中已明确if语句与相应的else部分如何正确配对的方式,避免了可能产生的歧义问题。