首页 / 知识
关于lex:解析,我在哪里可以了解到它
2023-04-13 14:26:00
Parsing, where can I learn about it我已经完成了将一种语言"翻译"为另一种语言的工作。 对于使用正则表达式的逐行方法而言,源代码太灵活(复杂)。 在哪里可以了解有关词法分析和解析器的更多信息? 如果您想获得关于该主题的"情感",请拿起《龙书》的副本。通常是编译器设计课程中的文字。它一定会满足您的"学习更多有关词法分析和解析器的知识"以及许多其他有趣的东西! IMH(umble)O,为自己省下一条胳膊和/或一条腿,然后购买旧版-它将满足您的信息需求。 尝试ANLTR:
也有一本书。
尼克劳斯·沃思(Niklaus Wirth)的著作"编译器构造"(免费提供PDF) 很多人推荐书籍。对于许多人而言,这些在具有任务和截止日期等的结构化环境中更为有用。即使没有,以不同的方式呈现材料也可以极大地帮助您。
(a)您是否考虑过学习CS课程的学校? 我最近一直在使用PLY,后者是python中lex和yacc的实现。入门非常容易,并且文档中有一些简单的示例。 解析很快就会成为一个非常技术性的话题,并且您会发现,如果使用的是诸如PLY之类的解析器构建器,则可能不需要了解解析算法的所有详细信息。
解析技术-实用指南 本书(以PDF格式免费提供)全面概述了各种解析技术/算法。如果您真的想了解不同的解析算法,那么此IMO比Dragon Book更好(因为Parsing Techniques完全专注于解析,而Dragon Book仅将解析作为编译器构建过程的一部分,尽管很重要),因此它是更好的参考。 。 在(相当)几个编译器课程之后,我同时使用了Dragon Book和C&T。我认为C&T在使编译器结构易于消化方面做得更好。不要无视《龙书》,但我认为C&T是一本实用得多的书。 另外,如果您喜欢用Java编写,我建议使用JFlex和BYACC / J满足您的词法分析需求。 我发现此站点很有帮助: Lex和YACC底漆/方法 我第一次使用lex / yacc是一个相对简单的项目。本教程是我真正需要的。以后,当我处理更复杂的项目时,对本教程的熟悉程度和一个简单的项目使我可以建立一些更奇特的东西。 还要考虑的另一本教科书是《编程语言语用学》。我喜欢它而不是《龙书》,但是喜欢YMMV。 如果您使用Perl,则要考虑的另一个工具是Parse :: RecDescent。 如果您只需要进行一次翻译,而对编译器技术一无所知,那么我建议您尽可能简单地进行一些翻译,然后手动进行修复。是的,这是很多工作。但是,这比学习一门复杂的主题并为一项工作编写正确的解决方案要少。话虽如此,您仍然应该学习该主题,但不要让它不成为完成当前项目的障碍。 Lexing / Parsing + typecheck +代码生成是一个很棒的CS练习,我会推荐给任何想要扎实基础的人,所以我全都支持Dragon Book flex和bison是新的lex和yacc。 BNF的语法经常因为有点晦涩而被嘲笑。为此,有些人搬到了ANTLR和Ragel。 如果您执行的翻译不多,则可以使用Perl或Ruby使用多行正则表达式来完成一次翻译。为现有语言编写兼容的BNF语法并不是一件容易的事。 另一方面,如果可以将任何给定语言的.l和.y文件用作开源文件,则完全有可能利用它们。然后,您可以从现有的分析树构造新代码。 如果您更喜欢基于Java的工具,则Java Compiler Compiler JavaCC是不错的解析器/扫描器。它是由配置文件驱动的,并将生成可包含在程序中的Java代码。我已经有两年没有使用它了,所以我不确定当前版本如何。您可以在这里找到更多信息:https://javacc.dev.java.net/ |
最新内容
相关内容
python的调用绑定方法和非绑定方法
python的调用绑定方法和非绑定方法,代码,方法,实例,第一,培训,时计,奇数,偶数,参数,定义,在Python中,如果用实例去调用方法,这种限制就被称为PyPython网络编程调用接收数据的三种
Python网络编程调用接收数据的三种方法,数据,代码,基础,通用,通讯,服务,网络,培训,方法,报文,最近在使用python进行网络编程开发一个通用的tc数据科学领域Python比R语言更好
数据科学领域Python比R语言更好,数据,公司,工具,时间,项目,工作,庞大,受益,系统,代码,经常有学员问我们,在数据科学领域里,到底是该选Python呢,Python 3.6 中针对文件系统的神奇
Python 3.6 中针对文件系统的神奇方法,数字,代码,数据,标准,信息,培训,首次,工作,文件名,常数,Python3.6首次发布于2016年,尽管它已经发布了很Python 之模块重载的五种方法
Python 之模块重载的五种方法,环境,培训,方法,模块,文件夹,例子,下面,内容,语句,请看,python环境准备新建一个foo文件夹,其下包含一个bar.py文Python语言自带的数据结构有哪些
Python语言自带的数据结构有哪些,异常,数字,数据,元素,序列,培训,位置,名称,分析,括号,Python作为一种脚本语言,其要求强制缩进,使其易读、美观提升Python数据分析能力的方法
提升Python数据分析能力的方法,分析,数据,工具,代码,时间,环境,报告,信息,培训,标准,1.Pandas分析包这个工具的好处是显而易见的。下面的动画Python中字典合并的实现方法
Python中字典合并的实现方法,培训,结果,以上,版本,字典,方法,函数,下面,背景,发现,TableofContents背景Methon1:适用于Python3.5及以上版本呢M学习python的三种方法
学习python的三种方法,项目,代码,公司,时间,工程,培训,中级,初级,资料,第一,Python的用途十分广泛,不同的程序员将其用于不用的领域,不同的程序Python语言的应用领域主要有哪些
Python语言的应用领域主要有哪些,数据,分析,网络,代码,工作,项目,人工智能,金融,量化交易,系统,应用领域1:人工智能Python语言是目前公认学习了解Python语言中的时间处理
了解Python语言中的时间处理,时间,信息,代码,培训,单位,文本,语言,结果,星期,格式,Python语言对于时间的处理继承了C语言的传统,时间值是以秒Python变量的类型(弱类型语言)
Python变量的类型(弱类型语言),检测,代码,数据,培训,类型,变量,语言,赋值,数字型,字符串,在强类型的编程语言中,定义变量时要指明变量的类型,而