bison yacc使用

  • yacc基本语法
    • makefile
  • 后续继续添加

yacc基本语法

%{#include<stdio.h>#include<ctype.h>/*包含include*/
%}
/*在这里写终结符
如:
%token NUM
%left ADD
%left SUB
%right NOT
这里Token代表记号,left代表左结合,right代表右结合
*/
%%
/*这里写语法规则即是grammer*/
line:expr '\n'{printf("%d\n",$1);
};
expr:expr '+' term{
$$=$1+$3;
}|term{$$=$1;
};
term: term '*' factor{$$=$1*$3;
}| factor{$$=$1;
};
factor: '(' expr ')'{$$=$2;
}|NUM{$$=$1;};
DIGIT:'0'{$$=0;}|'1'{$$=1;}|'2'{$$=2;}|'3'{$$=3;}|'4'{$$=4;}|'5'{$$=5;}|'6'{$$=6;}|'7'{$$=7;}|'8'{$$=8;}|'9'{$$=9;}
POS_DIGIT:'1'{$$=1;}|'2'{$$=2;}|'3'{$$=3;}|'4'{$$=4;}|'5'{$$=5;}|'6'{$$=6;}|'7'{$$=7;}|'8'{$$=8;}|'9'{$$=9;}
NUM:DIGIT{$$=$1;
}|POS_DIGIT NUM{int len=1,tmp=$2;while(tmp){tmp/=10;len*=10;}$$=$1*len+$2;
}
%%
/*这里写一些函数*/
main(){return yyparse();
}
int yylex(void){return getchar();
}
void yyerror(char *s){printf("%s\n",s);
}

makefile

CFLAGS = -g -Wall -ansi -pedanticminil: mini_l.lex final.ybison -d -v final.yflex mini_l.lex    gcc lex.yy.c final.tab.c -lfl -o minil1rm -f lex.yy.c

bison -d -v final.y代表使用.y文件生成c语言代码.
flex mini_l.lex表示编译lex文件。
gcc表示编译c语言文件为可执行文件。

后续继续添加

使用bison编写语法分析器相关推荐

  1. 简易编译器实现(二)使用Bison创建语法分析器

    你也可以通过我的独立博客 -- www.huliujia.com 获取本篇文章 简易编译器实现(一)使用Flex创建词法分析器一文介绍了编译器的概念和七个阶段,并说明了如何使用Flex创建词法分析器. ...

  2. 编译原理c++基于LR分析表编写语法分析器

    具体要求 已知文法G[E]: E->E+T | T T->(E) | id | id[E] //其中E,T为非终结符,其余符号为终结符 (1)为该文法建立LR分析表.//通过构造项目集规范 ...

  3. flexbison编写语法分析器

    使用flex和bison,对c语言代码块进行词法分析,识别词法错误,按照c-语法规则进行文法分析,并形成c语言代码块的语法树(syntax tree),并将语法树按照特定的格式打印出来. 如何编译 两 ...

  4. 自己动手开发编译器(十)miniSharp语法分析器

    经过前面四篇的铺垫,我们终于拥有了编写语法分析器的强大工具,现在可以正式开发一门编程语言的语法分析器了.我们先来定义miniSharp的语法规则,然后根据LL文法的特点进行一些调整,最后借助解析器组合 ...

  5. 基于flex/bison工具生成sysY2022文法的词法/语法分析器

    基于flex/bison工具生成sysY2022文法的词法/语法分析器 本文内容学习借鉴了往届参赛的优秀校友学长学姐的开源作品代码,仅用于学习目的,现分享给大家,如有侵权请联系我删除.我使用的开发环境 ...

  6. PHP语法分析器:RE2C BISON 总结

    在这之前,我曾经尝试过一个项目,就是将我们的PHP代码自动生成so扩展, 编译到PHP中,我叫它 phptoc. 但是由于各种原因,暂停了此项目. 写这篇文章一是因为这方面资料太少,二是把自己的收获总 ...

  7. 算符优先文法编写java语法分析器,编译原理课程设计实验报告——基于算符优先分析方法的表达式语法分析器...

    内容简介: 一.设计目的 了解用算符优先法对表达进行语法分析的方法,掌握自顶向下的预测语法分析程序的手工构造方法. 二.设计内容 对简单表达式文法构造算符优先分析器. 三.设计要求 1.对下列简单表达 ...

  8. python编写语法解析器_SLR语法分析器 python实现

    一.语法分析器做什么 语法分析是根据某种给定的形式文法对由单词序列(如英语单词序列)构成的输入文本进行分析并确定其语法结构的一种过程. 一个语法分析器从词法分析器获得一个词素序列,并验证这个序列是否可 ...

  9. 小白天堂之编写词法语法分析器何其简单(一)

    写小白天堂系列的文章算是从这一篇开始吧,但是写这个词法语法分析器实在是因为编译原理老师扣啊,哎,没办法,只能直接写代码,当时正好将Javascript的语法基本撸了一边,所以就决定写一个JS的词法语法 ...

最新文章

  1. 【C++】C/C++ 中的单例模式
  2. 100年前的北京Vlog火了!大神利用AI修复古董纪录片,还原1920年的京城生活
  3. 初步探索创伤性脑损伤后平衡功能障碍的神经机制
  4. Linux and the Device Tree
  5. 一名游戏开发者的告白
  6. 数据库性能优化—SQL优化十大原则
  7. 数据库系备份相关知识笔记
  8. 2021 年最值得了解的 Node.js 工具
  9. PostgreSQL表的行数统计
  10. Beaglebone Back学习五(PWM测试)
  11. 解决pytorch二分类任务交叉熵损失函数CrossEntropyLoss报错:IndexError: Target 1 is out of bounds.
  12. 微信“支付”页新增“出行服务” :已上线北深广三城
  13. sleep、wait、yield、join区别
  14. linux移动文件_Linux基础
  15. Python学习之路-22 (面向对象特殊成员)
  16. python在字典中插入新的数据_Python数据类型之字典dict
  17. 装了冰点还原如何修改计算机ip,如何改变冰点还原企业控制台的IP地址
  18. 【天光学术】社会语言学论文:委婉语合作原则违反的具体体现与影响(节选)
  19. 【易社投研资讯】销量一日暴增数倍,上海加码外牌限行,新能源车换购需求迎新一轮释放,哪些公司或将受益?
  20. “九把锁”还是春秋时期的黄金密道

热门文章

  1. 将导入到Revit中的CAD图纸分解——炸开
  2. 开源SDN控制器和商用SDN控制器一览
  3. 数据库MySQL最大连接数、最大活跃连接数、最大并发数、并发会话数区别
  4. 数字动漫平台之集群渲染技术解决方案
  5. 王守仁英国文学选读第3、4版笔记和课后答案
  6. 机器学习:MixMatch 论文解读
  7. 矢量数据与卫星地图叠加效果最完美的解决方案
  8. 通过地形图或者土地利用图的扫描形式制作数字化地图的主要步骤
  9. Android源码下载方法、云盘链接、在线阅读
  10. MPI实现矩阵向量乘法