- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
                        查看更多
                        
                    
                lex.flex的使用【DOC精选】
                    从lexyacc说到编译器(2.flex的使用)
作者:tangl_99
QQ:8664220
msn:tangl_99@
email:tangl_99@
 
看了第一篇的关于正则表达式的说明后,下面我们就来通过它,使用flex这个词法分析工具来构造我们的编译器的词法分析器.
关于lex的教程应该是很多,这里我就简单地介绍一下,然后着重后面的lex和yacc的配合使用以及其技巧.所以,如果你不看了后还是不太明白lex或者yacc的使用,请你自己上网去查查,这方面的教程是很多的.我知道的一篇常见的就是
Yacc 与 Lex 快速入门Lex 与 Yacc 介绍
它的作者就是Ashish Bansal.
 
Flex就是fast lex的意思.而lex就是Lexical Analyzar的意思.flex可以在cygwin或者gnupro中找到.它是unix的一个工具,属于GNU组织产品.网上也可以找到单独可以在windows下用的版本.
我们一般把我们的词法扫描程序要扫描的一些单词(token)用正则表达式写好,然后作为lex的输入文件,输入命令flex xxx.l(xxx.l就是输入文件),lex经过处理后,就能得到一个名字叫lex.yy.c的C源代码.这个C源代码文件,就是我们的词法扫描程序.通常lex为我们生成的词法分析器的C源代码都是十分复杂而且庞大的,我们一般根本不会去查看里面的代码(放心好了,flex这个东西不会出错的)
 
下面让我们看看几个我已经使用过的几个lex输入文件.
这是一个前段时间我为GBA上的一个RPG游戏写的脚本引擎所使用的lex输入文件(部分)
例2.1
 
%{
/* need this for the call to atof() below */
#include stdio.h
#include stdlib.h
#include math.h
#include globals.h
 
%}
digit        [0-9]
number       (-|+)?{digit}+
hexnumber    0x({digit}|[a-fA-F])+
letter       [a-zA-Z]
identifier   ({letter}|_)({number}|{letter}|_)* 
newline      [\n]
whitespace   [ \t]+
string       \[^]*\
comment      #[^#]*#
%%
 
{string}     { return VM_STRING;        }
Logo       { return VMIN_LOGO; }
FaceIn     { return VMIN_FACEIN; }
FaceOut    { return VMIN_FACEOUT; }
LoadTile   { return VMIN_LOAD_TILE;   }
CreateRole { return VMIN_CREATE_ROLE; }
ReleaseRole { return VMIN_RELEASE_ROLE;}
CreateMap  { return VMIN_CREATE_MAP;  }
ReleaseMAP { return VMIN_RELEASE_MAP;}
ShowBitmap { return VMIN_SHOWBITMAP;  }
CreateDialog { return VMIN_CREATE_DIALOG; }
ReleaseDialog { return VMIN_RELEASE_DIALOG;}
Fight      { return VMIN_FIGHT;       }
Delay      { return VMIN_DELAY;       }
PressA     { return VMIN_PRESS_A;     }
PressB     { return VMIN_PRESS_B;     }
PressR     { return VMIN_PRESS_R;     }
PressL     { return VMIN_PRESS_L;     }
PressStart { return VMIN_PRESS_START; }
PressSelect { return VMIN_PRESS_SELECT;}
{number}     { return VM_NUMBER;        }
{whitespace} { /* skip whitespace */    }
{identifier} { return VM_ID;            }
{newline}    
                您可能关注的文档
- L-Box师生安装注册指南【DOC精选】.docx
- L9 中文资料【DOC精选】.doc
- labview 字符串和文件【DOC精选】.doc
- LABVIEW 概述【DOC精选】.docx
- Laboratory Exercise Basic Cell Characteristics【DOC精选】.docx
- Labview英文文献翻译【DOC精选】.doc
- LabVIEW的四自由度机械臂运动控制系统设计【DOC精选】.docx
- Lady Gaga gagged【DOC精选】.doc
- lammps输入文件命令中文详解【DOC精选】.doc
- Language points(Unit college life )【DOC精选】.doc
- Li Ming is back to school【DOC精选】.doc
- libjingle学习笔记----Thread MessageQueue SocketServer【DOC精选】.doc
- Lesson【DOC精选】.doc
- LG逻辑编程Chapter MK Internal Memory and IO Signal(apm)【DOC精选】.doc
- lifebox使用配置【DOC精选】.doc
- life_in_the_future_reading_【DOC精选】.doc
- LINGO实验【DOC精选】.doc
- linux shell 正则表达式语法【DOC精选】.doc
- Linux bind域名服务器搭建【DOC精选】.doc
- lightbar检验技术【DOC精选】.doc
最近下载
- 五年级数学奥数讲义.pdf VIP
- 牛羊屠宰兽医卫生检验人员理论考试题库及答案.docx VIP
- 牛品种改良与人工授精技术培训课件.ppt
- 五年级数学奥数讲义134讲.doc VIP
- 2025年综合类-电力机车钳工-电力机车钳工(高级技师)历年真题摘选带答案(5卷单选题100题).docx VIP
- 2025年综合类-电力机车钳工-电力机车钳工(高级)历年真题摘选带答案(5卷单选题100道).docx VIP
- 2025年综合类-电力机车钳工-电力机车钳工(高级)历年真题摘选带答案(5卷单选一百题).docx VIP
- 2025年综合类-电力机车钳工-电力机车钳工(高级技师)历年真题摘选带答案(5卷单选100题合辑).docx VIP
- 马来酸氯苯那敏片详细说明书与重点.docx VIP
- 2025年综合类-电力机车钳工-电力机车钳工(高级技师)历年真题摘选带答案(5卷单选一百题).docx VIP
 原创力文档
原创力文档 
                        

文档评论(0)