当前位置: 首页 > wzjs >正文

工装设计网站案例可以做ppt的网站有哪些

工装设计网站案例,可以做ppt的网站有哪些,软件开发培训教程,做网站单页烧钱文章目录 flex语法:定义部分:规则部分:flex全局变量:yyin: bison和flex联合编译: flex词法分析 bison语法分析 flex有两种使用方式,一种是flex单独做一个词法分析程序,另一种是flex和bison协同构建一个词法语法分析程序 我们在北…

文章目录

  • flex语法:
    • 定义部分:
    • 规则部分:
    • flex全局变量:
      • yyin:
  • bison和flex联合编译:

flex词法分析 bison语法分析

flex有两种使用方式,一种是flex单独做一个词法分析程序,另一种是flex和bison协同构建一个词法语法分析程序
我们在北大编译实践开源文档看到的显然就是第二种

一般来说,开发人员不需要关注flex和bison生成的.c文件,只需要关注.y文件和.l文件

flex语法:

一个.l文件的基本结构:

定义
%%
规则
%%
c语言辅助代码

这三部分的关系:

  • 定义一般是include头文件
  • 规则是正则表达式,flex会根据这部分来生成词法分析程序
  • 辅助代码会在规则处被调用,每按照识别一个单词,要做一些action,action就会用到辅助代码

定义部分:

%{ c语言代码 %}

可以是头文件:

%{
#include <stdio.h>
}

也可以去定义一些宏、常量、变量

%{
int num=0;
int chars=0;
%}

规则部分:

pattern { action }

pattern就是正则表达式,action就是匹配成功后要执行的c语言代码

正则表达式的语法:

//这个图说的还有一些不太清楚,此处多做一些说明:
连接:
我们学编译原理的时候在纸上写正则表达式,连接就是两部分写成前后就行了,但flex中要用+号连接,比如(1-9)+(0-9)*表示一个不能以0开头的数字,

action可以用定义部分定义的东西,也可以用辅助代码

flex对任何没有匹配到的字符,会自动做原样输出操作。因此,对于那些不需要将其输出,而是需要将其忽略的pattern,应该进行匹配并做无操作处理。

词法分析和语法分析其实是两层抽象,词法分析是从单个字符到词的抽象,语法分析是从词到语法成分的抽象。最终要将源代码抽象成一个树形结构存放在内存中,然后遍历才能做中间代码生成和目标代码生成

感觉需要去复习正则表达式的书写

flex全局变量:

全局变量是自动定义在lex.yy.c中,如果你在别的文件中想用的话应外部声明

yyin:

定义在lex.yy.c文件中:

FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;

bison和flex联合编译:

bison -d -o MySNL_BI.c MySNL_BI.y
flex MySNL_LEX.l
gcc -o snlc MySNL_BI.c lex.yy.c -lm

bison核心功能就是产生一个yyparse函数,flex核心功能就是产生一个yylex函数

.y中应该外部声明yylex()函数,否则bison编译过不去:

extern int yylex();

你在.y文件中放这个声明,然后这个声明就会出现在bison.c中,yyparse会自动调用这个yylex(),如果你忘记放了那么bison -d -o MySNL_BI.c MySNL_BI.y这一步bison就不知道yylex是啥那么就过不去

应该先编译bison再编译flex因为flex要用到bison中的token结构,
先编译bison时,bison也会用到flex中的东西比如yylex()这个函数还有一些全局变量,但是这些东西用外部声明就可以,编译能过,链接的时候来处理这些

然后编译flex,flex要用到bison中的%token定义以及一些全局变量,token定义通过include"bison.tab.h"来引入,然后其他全局变量也是外部声明,

然后main.c,可能用到flex全局变量和bison全局变量,都用外部声明,然后就是yyparse这个函数也是外部声明。

http://www.dtcms.com/wzjs/788043.html

相关文章:

  • 海商网做网站价格方维服务公司服务范围
  • 营销网站价格广州专业网站制作
  • 网摘网站推广法国外h5汇总网站
  • 手把手教你做网站7网络规划设计师2022论文5月
  • 怎么可以自己做网站被百度收到小程序代码怎么获取
  • 北京官网建设公司中山seo推广优化
  • 网站页脚内容网站被攻击空间关了怎么办
  • 网站套用鞍山58招聘
  • 门户网站模板源码下载嘉兴公司网站模板建站
  • 深圳3d网站建设淄博建企业网站
  • 哪些网站可以做旅游精准引流的网络推广
  • 小程序开发平台需要网站吗深圳十大品牌设计公司
  • 湖南营销型网站建设卖手表的网站
  • 招聘网站开发方案doc网站简单化
  • 网站开发项目终止协议书陕西启康建设有限公司网站
  • 建设公司怎么做网站运营网站建设总体目标
  • 网站建站主题网络口碑营销名词解释
  • 合肥市蜀山区建设局网站福建百川建设有限公司网站
  • 加强统计局网站的建设和管理襄阳市网站建设
  • 怎么更改织梦网站文章样式开封市住房和城乡建设局网站
  • 网站开发文档需求模板android开发
  • 网站问卷调查怎么做网站建设分工明细表
  • 网站建设吉金手指排名15怎么做简单的微信浏览的网站
  • 企业网络营销网站设计浙江省交通工程建设集团网站
  • 公司网站公司怎么建设网站首页
  • 清远市建设局官方网站简约wordpress模板
  • 建设银行龙卡信用卡在境外网站支付谷歌推广代理公司
  • 平台设计网站公司电话设计一个个人网站的基本步骤
  • 中国建设银行福州招聘信息网站与传统市场营销的区别与联系有哪些
  • 做我的世界头像的网站张家界网站建设多少钱