



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
lexyacc入门教程 一、简介推荐书籍flex&bison.在UNIX下是flex和bison.网上介绍很多,大部分是写给懂的人看的,初学者一头雾水。 这样来理解lex和ya可能容易些在linux下,有很多系统配置文件,一些linux下的软件也有配置文件,那么程序是如何读取配置文件中的信息的呢?首先用到lex词法分析器,读取配置文件中的关键词(后面说到的token标记其实可看做关键词)。 然后把关键词递交给ya,ya对一些关键词进行匹配,看是否符合一定语法逻辑,如果符合就进行相应动作。 上面举得例子是分析配置文件内容的,当然可分析其他文件内容。 二、一个简单的lex文件例子 二、一个简单的lex文件例子 1、来看flex&bison这本书开篇给出的例子输入几行字符串,输出行数,单词数和字符的个数。 1、来看flex&bison这本书开篇给出的例子输入几行字符串,输出行数,单词数和字符的个数。 关于yylex即lex中相关变量系列3文章介绍。 2、按照下面过程编译。 #flex test.l#g lex.yy.clfl#./a.out 3、分析这个简单的lex文件 (1)%把文件分为3段,第一段是c和lex的全局声明,第二段是规则段,第三段是c代码。 (2)第一段的c代码要用%和%括起来,第三段的c代码不用。 (3)第二段规则段,a-zA-Z+n.是正则表达式,内的是c编写的动作。 关于正则表达式系列3文章介绍。 4、如果不用-lfl选项,代码可以为下面这样(具体原因见lex的库和函数分析) 三、修改第一个例子,将正则表达式放在全局声明中编译一同上。 四、The Scanneras Coroutine(协同程序)即怎样将扫描到的标记给其他程序使用,下面的例子,希望扫描到+或-时做一个特殊输出。 当调用yylex时,若扫描到return对应的标记时,yylex返回,且值就为return后的值;当调用yylex时,若扫描到return对应的标记时,yylex返回,且值就为return后的值;若没扫描到return对应的标记,yylex继续执行,不返回。 下次调用自动从前一次的扫描位置处开始。 五、yaunix下是bison 1、ya语法规则部分和BNF类同,先来看BNF巴克斯范式。 (1)内包含的内容为必选项; (2)内的包含的内容为可选项; (3)内包含的为可重复0至无数次的项; (4)|表示在其左右两边任选一项,相当于OR的意思; (5):=是“被定义为”的意思; (6)双引号“”内的内容代表这些字符本身;而double_quote用来表示双引号。 (7)BNF范式举例,下面的例子用来定义java中的for语句FOR_STATEMENT:=for(variable_declaration|(expression;)|;)expression;expression)statement 2、ya语法。 result:ponents/*action tobe takenin C*/; (1)ponents是根据规则放在一起的终端和非终端符号,后面是括起来的执行的动作。 3、语法例子。 param:NAME EQNAMEprintf(tName:%stValue(name):%sn,$1,$3);|NAME EQVALUEprintf(tName:%stValue(value):%sn,$1,$3);simple_sentence:subject verbobject|subject verbobject prep_phrase;subject:NOUN|PRONOUN|ADJECTIVE subject;verb:VERB|ADVERB VERB|verb VERB;object:NOUN|ADJECTIVE object;prep_phrase:PREPOSITION NOUN; (1)理解|的意思,|表示左右两边任选一项,如|subject verbobject prep_phrase;中|的左边为空,所以该句表示匹配空或者subject verbobject prep_phrase;而上面还有一句subject verbobject,所以simple_sentence:subject verbobject|subject
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年宝鸡先行电力(集团)有限责任公司招聘(4人)模拟试卷及答案详解1套
- 2025广西南宁上林县禁毒委员会招聘禁毒社工1人考前自测高频考点模拟试题及答案详解(历年真题)
- 2025广西防城港市中小学教师招聘501人模拟试卷及答案详解(典优)
- 2025湖北省三支一扶招募高校毕业生2000人考前自测高频考点模拟试题及答案详解(必刷)
- 2025内蒙古赤峰市林西金城医院招录专业技术人员6人考前自测高频考点模拟试题及答案详解(易错题)
- 律师常用信涵样式相互同意解除合同7篇
- 库房搬迁运输合同9篇
- 科研伦理考试题库及答案
- 甘肃消防考试题库及答案
- 绿色环保与可持续发展行动计划活动方案
- 免疫复合物沉积-洞察及研究
- 第4节 跨学科实践:电路创新设计展示-教科版九年级《物理》上册教学课件
- 产科危重患者的护理
- 网约车驾驶员安全驾驶培训
- DGTJ08-2310-2019 外墙外保温系统修复技术标准
- 办理出国商务代办手续服务合同
- 光电美容培训课件
- 电能质量培训课件
- 中国服饰课件模板
- 子痫及子痫前期病例分析
- 啤酒音乐节活动方案
评论
0/150
提交评论