C-Minus词法分析器是一款专为C-Minus编程语言设计的工具,负责将源代码转换成一系列 Tokens(标记),为后续语法解析提供基础。
C-Minus 的词法规则如下:
1. 关键字包括:if, else, int, return, void, while。
2. 专用符号有:+ - * / < <= > >= == ~= = ( ) { } , ;。
3. 标识符由字母、数字和下划线组成,以字母或下划线开头。整数常量是十进制的非负数值。
C-Minus 的语法结构如下:
1. 程序包含一系列声明和语句序列,并且必须有一个主函数main。
2. 声明可以定义变量或指定复合类型(如数组);每个声明以分号结束,或者在最后一个元素后直接接下一个声明或语句。
3. 一个程序块由大括号包围的多个声明、表达式和控制流结构组成。它可以在函数内创建新的作用域。
C-Minus 的基本语法:
1. 表达式的定义包括变量引用(ID)、整数常量(NUM)以及运算符操作,如加法、减法等。
2. 语句类型涵盖赋值表达式、条件判断(if-else 结构)、循环控制(while 循环),函数调用和返回。
详细解释:
1. 表达式的求值包括变量的引用与直接数值。运算符优先级遵循标准算术规则,关系操作如小于等于、大于等可以用于比较两个表达式的结果。
2. 赋值语句将右侧表达式的计算结果存储到左侧指定的变量中。
3. if-else 选择结构根据给定条件(布尔表达式)执行不同的代码块。if 后面跟一个圆括号中的布尔表达式,然后是大括号内的可选“then”部分;如果存在 else,则后面跟着另一个大括号包围的选择语句或空。
4. while 循环在循环开始前计算条件,当结果为真时执行循环体,直到条件变为假为止。每次迭代从头重新评估该布尔表达式决定是否继续运行代码块。
函数与返回:
- 函数定义以关键字 void 或 int 开始(表示无值或整数值的返回),后跟名称、参数列表和大括号内的实现。
- return 语句结束函数执行,可带一个要返回给调用者的表达式。void 类型的函数不需要任何内容。
注意C-Minus 对指针操作进行了限制,并且不进行数组下标范围检查;错误处理依赖于程序自身的逻辑设计。