我过去曾经使用过lex和yacc(更常见的是bison)用于各种项目,通常是翻译(例如EDIF的子集流入EDA应用程序).另外,我必须支持基于几十年前的lex/yacc语法的代码.所以我知道我的工具,虽然我不是专家.
我在过去的各种论坛上看过关于Antlr的积极评论,我很好奇我可能会缺少什么.因此,如果您同时使用了两者,请告诉我Antlr中哪些更好或更先进.我目前的限制是我在C++商店工作,我们发布的任何产品都不包含Java,因此生成的解析器必须遵循该规则.
Flex&Lex和Yacc&Bison有什么区别.我疯狂地搜索了互联网,但没有找到任何可靠的答案.
我可以在Ubuntu上安装纯Lex和Yacc,或者我只能安装flex和bison.我很迷惑.
如果Lex不是免费的,为什么我要在我的Ubuntu发行版上安装它?
lex --version
lex 2.5.35
Run Code Online (Sandbox Code Playgroud)所以这是一个微不足道的问题,但是我无法回答这个问题,也许答案会告诉我一些关于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)
将此与常规赋值运算符进行比较: …
我想使用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++解析树的解决方案.
使用Emacs编辑lex或yacc文件是一件麻烦事:如果我使用C模式,缩进就会出错,如果我不使用C模式,我就不能使用缩进.有没有人有技巧,方法或编辑模式来解决它?
有没有一种简单的方法将Bison/Flex/Yacc集成到XCode中?
我想编写自己的语言进行解析,它与我的ObjC对象进行交互.
但这些工具只会将STDIN作为输入,而只会生成C代码而不是ObjC.它们基本上只对命令行工具有用,否则每次重新生成解析器代码时都需要大量的痛苦来覆盖输出.
在PHP中是否有Lex和Yacc的实现?
如果没有,任何人都可以建议一个词法分析器和解析器生成器(即Lex和Yacc之类的东西)来创建PHP代码.我不太担心生成的解析器的性能.
我厌倦了使用正则表达式解析真正不应该用正则表达式解析的东西......