- 6
- 0
- 约9.69千字
- 约 13页
- 2017-06-03 发布于湖北
- 举报
编译器的自动生成工具LEX和YACC的使用方法
??? Lex自动地表示把输入串词法结构的正规式及相应的动作转换成一个宿主语言的程序,即词法分析程序,它有一个固定的名字yyler,在这里yyler是一个C语言的程序。
??? Yylex将识别出输入串中的词形,并且在识别出某词形时完成指定的动作。
??? 看一个简单的例子:写一个lex源程序,将输入串中的小写字母转换成相应的大定字母。
??? 程序如下:
??? %%???[a-z]printf(“%c”.yytext[0]+A-a);
??? 上述程序中的第一行%%是一个分界符,表示识别规则的开始。第二行就是识别规则。左边是识别小写字母的正规式。右边就是识别出小写字母时采取的动作:将小写字母转换成相应的大写字母。
Lex的工作原理是将源程序中的正规式转换成相应的确定有限自动机,而相应的动作则插入到yylox中适当的地方,控制流由该确定有限自动机的解释器掌握,不同的源程序,这个解释器是相同的。
1.2 lex源程序的格式
??? lex源程序的一般格式是:
??? {辅助定义的部分}
??? %%
??? {识别规则部分}
??? %%
??? {用户子程序部分}
其中用花括号起来的各部分都不是必须有的。当没有“用户子程序部分”时,第二个%%也可以省去。第一个%%是必须的,因为它标志着识别规则部分的开始,最短的合法的lex源程
原创力文档

文档评论(0)