论文部分内容阅读
编译原理和技术是计算机科学中最为重要的理论技术之一。构造编译器涉及到形式化方法、自动机理论、语法分析方法等理论方法。这些理论和技术广泛应用于计算机技术的各个领域,例如各种程序设计语言的编译器、办公自动化软件、数据库管理系统和领域专用语言的编译器等。因此对编译技术的研究不仅有学术价值,更具有非常高的工程应用价值。作为编译技术中最复杂的技术之一,语法分析技术目前主要分为两种:分别是自顶向下分析技术和自底向上分析技术。其中自底向上分析技术中的LALR(1)(lookahead-LR(1))分析法由于具有对语法限制少、分析速度快、发现错误准确等优点被广泛应用。然而实现一个基于LALR(1)分析法的语法分析器并不容易,原因在于其语法分析表的规模十分庞大,难以通过手工方式构造。因此需要一个能够自动生成LALR(1)语法分析器的系统,利用它用户只需要输入目标语言的语法规则,就能够生成目标语法分析器的源代码。本文立足对LALR(1)语法分析器自动生成技术的探索,使用C#作为开发语言,以Visual Studio2008为软件开发平台,编程实现了一款LALR(1)语法分析器自动生成系统LRGS(LALR(1) Generator System),并设计了LRGS支持的程序设计语言LRGL(LALR(1) Generation Language)。LRGS提供了可视化的集成开发环境,用户通过新建工程,编写LRGL源程序,编译源程序,这几个步骤来获取目标语言的语法分析器的C++源代码。当用户编写的源程序出错时,可以在LRGS的界面中查看错误原因。用户还可以在界面中查看生成的语法分析表和LALR(1)项目集规范族,从而方便对语法分析器进行调试。总之,将LRGS应用于编译器的开发过程中,能极大地降低开发难度,提高开发效率和产品质量。