单词符号种别编码助忆符 内码值 DIM 1 $DIM IF 2 $IF 一 DO 3 $DO STOP 4 $STOP END 5 $END -- 标识符 6 $ID 内部字符串 常数(数) 7 $INT 标准二进制形式 二 8 $ASSIGN 一 9 $PLUS 米 10 $STAR 一 米米 11 $POWER 一 12 $COMMA 一 ( 13 $LPAR 14 $RPAR 国防科技大学计算机系602教研室
国防科技大学计算机系602教研室 单词符号 种别编码 助忆符 内码值 DIM 1 $DIM - IF 2 $IF - DO 3 $DO - STOP 4 $STOP - END 5 $END - 标识符 6 $ID 内部字符串 常数(数) 7 $INT 标准二进制形式 = 8 $ASSIGN - _ 9 $PLUS - * 10 $STAR - ** 11 $POWER - , 12 $COMMA - ( 13 $LPAR - ) 14 $RPAR -
空白 字母或数字 字母 非字母与数字 0 数字 数字 3 非数字 5 6 非* 9 10 11 其它 13 国防科技大学计算机系602教研室
国防科技大学计算机系602教研室 1 2 3 4 5 6 7 8 9 10 11 12 13 0 空白 字母 字母或数字 非字母与数字 数字 非数字 数字 = + * 非* , ( ) 其它 * * * *
·几点重要限制一不必使用超前搜索 口所有基本字都是保留字:用户不能用它们作自 己的标识符 口基本字作为特殊的标识符来处理:不用特殊的 状态图来识别,只要查保留字表。 口如果基本字、标识符和常数(或标号)之间没 有确定的运算符或界符作间隔,则必须使用一 个空白符作间隔。 D099K=1,10 要写成 D099K=1,10 国防科技大学计算机系602教研室
国防科技大学计算机系602教研室 ◼ 几点重要限制——不必使用超前搜索 所有基本字都是保留字;用户不能用它们作自 己的标识符 基本字作为特殊的标识符来处理;不用特殊的 状态图来识别,只要查保留字表。 如果基本字、标识符和常数(或标号)之间没 有确定的运算符或界符作间隔,则必须使用一 个空白符作间隔。 DO99K=1,10 要写成 DO 99 K=1,10
3状态转换图的实现 ■思想:每个状态结对应一小段程序。 ■做法: 1)对不含回路的分叉结,可用一个CASE语句或 一组IF-THEN-ELSE语句实现 字母 GetChar(); 数字 if(IsLetter((){.状态j的对应程序段.》 else if(IsDigit(){.状态k的对应程序段.} else if(ch=‘){状态l的对应程序段.功 else{.错误处理.} 国防科技大学计算机系602教研室
国防科技大学计算机系602教研室 3 状态转换图的实现 ◼ 思想:每个状态结对应一小段程序。 ◼ 做法: 1)对不含回路的分叉结,可用一个CASE语句或 一组IF-THEN-ELSE语句实现 GetChar( ); if (IsLetter( )) {…状态j的对应程序段…;} else if (IsDigit( )) {…状态k的对应程序段…;} else if (ch=‘/’) {…状态l的对应程序段…;} else {…错误处理…;} i j k l 字母 数字 \
3状态转换图的实现 2)对含回路的状态结,可对应一段由IILE结构 和IF语句构成的程序. 字母或数字 GetChar(); while (IsLetter()or IsDigit()) 其它 GetChar(); .状态的对应程序段.… 国防科技大学计算机系602教研室
国防科技大学计算机系602教研室 3 状态转换图的实现 2)对含回路的状态结,可对应一段由WHILE结构 和IF语句构成的程序. i 字母或数字 其它 j GetChar( ); while (IsLetter( ) or IsDigit( )) GetChar( ); …状态j的对应程序段…