1.4单词整理
分析了PASCAL-S的语法后,以表格的形式给出所有PASCAL-S程序中可能出现的单词的正则表达式、记号和属性。PASCAL-S有效单词表如下:
描述 | 正则表达式 | 属性 | 记号 |
---|---|---|---|
标识符 | [a-z][a-z0-9]* | 该标识符本身 | IDENTIFIER |
无符号整数 | [0-9]+ | 该整数本身(字符串表示) | UINUM |
无符号浮点数 | [0-9]+\.[0-9]+ | 该浮点数本身(字符串表示) | UFNUM |
字符常量 | ‘.’ | 该字符常量本身(不包含两侧的单引号) | CHAR |
关系运算符 | >= | >= | RELOP |
> | > | ||
<= | <= | ||
<> | <> | ||
< | < | ||
关系运算符:相等 常量初始化:赋值 |
= | = | = |
算术运算符:加法 | + | + | ADDOP |
逻辑运算符:或 | or | or | |
算术运算符:减法(双目) 算术运算符:取相反数(单目) |
- | - | - |
算术运算符:乘法 | * | * | MULOP |
算术运算符:除法 | / | / | |
算术运算符:整除 | div | div | |
算术运算符:取余 | mod | mod | |
逻辑运算符:且 | and | and | |
逻辑运算符:非 | not | not | NOT |
赋值符号 | := | := | ASSIGNOP |
范围连接符 | .. | .. | RANGEDOT |
界符 | ( | ( | ( |
) | ) | ) | |
[ | [ | [ | |
] | ] | ] | |
: | : | : | |
, | , | , | |
; | ; | ; | |
. | . | . | |
关键字 | program | program | PROGRAM |
关键字 | const | const | CONST |
关键字 | var | var | VAR |
关键字 | array | array | ARRAY |
关键字 | of | of | OF |
关键字 | procedure | procedure | PROCEDURE |
关键字 | function | function | FUNCTION |
关键字 | begin | begin | BEGIN |
关键字 | end | end | END |
关键字 | if | if | IF |
关键字 | then | then | THEN |
关键字 | for | for | FOR |
关键字 | to | to | TO |
关键字 | do | do | DO |
关键字 | else | else | ELSE |
关键字 | repeat | repeat | REPEAT |
关键字 | until | until | UNTIL |
关键字 | while | while | WHILE |
关键字 | integer | integer | TYPE |
关键字 | real | real | |
关键字 | char | char | |
关键字 | boolean | boolean |
注意,上表并没有包含全部的需要用到的正则表达式,其余的情况不属于PASCAL-S的有效单词,将在后续的翻译规则部分的具体实现中进行讲述。