当前位置:  开发笔记 > 开发工具 > 正文

哪个解析器生成器教我的学生?

如何解决《哪个解析器生成器教我的学生?》经验,为你挑选了5个好方法。

我正在(与其他人一起)为没有CS背景的IT专业人员教授计算机科学的相对入门课程.自从我开发了自动机和语法的课程资料以来,我还负责编写有关编译器和编译器构造的知识.

多年前,当我在大学学习编译时,我们所有的例子都来自Lex和Yacc.这些仍然广泛使用吗?有没有更常用于Java的东西?学生精通C和Java,但从未使用过解析器生成器.

任何关于教什么的提示都将不胜感激



1> Doug Currie..:

Antlr被广泛使用,文档齐全,免费.它受Ant支持,可以将Java作为许多其他语言的目标.



2> Walter Brigh..:

我不使用词法分析器和解析器生成器.它们非常简单,可以手工生成,是编写器编写的最简单的部分.此外,当你手工制作它们时,你可以让它们非常快.


是的,我已经手工完成了任意前瞻和回溯的解析器和词法分析器,甚至还有一个用于C++的解析器和词法分析器!(由于C++与预处理器的交互,基于编译器开关存在或不存在的令牌等,C++有点难度)
你显然从未编写过复杂的解析器/词法分析器......如果它们变得复杂,你真的不想手工维护它们.
更多的死灵法术......我喜欢年轻人的傲慢.Jorn,如果你还有任何关注范围...... www.digitalmars.com

3> MattyT..:

遗憾的是,你的学生并不精通C++.一旦我遇到了一个富有EBNF风格的DSL概念的Spirit库,我就离开了Antlr,Lex和Yacc!这是很多更灵活有旁边的代码来描述语法.

辉煌的图书馆,虽然有一个公认的非平凡的学习曲线.

但是,如果没有C++,Antlr可能是你最好的选择.


在我们大学(我还在学习)中,我们使用Boost :: Spririt作为教授解析和高级C++的基础.它对那些有动力学习的人来说非常有效,但当然,对于那些顽皮的学生来说,这似乎太过深刻了

4> OJ...:

Lex和Yacc仍在使用中.F#的最新语言之一有它自己的版本(fslex,fsyacc - 请看这里的例子.)所以我认为教它们仍然是相关的.



5> Norman Ramse..:

Yacc和所有其他LALR(1)解析器可以追溯到机器资源稀缺的时代,并且需要花费大量时间来设计语法,以便您可以在具有64K RAM的PDP-11上运行解析器.今天,使用可怕的人机界面和可以使用的非常有限的语法集教授像yacc这样的工具是没有意义的.

我建议使用其中一种基于PEG的解析器,例如Rats !,或者由George Necula和Scott McPeak(感谢夸克)开发的GLR解析器Elkhound.对不起,我不能推荐一个特定的Java工具,但是老鼠!对C有好处

ANTLR还可以,但对我来说太复杂了.

推荐阅读
U友50081205_653
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有