Lex Yacc编写汇编器的一个问题:分离预处理器和汇编器

freshui 2008-04-28 11:09:00
我之前的版本将预处理器和汇编过程都在一个lex和yacc程序中,通过不同的遍来操作完成的

现在感觉维护和扩展起来都很麻烦,想要把他们拆开,分别用两套lex yacc来完成

因为lex会生成 yylex()函数, yacc会调用, 想要二者生成的yylex()和yyparser()
分别要改成其他的名字,同时lex和yacc也不能生成的默认文件名, 不知道该怎么设置

有没有对这两个工具比较熟悉的朋友支个招~
...全文
196 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
我啃 2008-05-01
  • 打赏
  • 举报
回复
我啃 2008-05-01
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 mLee79 的回复:]
感觉还是只用 lex yacc生产状态表, 用自己的代码实现功能比较简单些, 也灵活些 ..
[/Quote]
通常来说它们仅作辅助,用于生成懒得写的东西,对于一个compiler system首先进行的必须是设计,粒度分析等问题,否则下手会悔改会使自己痛不欲生~
meiZiNick 2008-05-01
  • 打赏
  • 举报
回复
lz要干嘛?
freshui 2008-04-29
  • 打赏
  • 举报
回复
多谢,准备试试。
对lex yacc的工作原理还不是很清楚,用起来还是比较不顺手。
mLee79 2008-04-28
  • 打赏
  • 举报
回复
感觉还是只用 lex yacc生产状态表, 用自己的代码实现功能比较简单些, 也灵活些 ..
星羽 2008-04-28
  • 打赏
  • 举报
回复
up :)
不想低调 2008-04-28
  • 打赏
  • 举报
回复
up
Treazy 2008-04-28
  • 打赏
  • 举报
回复
命令行提供了很多选项可以解决你的问题

-d;--defines; : 编写额外的输出文件,它们包含这些宏定义:语法中定义的标记类型名称,语义的取值类型 YYSTYPE, 以及一些外部变量声明。如果解析器输出文件名叫 name.c;, 那么 -d文件就叫做 name.h。 如果你想将 yylex 定义放到独立的源文件中,你需要 name.h;, 因为 yylex 必须能够引用标记类型代码和 yylval 变量。
-b file-prefix; --file-prefix=prefix; : 指定一个所有Yacc输出文件名都可以使用的前缀。选择一个名字,就如输入文件名叫prefix.c
-o outfile ;--output-file=outfile: 指定解析器文件的输出文件名。其他输出文件根据 -d; 选项描述的输出文件来命名。
Yacc 库通常在编译步骤中自动被包括。但是它也能被显式的包括,以便在编译步骤中指定 -ly 选项。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧