标签: lex

Flex/Lex和Yacc/Bison有什么区别?

Flex&Lex和Yacc&Bison有什么区别.我疯狂地搜索了互联网,但没有找到任何可靠的答案.

我可以在Ubuntu上安装纯Lex和Yacc,或者我只能安装flex和bison.我很迷惑.

  • Lex或Yacc仍然由某人维护吗?
  • 他们都是免费的吗?
  • 如果Lex不是免费的,为什么我要在我的Ubuntu发行版上安装它?

    lex --version
    lex 2.5.35
    
    Run Code Online (Sandbox Code Playgroud)

parsing yacc lex bison flex-lexer

117
推荐指数
4
解决办法
4万
查看次数

错误:未知类型名称'bool'

我下载了源代码并想编译扫描程序文件.它会产生以下错误:

[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,我不知道为什么会这样.我该如何修复错误?

c gcc lex

69
推荐指数
4
解决办法
17万
查看次数

python中lexing,tokenising和parsing的资源

人们可以指向我使用Python进行lexing,解析和标记的资源吗?

我的一个开源项目(做一个小的黑客热线),并希望做的是代码的一些变化LEXES,分析和tokenises进入它的命令.由于它是真正的工作代码,它相当复杂,有点难以解决.

我之前没有处理过lex/parse/tokenise的代码,所以我认为一种方法是在这个方面完成一两个教程.我希望学到足够的知识来浏览我真正想要改变的代码.那里有什么合适的吗?(理想情况下,它可以在一个下午完成而无需先购买和阅读龙书......)

编辑:(2008年10月7日)以下所有答案都没有给出我想要的东西.有了它们,我可以从头开始生成解析器,但我想学习如何从头开始编写自己的基本解析器,而不是使用lex和yacc或类似的工具.完成后,我可以更好地理解现有代码.

那么有人可以指向我一个教程,我可以从头开始构建一个基本的解析器,只使用python?

python resources parsing lex

57
推荐指数
6
解决办法
3万
查看次数

字符串输入到flex lexer

我想使用flex/bison解析器创建一个read-eval-print循环.麻烦的是,flex生成的词法分析器需要输入FILE*类型,我希望它是char*.反正有没有这样做?

一个建议是创建一个管道,将其提供给字符串并打开文件描述符并发送给词法分析器.这很简单,但感觉很复杂,而且与平台无关.有没有更好的办法?

c yacc lex bison flex-lexer

52
推荐指数
5
解决办法
3万
查看次数

如何在Windows上编译LEX/YACC文件?

我有LexYACC文件来解析我的文件(.l文件和.y文件).

如何编译这些文件以及如何.c在Windows平台上为它们创建等效文件?

windows yacc lex bison flex-lexer

51
推荐指数
5
解决办法
13万
查看次数

如何在Ubuntu中安装Lex和Yacc?

我在SENSE做项目,因为我必须安装Lex和Yacc.如果你能帮我解决如何在Ubuntu中安装.我对这个领域很新.你能帮帮我吗?任何研究Lex和Yacc基础的网站

yacc lex

50
推荐指数
1
解决办法
15万
查看次数

用于创建C/C++解析器/分析器的好工具

有什么好的工具可以快速开始解析和分析C/C++代码?

特别是,我正在寻找处理C/C++预处理器和语言的开源工具.优选地,这些工具将使用lex/yacc(或flex/bison)用于语法,并且不会太复杂.他们应该处理最新的ANSI C/C++定义.

这是我到目前为止所发现的,但没有详细查看它们(想法?):

  • CScope - 老式C分析仪.但是,似乎没有做完整的解析.被描述为寻找C函数的美化'grep'.
  • GCC - 每个人最喜欢的开源编译器.非常复杂,但似乎做到了这一切.有一个相关项目用于创建名为GEM的 GCC扩展,但自GCC 4.1(2006)以来尚未更新.
  • PUMA - PUre MAnipulator.(来自页面:"这个项目的目的是提供一个用于分析和操作C/C++源代码的类库.为此,PUMA提供了用于扫描,解析和操作C/C++源代码的类.") .这看起来很有希望,但自2001年以来一直没有更新.显然PUMA已被纳入AspectC++,但即使这个项目自2006年以来也没有更新.
  • 各种C/C++原始语法.你可以得到c-c ++ - grammars-1.2.tar.gz,但自1997年以来一直没有得到维护.谷歌的一些搜索引出了其他可以作为起点的基本lex/yacc语法.
  • 还有其他人?

我希望将此作为将C/C++源代码翻译成新玩具语言的起点.

谢谢!-Matt

(已添加2/9):只是澄清:除了C/C++代码本身之外,我还希望从预处理器中提取语义信息.我不希望"#define foo 42"消失在整数"42"中,但仍然附加到名称"foo".不幸的是,这排除了几个首先运行预处理器并且只提供C/C++解析树的解决方案.

c c++ parsing yacc lex

49
推荐指数
8
解决办法
6万
查看次数

flex/lex中字符串文字的正则表达式

我正在尝试学习flex,并希望匹配字符串文字.我的代码目前看起来像:

"\""([^\n\"\\]*(\\[.\n])*)*"\""        {/*matches string-literal*/;}
Run Code Online (Sandbox Code Playgroud)

我一直在努力与变化一个小时左右,并不能让它按照应有的方式工作.我基本上希望匹配一个不能包含换行符的字符串文字(除非它被转义)并支持转义字符.

我可能只是写一个糟糕的正则表达式或一个与flex不兼容的表达式.请指教!

c regex lex string-literals flex-lexer

49
推荐指数
3
解决办法
8万
查看次数

lex/flex/yacc/bison文件有一个很好的Emacs模式或方法吗?

使用Emacs编辑lex或yacc文件是一件麻烦事:如果我使用C模式,缩进就会出错,如果我不使用C模式,我就不能使用缩进.有没有人有技巧,方法或编辑模式来解决它?

emacs yacc lex

34
推荐指数
2
解决办法
7480
查看次数

Lex和Yacc在PHP中

在PHP中是否有Lex和Yacc的实现?

如果没有,任何人都可以建议一个词法分析器和解析器生成器(即Lex和Yacc之类的东西)来创建PHP代码.我不太担心生成的解析器的性能.

我厌倦了使用正则表达式解析真正不应该用正则表达式解析的东西......

php yacc lex parser-generator

30
推荐指数
1
解决办法
1万
查看次数

标签 统计

lex ×10

yacc ×7

c ×4

flex-lexer ×4

bison ×3

parsing ×3

c++ ×1

emacs ×1

gcc ×1

parser-generator ×1

php ×1

python ×1

regex ×1

resources ×1

string-literals ×1

windows ×1