目录
1 选题的背景和意义
1.1 选题的背景
1.2 国内外研究现状及发展趋势
1.2.1python发展现状
1.2.2 Tex文件处理的现状
2 研究的基本内容
2.1 基本框架
2.2 研究的重点和难点
1. 学习Python编程,掌握pyparsing语法.
2.3 拟解决的关键问题
1. 对语法解析和pyparsing的功能作一个简要描述。
4 预期成果
2、资料收集准备阶段
3、 论文写作及答辩阶段
12月中旬-2016年5月下旬
参考文献
1 选题的背景和意义
1.1 选题的背景
TEX(TeX)是由著名的计算机科学家Donald E.Knuth(高德纳)发明的排版系统,利用TeX可以很容易地生成高质量的dvi文件,打印输出。它在学术界十分流行,特别是数学、物理学和计算机科学界。TeX被普遍认为是一个很好的排版工具,特别是在处理复杂的数学公式时。利用诸如是LaTeX等终端软件,TeX就能够排版出精美的文本。利用dvips,dvipdfmx,pdfLaTeX等程序生成pdf,ps,文件,LaTeX2html生成html文件。它在学术界十分流行,特别是数学、物理学和计算机科学界。TeX提供了一套功能强大并且十分灵活的排版语言,它多达900多条指令,并且TeX有宏功能,用户可以不断地定义自己适用的新命令来扩展TeX系统的功能。TeX的出现给印刷出版业带来了一场革命,利用电子计算机及各种辅助设备,可以完成从文稿、图表的录入、编辑、修改、组版,直至得到各种不同用途、不同质量的输出结果。利用TeX可以减轻劳动强度,缩短出版周期。TeX系统是公认的数学公式排得最好的系统。美国数学学会(AMS)鼓励数学家们使用TeX系统向它的期刊投稿。世界上许多一流的出版社如Kluwer、Addison-Wesley、牛津大学出版社等也利用TeX系统出版书籍和期刊。因此tex文件包含了大量的原始信息,并具有确定的语法。
Python是由Guido van Rossum在八十年代末和九十年代初,在荷兰国家数学和计算机科学研究所设计出来的。它是一种面向对象、解释型计算机程序设计语言。Python的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。Pyparsing是纯python编写的,易于使用。利用pyparsing通过语法分析,可以提取tex文件的主要内容。因此要用pyparsing设计出针对tex文件的解析语法。这对学术研究非常有价值。
1.2 国内外研究现状及发展趋势
1.2.1python发展现状
Python是一种解释型、面向对象、动态语义、语法优美的脚本语言,自从1989年由Guido Van Rossum设计出来后,经过十余年的发展,已经同Tcl、Perl一起,成为目前应用最广的三种跨平台脚本语言。Python支持现有的各种主流操作系统,如Microsoft、Windows、Solaris、Mac OS、Linux等,甚至包括Palm OS这样的嵌入式环境。它的源程序和二进制代码可以免费获得。由于其强大灵活的功能,简洁优美的语法和源代码免费开放,Python被著名国际自由软件项目KDE计划选定为标准系统脚本语言,微软公司也宣布将在.NET环境中提供对Python语言的支持。
与同为脚本语言的Tcl、Perl相比,Python的特点有:
(1)面向对象:Python提供类,类的继承,类的私有和公有属性,例外处理等完善的对面向对象方法的支持。
(2)简单易学:Python是一种代表简单主义思想的语言。阅读一个良好的Python程序就感觉像是在读英语一样。它使你能够专注于解决问题而不是去搞明白语言本身。Python极其容易上手,因为Python有极其简单的说明文档。
(3)速度快:Python的底层是用C语言写的,很多标准库和第三方库也都是用C写的,运行速度非常快。
(4)免费、开源:Python是FLOSS(自由/开放源码软件)之一。使用者可以自由地发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。FLOSS是基于一个团体分享知识的概念。
(5)解释性:一个用编译性语言比如C或C++写的程序可以从源文件(即C或C++语言)转换到一个你的计算机使用的语言(二进制代码,即0和1)。这个过程通过编译器和不同的标记、选项完成。
运行程序的时候,连接/转载器软件把你的程序从硬盘复制到内存中并且运行。而Python语言写的程序不需要编译成二进制代码。你可以直接从源代码运行程序。
在计算机内部,Python解释器把源代码转换成称为字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行。这使得使用Python更加简单。也使得Python程序更加易于移植。
(6)可扩展性:如果需要一段关键代码运行得更快或者希望某些算法不公开,可以部分程序用C或C++编写,然后在Python程序中使用它们。