标签: yacc

Antlr的优势(相比之下,lex/yacc/bison)

我过去曾经使用过lex和yacc(更常见的是bison)用于各种项目,通常是翻译(例如EDIF的子集流入EDA应用程序).另外,我必须支持基于几十年前的lex/yacc语法的代码.所以我知道我的工具,虽然我不是专家.

我在过去的各种论坛上看过关于Antlr的积极评论,我很好奇我可能会缺少什么.因此,如果您同时使用了两者,请告诉我Antlr中哪些更好或更先进.我目前的限制是我在C++商店工作,我们发布的任何产品都不包含Java,因此生成的解析器必须遵循该规则.

c++ yacc antlr bison

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

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万
查看次数

R如何解析` - >`,右赋值运算符?

所以这是一个微不足道的问题,但是我无法回答这个问题,也许答案会告诉我一些关于R如何工作的更多细节.

标题说明了一切:R如何解析->,模糊的右侧赋值函数?

我常用的技巧是失败:

`->`
Run Code Online (Sandbox Code Playgroud)

错误:->找不到对象

getAnywhere("->")
Run Code Online (Sandbox Code Playgroud)

没有->找到任何对象

我们不能直接称它为:

`->`(3,x)
Run Code Online (Sandbox Code Playgroud)

错误:无法找到功能 "->"

但当然,它有效:

(3 -> x) #assigns the value 3 to the name x
# [1] 3
Run Code Online (Sandbox Code Playgroud)

似乎R知道如何简单地反转论点,但我认为上述方法肯定会破解这种情况:

pryr::ast(3 -> y)
# \- ()
#   \- `<- #R interpreter clearly flipped things around
#   \- `y  #  (by the time it gets to `ast`, at least...)
#   \-  3  #  (note: this is because `substitute(3 -> y)` 
#          #   already returns the reversed version)
Run Code Online (Sandbox Code Playgroud)

将此与常规赋值运算符进行比较: …

yacc r

76
推荐指数
1
解决办法
1641
查看次数

字符串输入到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万
查看次数

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

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

emacs yacc lex

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

将Bison/Flex/Yacc集成到XCode中

有没有一种简单的方法将Bison/Flex/Yacc集成到XCode中?

我想编写自己的语言进行解析,它与我的ObjC对象进行交互.

但这些工具只会将STDIN作为输入,而只会生成C代码而不是ObjC.它们基本上只对命令行工具有用,否则每次重新生成解析器代码时都需要大量的痛苦来覆盖输出.

xcode parsing yacc objective-c bison

31
推荐指数
3
解决办法
8330
查看次数

Lex和Yacc在PHP中

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

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

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

php yacc lex parser-generator

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

标签 统计

yacc ×10

lex ×7

bison ×5

flex-lexer ×3

parsing ×3

c ×2

c++ ×2

antlr ×1

emacs ×1

objective-c ×1

parser-generator ×1

php ×1

r ×1

windows ×1

xcode ×1