Lex&Yacc词法语法分析二者结合
来源:互联网 发布:面试linux运维故障处理 编辑:程序博客网 时间:2024/05/20 03:46
在网上我是没有找到这二者结合编译完成的命令和操作,下面写个引用一个列子来说明: printf("%s is %s years old!!!\n", $1, $3); } printf("Error encountered: %s \n", msg); wang is 23 years old!!!
yeyan is 22 years old!!!
首先是vim 一个lex文件name.l,如
%{
#include "y.tab.h"
#include <stdio.h>
#include <string.h>
extern char* yylval;
%}
char [A-Za-z]
num [0-9]
eq [=]
name {char}+
age {num}+
%%
{name} { yylval = strdup(yytext);
return NAME; }
{eq} { return EQ; }
{age} { yylval = strdup(yytext);
return AGE; }
%%
int yywrap()
{
return 1;
}
然后是name.y文件
%{
typedef char* string;
#define YYSTYPE string
%}
%token NAME EQ AGE
%%
file : record file
| record
;
record : NAME EQ AGE {
;
%%
int main()
{
yyparse();
return 0;
}
int yyerror(char *msg)
{
}
下面是使用GNU下的工具lex和yacc进行构造可执行文件
$yacc -d name.y
生成y.tab.c和y.tab.h两个文件,-d选项是将y.tab.h文件被创建在该目录下
$flex name.l
$cc lex.yy.c y.tab.c -o name
这样便产生名为name的可执行文件,使用如下
先要编辑一个文件,这里取名为name.txt,内容为
wang = 23
xuzhh=23
yeyan = 22
$./name <name.txt
xuzhh is 23 years old!!!
是不是觉得已经写了个简单的编译器呢
- Lex&Yacc词法语法分析二者结合
- Lex&Yacc词法语法分析Yacc(三)
- yacc语法分析与lex词法分析相结合
- 利用lex和yacc做词法、语法分析
- Yacc 与 Lex 快速入门(词法分析和语法分析)
- Yacc 与 Lex 快速入门(词法分析和语法分析)
- Yacc 与 Lex 快速入门(词法分析和语法分析)
- lex &amp; yacc
- Lex/Yacc Lex结合Yacc
- 从yacc,Lex到手工的语法分析与词法分析,编译的作业牢骚
- 应用 yacc 和lex 实现 语法分析与词法分析 之复杂四则运算
- 编译原理课设——《TINY编译器》,用lex和yacc生成词法语法分析源码,实现编译器
- 利用flex & bison (lex & yacc)创建可重入(线程安全)的词法分析和语法解析器
- Lex与Yacc的结合
- Lex与Yacc的结合
- yacc lex 词法解析与语法解析
- Yacc 与 Lex-词法分析器工具
- lex与yacc程序配合编写语法分析程序
- 如何通过javascript提交表单form
- $(document).ready说明
- 如何通过jQuery实现网格中的行的颜…
- linux shell常用快捷键
- 开机自动拨号 批处理实现拨号连接…
- Lex&Yacc词法语法分析二者结合
- 从linux提取文件内容进行分页,另…
- 正则表达式速查手册(口诀)
- Jquery实现的悬浮按钮,浮现图片
- Linux下socket编程
- getopt函数详解及__shortopts参数…
- linux socket源代码 可用 网上我没…
- 有关VA_LIST的用法
- Eclipse CDT动态库Shared Library…