Lex与Yacc学习(二)之第一个Lex程序
2015-01-12 15:47
246 查看
用lex识别单词
构建一个识别不同类型英语单词的简单程序。先识别词性(名词,动词等),然后再扩展到处理符合简单英语语法的多个单词的句子。先列出要识别的一组动词:
is am are were was be being been do does did will would should can could has have had go
识别这些动词的lex程序:
%{ /* * 例1-1 单词识别程序 ch1-02.l * 识别单词是否是动词 */ %} %% [\t ]+ /*意味着空格的正闭包,忽略空白*/; is | am | are | were | was | be | being | been | do | does | did | will | would | should | can | could | has | have | had | go {printf("%s: is a verb\n",yytext);} [a-zA-Z]+ {printf("%s: is not a verb\n",yytext);} .|\n {ECHO;/*通常的默认状态:输出匹配模式,复制标点或其它字符*/} %% int main() { yyin = fopen("example.txt","r"); yylex(); fclose(yyin); } int yywrap() { return 1; }
需要的例子文件example.txt (放在相同文件夹):
did I have fun?
程序运行cmd命令:
(1)打开lex程序文件所在目录:如:
(2)编译命令: flex ch1-02.l 将生成lex.yy.c文件
(3)利用C++编译命令,编译运行.c文件,即可。
如下图所示:
(4)命令 ./ch1-02.exe 运行生成的exe文件,得到词法分析结果:
相关文章推荐
- Lex与Yacc学习(二)之第一个Lex程序
- Lex与Yacc学习(六)之lex & yacc (简单计算器程序) 运行
- Lex与Yacc学习(六)之lex & yacc (简单计算器程序) 运行
- papervision3d学习笔记:第一个程序
- 我的嵌入式学习之路(一) linux 跑的第一个程序 LED灯
- 第一个Ajax程序——PHP学习日记之二
- Lex和Yacc从入门到精通(3)--一个极其简单的lex和yacc程序
- 与afreez一起学习DirectFB之:编译运行第一个DirectFB程序
- GTK学习第一步: Windows环境下运行第一个GTK程序
- 开始学习python了,第一个程序是一个逆波兰式的表达式分析器
- 从零学习freemarker(1)老紫竹的第一个freemaker程序
- Lex和Yacc使用学习笔记(二)
- SWT学习笔记(3)——第一个程序
- C++初学篇学习笔记一(上机调试第一个程序)
- ruby 学习_1 --第一个ruby程序,hello world
- Java学习第一步:环境配置与编译第一个程序
- ACE 5.5 学习笔记(2) 第一个ACE程序
- yacc和lex学习概括
- SWING控件学习1:第一个SWING程序
- Lex和Yacc使用学习笔记(一)