lex语言词法分析
2016-04-06 18:11
288 查看
1.添加行号
2.将文件中每个非空的空白符号序列替换为单个空格
3.将文件中所有关键字转换为大写字母
4.将文件中所有标识符转换为小写字母,且以下划线开头、
5.将文件中所有指数形式的常量转换为小数形式
例如:2.5e3 被转换为 2500
3.7e-2 被转换为 0.037
%{ #include<stdio.h> #include<stdlib.h> int line=1; %} %% [^\n] {yymore();} [\n] {printf("%2d %s",line++,yytext);} %% int yywrap(void) { return 1; } int main(int argc,char** argv) { yyin=fopen(argv[1],"r"); while(yylex()); return 0; }
2.将文件中每个非空的空白符号序列替换为单个空格
%{ #include<stdio.h> #include<stdlib.h> %} %% [^\n] {printf("%s",yytext);} [\t\n] {printf(" ");} %% int yywrap(void) { return 1; } int main(int argc,char**argv) { yyin=fopen(argv[1],"r"); yylex(); return 0; }
3.将文件中所有关键字转换为大写字母
%{ #include <stdio.h> #include <stdlib.h> int lineno=1; %} letter [a-z]+ digit [0-9]+ id {letter}+({letter}|{digit})* %% [^id] { } {id} { int i=0; for(i=0;i<yyleng;i++) if(yytext[i]>='a'&&yytext[i]<='z') yytext[i]-=32; printf("%s\n",yytext); } %% int yywrap(void) { return 1; } int main(int argc, char** argv) { yyin = fopen(argv[1], "r"); yylex(); return 0; }
4.将文件中所有标识符转换为小写字母,且以下划线开头、
%{ #include <stdio.h> #include <stdlib.h> int lineno=1; %} letter [A-Z]+ digit [0-9]+ id {letter}+({letter}|{digit})* %% [^id] { } {id} { int i=0; for(i=0;i<yyleng;i++) if(yytext[i]>='A'&&yytext[i]<='Z') yytext[i]+=32; printf("_%s\n",yytext); } %% int yywrap(void) { return 1; } int main(int argc, char** argv) { yyin = fopen(argv[1], "r"); yylex(); return 0; }
5.将文件中所有指数形式的常量转换为小数形式
例如:2.5e3 被转换为 2500
3.7e-2 被转换为 0.037
%{ #include <stdio.h> #include <stdlib.h> int lineno=1; %} FLOAT [0-9]*[.][0-9]+([eE][+-]?[0-9]*|[0])?f? %% {FLOAT} { float t=0; t=atof(yytext); printf("%f",t); } %% int yywrap(void) { return 1; } int main(int argc, char** argv) { yyin = fopen(argv[1], "r"); yylex(); return 0; }
相关文章推荐
- 第六周实践项目3————IP 地址类
- log4j使用
- 返回一个二维整数数组中最大联通子数组的和
- JAVA日志
- HDU 3836 强联通分量
- ns2.35下gpsr协议移植
- 策略模式
- 将studio中的library引进eclipse里
- android greenDao SQLite数据库操作工具类使用
- SQLServer设置大小写敏感
- 需求用例分析之三:补充规约
- 关键路径算法
- LayoutInflater两个inflate方法的区别
- 笔试练习三
- java.io.FileNotFoundException: URL [jndi:/localhost/myBlogSys/WEB-INF/classes/] cannot be resolved t
- mongoDB window平台安装MongoDB
- VI nagios
- [MUI框架]-滑动侧边栏-webview模式
- TextView+ScrollView显示大量文本(小说)
- 基于Http协议的Android网络编程