📄 readme.txt
字号:
BY:C.J.H
======程序编译、运行环境==================================================================
VC 6.0
======测试数据============================================================================
●测试目的:
注释嵌套、标识符、整型数字、字符串(包含转义字符的转换和对超过一行的长字符串的识别等)以及一些保留字和标点符号的识别。
●测试内容( 测试文件“test.tig”位于Debug中 ):
/* define valid /*mutually recursive*/ procedures */
let
function do_nothing(d: int) =
do_nothing1(d, "str1\tc c c\065\\\"")
in
do_nothing1(0, "str2%^&(*(^*@#\
\ddd")
end
======源程序说明===========================================================================
程序采用三个初态(Start state)INITIAL、COMMENT和STR以方便对嵌套注释和字符串的识别和处理。
●对注释的处理:
使用两个全局变量begin_comment和end_comment分别记录"/*"和"*/"的个数,
如果begin_comment等于end_commnt则表示注释嵌套正确,忽略注释;
如果先发现"*/"则提示"注释嵌套错误";
如果在文件结束后,即遇到EOF都没有找到相等个数的"*/",则提示"未中止的注释"并中止词法分析。
●对字符串的处理:
处理字符串的重点在于返回的字符串值应当包含所有已转换到其含义的转义字符。
本程序根据书上附录中列出的转义序列分别进行转换:
如果在字符串中出现\n,则转换为换行;
如果在字符串中出现\t,则转换为一个制表符的长度;
如果在字符串中出现\",则转换为一个双引号;
如果在字符串中出现\ddd(ddd表示3个十进制数字),则换算为用一个整数表示的字符;
如果在字符串中出现\\,则转换为一个反斜杠;
如果在字符串中出现\f_ _ _f\,则忽略此序列;
(\f_ _ _f\表示一个用\\分开,在两个反斜杠中可以有空白符、制表符、换行符或走纸符的字符串)
本程序还对字符串还没结束就遇到文件结束标志EOF的情况进行了处理,如果遇到这样的错误则提示"未中止的字符串"并中止词法分析。
●对文件结束处理
如果在<COMMENT>中遇到EOF标志,则提示"未中止的注释"并中止词法分析;
如果在<STR>中遇到EOF标志,则提示"未中止的字符串"并中止词法分析;
如果在<INITIAL>中遇到EOF标志,则中止词法分析。
●对错误的处理包含在以上的处理中。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -