Ubuntu中安装使用lex/yacc
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ubuntu中安装使用lex/yacc相关的知识,希望对你有一定的参考价值。
参考技术A 如果你没有安装yacc和lex的情况下去直接使用yacc命令是会提示然后如果你直接用
sudo apt-get install lex yacc
也会提示错误
然后你就需要安装人家提示的所有的包,
在安装过程中,还会遇到一个问题,
这里就需要根据错误提示的路径去删除相应的文件,就可以继续安装了
有时候还会提示:有未能满足的依赖关系
然后你就按照提示继续安装就行了
然后就可以正常用了
注意这时候用的时候最好加参数-d
效果:得到两个文件
没有动态内存分配的 Lex 和 Yacc
【中文标题】没有动态内存分配的 Lex 和 Yacc【英文标题】:Lex and Yacc without Dynamic Memory Allocation 【发布时间】:2011-06-06 15:25:46 【问题描述】:我正在设计软件以在禁止使用动态内存的嵌入式环境中运行。 Lex 和 Yacc 非常适合该应用程序。
我可以将 Lex 和 Yacc 配置为根本不使用动态内存分配吗?
我能否将 Lex 和 Yacc 配置为使用预定义的内存块,从而将动态内存使用限制在该预定义空间?
我能否将动态内存的使用限制为仅用于程序初始化(即程序首次运行时)?
编辑: 作为对 TonyK 的回应,我希望解析器不使用动态内存。
谢谢
【问题讨论】:
您是否考虑过在您自己的malloc
实现中进行链接?
【参考方案1】:
当然可以,如果您可以自己编译 Lex 和 Yacc。您只需要实现自己的 malloc 和 free,并链接到它们。 (假设 Lex 和 Yacc 是纯 C,我认为是这样。)
编辑我是否又误解了另一个问题?您希望 Lex 和 Yacc 自己使用有限的内存,还是希望它们生成使用有限内存的解析器?
【讨论】:
我希望解析器不使用动态内存。【参考方案2】:不确定您是否可以这样做 - 如果这些工具生成的 C 想要进行动态分配,那么您将很难阻止它们。也许最好的办法是创建自己的分配系统,使用要允许的保留内存。
【讨论】:
【参考方案3】:您可以使用 noyyalloc、noyyfree 和 noyyrealloc,然后自己实现这些。
【讨论】:
这并不能解决问题。 OP 被禁止使用动态内存分配。实现自己的动态内存分配不符合规则的精神。以上是关于Ubuntu中安装使用lex/yacc的主要内容,如果未能解决你的问题,请参考以下文章