在软件的基础,我为开发使用的yacc,我不需要处理的signficant量。有些时候,我认为它会在了解了一些问题,我觉得不过是有益的大部分时间,我可以用我的YACC完全不知道跑了。

我的问题是没有足够多的新项目,在那里,仍然使用YACC来保证的时候,我需要学习吗?

编辑:鉴于反应主要是有利于学习的Yacc的,是那里,你会建议在YACC类似的语言

有帮助吗?

解决方案

是,这些工具是值得学习的,如果你需要创建或修改解析文法代码。

有关多年用于生成代码来解析语法是YACC或事实上的工具其GNU表妹,野牛。

最近我听说有一对夫妇的块新的孩子,但原理是一样的:你的格式,或多或少在巴科斯范式(的 BNF )和yacc /野牛/不管生成一些代码对你来说将是非常乏味的写用手

此外,语法背后的原理是学习,即使你并不需要这样的代码直接工作是非常有用的。我还没有跟解析器很多,因为在大学承担编译器设计的课程,但了解运行时栈,前瞻解析器,表达评估工作,和很多其他相关的东西使我非常编写和调试我的代码有效。

编辑:鉴于对其他工具的后续问题,当然的Yacc /野牛是最好的C / C ++项目,因为它们生成C代码。还有其他语言的类似工具。并非所有的语法是等价的,有些解析器发电机只能神交的一定的复杂语法。所以,你可能需要找到一个工具,可以分析你的语法。请参阅 http://en.wikipedia.org/wiki/Comparison_of_parser_generators

其他提示

我不知道新的项目中使用它,但我参与使用lex和yacc处理配置文件的七种不同的维修工作。

没有XML对我来说,没有-SIR-EE: - 。)

使用法/ yacc的

解决方案是一个升压从key=val线旧的配置文件,因为它们允许更好分层结构,如:

server = "mercury" {
    ip = "172.3.5.13"
    gateway = "172.3.5.1"
}
server = "venus" {
    ip = "172.3.5.21"
    gateway = "172.3.5.1"
}

和,是的,我知道你可以做到这一点XML,但这些主要是用C编写的传统应用程序和新的(非Java)的工作,说实话,我可能会使用的lex / yacc的为好。

这是因为我喜欢按时,按预算交付软件,而不是提供最大的新型重型的技术 - 我的客户不会支付我的教育,他们首先想要的结果,我已经在专家的lex / yacc的并且拥有所有的模板代码快速做。

一般的经验法则:代码持续很长的时间,所以在该代码最后一个长的时间所使用的技术,太。这将需要时间来取代你提到的代码库大量的(它花了15年时间构建它... ...),这又意味着它仍然会在5,10,或更多年左右。 (甚至还有一个机会,有人谁读这个答案将结束它的工作!)

拇指的另一个规则:如果一个通用的技术是不够,你已经遇到它普遍,它可能不够普遍,你应该熟悉它,因为你会再次看到它的一天。谁知道:通过它熟悉自己,也许你增加了一个有用的工具,工具箱......

Yacc的是这些技术中的一个:你可能打算再次遇到它,它并不难,你会学到的原则应用到整个家庭的解析器构造的

的PEG 是新的辣味,但仍有使用YACC一吨的项目或工具YACC比更现代。我不赞成一个新项目,选择使用YACC,但现有项目移植到一个更现代的工具可能是没有意义。这使得具有粗糙熟悉YACC一个有用的技能。

如果你用的解析器发电机的话题完全不熟悉我会鼓励你了解一个,任何一个。许多概念,它们之间的可移植性。此外,它拥有在带一个有用的工具:一旦你知道了,你就会明白他们怎么比正则表达式重手写解析器往往更胜一筹。如果你已经熟悉解析器的话题,我就不会担心。如果当你需要为了完成某项工作,你会学到YACC。

我在使用Yacc的项目。没有新的代码 - 但被他们新的,他们还是会用的Yacc或近亲(野牛,Byacc,...)

是的,我认为这是值得,如果你用C的工作学习。

也可以考虑学习ANTLR,或其他更现代的解析器生成。但是Yacc的知识会站在你非常有利 - 它会帮助你学习任何其他类似的工具太多,因为很多基本理论是相似的。

我不知道的yacc /野牛具体地,但我已经使用ANTLR,杯,jlex和JavaCC的。我认为他们只会是accademic重要性,但事实证明我们需要一个特定领域的语言,这给了我们比一些“简单”(基于正则表达式)一个好得多的解决方案解析器在那里。维护可能是在许多环境问题,但 - 因为大多数程序员这几天不会有分析工具的任何经验

我还没有把它与其他解析系统比较的机会,但我可以肯定地推荐 ANTLR 基于我自己的经验,并与它的大和活性的用户群。

有关ANTLR另外加点是 ANTLRWorks:本ANTLR GUI开发环境这是一个很大的帮助,同时开发和调试语法。我还没有看到这是由这样的IDE支持的另一解析系统。

我们在我公司产品运输编写新代码YACC。是的,这东西仍在使用。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top