WINDOWS下bison和flex的使用
来源:互联网 发布:什么是c语言 编辑:程序博客网 时间:2024/05/16 16:08
以一个简单计算器为例
mycalc.l
%{#include <stdio.h>#include "y.tab.h"intyywrap(void){ return 1;}%}%%"+" return ADD;"-" return SUB;"*" return MUL;"/" return DIV;"\n" return CR;([1-9][0-9]*)|0|([0-9]+\.[0-9]*) { double temp; sscanf(yytext, "%lf", &temp); yylval.double_value = temp; return DOUBLE_LITERAL;}[ \t] ;. { fprintf(stderr, "lexical error.\n"); exit(1);}%%
mycalc.y
%{#include <stdio.h>#include <stdlib.h>#define YYDEBUG 1%}%union { int int_value; double double_value;}%token <double_value> DOUBLE_LITERAL%token ADD SUB MUL DIV CR%type <double_value> expression term primary_expression%%line_list : line | line_list line ;line : expression CR { printf(">>%lf\n", $1); }expression : term | expression ADD term { $$ = $1 + $3; } | expression SUB term { $$ = $1 - $3; } ;term : primary_expression | term MUL primary_expression { $$ = $1 * $3; } | term DIV primary_expression { $$ = $1 / $3; } ;primary_expression : DOUBLE_LITERAL ; %%intyyerror(char const *str){ extern char *yytext; fprintf(stderr, "parser error near %s\n", yytext); return 0;}int main(void){ extern int yyparse(void); extern FILE *yyin; yyin = stdin; if (yyparse()) { fprintf(stderr, "Error ! Error ! Error !\n"); exit(1); }}在命令行输入如下命令
bison --yacc -dv mycalc.yflex mycalc.lgcc -o mycalc y.tab.c lex.yy.c
0 0
- WINDOWS下bison和flex的使用
- 编译原理 - 在 Windows 平台下使用 Flex 和 Bison
- 使用Bison和Flex(Windows下的基于GNU开源的Yacc和Lex)
- 在windows下安装flex和bison
- 编译原理——实验 1.2 在 Windows平台下使用 Flex和 Bison
- 使用bison和flex工具
- bison和flex的基本原理
- bison和flex的例子
- flex 和 bison 的计算机
- Bison和Flex的学习
- windows下bison安装使用
- 使用Flex Bison 和LLVM编写自己的编译器
- 使用Flex Bison 和 LLVM编写你自己的编译器
- 【转】使用Flex Bison 和LLVM编写自己的编译器
- 使用Flex Bison 和LLVM编写自己的编译器
- 使用Flex Bison 和LLVM编写自己的编译器
- 使用Flex Bison 和LLVM编写自己的编译器
- 使用Flex Bison 和LLVM编写自己的编译器
- Android四种动画
- vim/spacemacs 打开源代码中文件路径
- Java基础练习
- leetCode No.378 Kth Smallest Element in a Sorted Matrix
- 属性动画常用属性和方法
- WINDOWS下bison和flex的使用
- JAVA学习随笔2
- 被粉碎的线段树【NOIP2016提高A组模拟9.3】
- 223. Rectangle Area*
- UVA7042(2014西安H题)-The Problem to Make You Happy-博弈+bfs
- 随机变量的数字特征(概率论常用知识)
- 浅谈C/C++ 开发Excel插件之创建项目
- mybatis官网
- C#继承基本控件实现自定义控件