Flex&Lex和Yacc&Bison有什么区别.我疯狂地搜索了互联网,但没有找到任何可靠的答案.
我可以在Ubuntu上安装纯Lex和Yacc,或者我只能安装flex和bison.我很迷惑.
如果Lex不是免费的,为什么我要在我的Ubuntu发行版上安装它?
lex --version
lex 2.5.35
Run Code Online (Sandbox Code Playgroud)我下载了源代码并想编译扫描程序文件.它会产生以下错误:
[meepo@localhost cs143-pp1]$ gcc -o lex.yy.o lex.yy.c -ll
In file included from scanner.l:15:0:
scanner.h:59:5: error: unknown type name ‘bool’
In file included from scanner.l:16:0:
utility.h:64:38: error: unknown type name ‘bool’
utility.h:74:1: error: unknown type name ‘bool’
In file included from scanner.l:17:0:
errors.h:16:18: fatal error: string: No such file or directory
compilation terminated.
Run Code Online (Sandbox Code Playgroud)
我尝试使用不同的编译器来编译它,但它出现了不同的错误.
[meepo@localhost cs143-pp1]$ g++ -o scan lex.yy.c -ll
/usr/bin/ld: cannot find -ll
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)
我的操作系统是3.0-ARCH,我不知道为什么会这样.我该如何修复错误?
人们可以指向我使用Python进行lexing,解析和标记的资源吗?
我的一个开源项目(做一个小的黑客热线),并希望做的是代码的一些变化LEXES,分析和tokenises进入它的命令.由于它是真正的工作代码,它相当复杂,有点难以解决.
我之前没有处理过lex/parse/tokenise的代码,所以我认为一种方法是在这个方面完成一两个教程.我希望学到足够的知识来浏览我真正想要改变的代码.那里有什么合适的吗?(理想情况下,它可以在一个下午完成而无需先购买和阅读龙书......)
编辑:(2008年10月7日)以下所有答案都没有给出我想要的东西.有了它们,我可以从头开始生成解析器,但我想学习如何从头开始编写自己的基本解析器,而不是使用lex和yacc或类似的工具.完成后,我可以更好地理解现有代码.
那么有人可以指向我一个教程,我可以从头开始构建一个基本的解析器,只使用python?
我想使用flex/bison解析器创建一个read-eval-print循环.麻烦的是,flex生成的词法分析器需要输入FILE*类型,我希望它是char*.反正有没有这样做?
一个建议是创建一个管道,将其提供给字符串并打开文件描述符并发送给词法分析器.这很简单,但感觉很复杂,而且与平台无关.有没有更好的办法?
我有Lex和YACC文件来解析我的文件(.l文件和.y文件).
如何编译这些文件以及如何.c在Windows平台上为它们创建等效文件?
我在SENSE做项目,因为我必须安装Lex和Yacc.如果你能帮我解决如何在Ubuntu中安装.我对这个领域很新.你能帮帮我吗?任何研究Lex和Yacc基础的网站
有什么好的工具可以快速开始解析和分析C/C++代码?
特别是,我正在寻找处理C/C++预处理器和语言的开源工具.优选地,这些工具将使用lex/yacc(或flex/bison)用于语法,并且不会太复杂.他们应该处理最新的ANSI C/C++定义.
这是我到目前为止所发现的,但没有详细查看它们(想法?):
我希望将此作为将C/C++源代码翻译成新玩具语言的起点.
谢谢!-Matt
(已添加2/9):只是澄清:除了C/C++代码本身之外,我还希望从预处理器中提取语义信息.我不希望"#define foo 42"消失在整数"42"中,但仍然附加到名称"foo".不幸的是,这排除了几个首先运行预处理器并且只提供C/C++解析树的解决方案.
我正在尝试学习flex,并希望匹配字符串文字.我的代码目前看起来像:
"\""([^\n\"\\]*(\\[.\n])*)*"\"" {/*matches string-literal*/;}
Run Code Online (Sandbox Code Playgroud)
我一直在努力与变化一个小时左右,并不能让它按照应有的方式工作.我基本上希望匹配一个不能包含换行符的字符串文字(除非它被转义)并支持转义字符.
我可能只是写一个糟糕的正则表达式或一个与flex不兼容的表达式.请指教!
使用Emacs编辑lex或yacc文件是一件麻烦事:如果我使用C模式,缩进就会出错,如果我不使用C模式,我就不能使用缩进.有没有人有技巧,方法或编辑模式来解决它?
在PHP中是否有Lex和Yacc的实现?
如果没有,任何人都可以建议一个词法分析器和解析器生成器(即Lex和Yacc之类的东西)来创建PHP代码.我不太担心生成的解析器的性能.
我厌倦了使用正则表达式解析真正不应该用正则表达式解析的东西......