发布网友 发布时间:2022-06-04 16:06
共1个回答
热心网友 时间:2023-10-29 15:21
程序设计语言中的几类单词可用下述规则描述:
〈标识符〉→l|l〈字母数字〉
〈字母数字〉→l|d|l〈字母数字〉|d〈字母数字〉
〈无符号整数〉→d|d〈无符号整数〉
〈运算符〉→+|-|*|/|=|〈〈等号〉|〉〈等号〉……
〈等号〉→=
〈界符〉→,|;|(|)|……
其中l表示a~z中的任何一英文字母,d表示0~9中的任一数字。
关键字(保留字)也是一种单词,一般关键字(保留字)都是由字母构成,它的描述也极容易,实际上,关键字(保留字)集合是标识符集合的子集。
最复杂的一类单词要属无符号实数了,比如25.55e+5和2.1,它们可以由如下规则描述。
例4.6
〈无符号数〉→d〈余留无符号数〉|.〈十进小数〉|e〈指数部分〉
〈余留无符号数〉→d〈余留无符号数〉|.〈十进小数〉|e〈指数部分〉|ε
〈十进小数〉→d〈余留十进小数〉
〈余留十进小数〉→e〈指数部分〉|d〈余留十进小数〉|ε
〈指数部分〉→d〈余留整指数〉|s〈整指数〉
〈整指数〉→d〈余留整指数〉
〈余留整指数〉→d〈余留整指数〉|ε
其中s表示正或负号(+,-),d表示0~9中的任一数字。
举例
例:1型(上下文有关)文法
文法G[S]: S→CD Ab→bA
C→aCA Ba→aB
C→bCB Bb→bB
AD→aD C→ε
BD→bD D→ε
Aa→bD
L(G)={ww|w∈{a,b}*}
例:2型(上下文无关)文法
文法G[S]: S→0A|1B|0
A→0A|1B|0S
B→1B|1|0