(教育技术学专业论文)基于ide模式的java实验平台研究.pdf_第1页
(教育技术学专业论文)基于ide模式的java实验平台研究.pdf_第2页
(教育技术学专业论文)基于ide模式的java实验平台研究.pdf_第3页
(教育技术学专业论文)基于ide模式的java实验平台研究.pdf_第4页
(教育技术学专业论文)基于ide模式的java实验平台研究.pdf_第5页
已阅读5页,还剩59页未读 继续免费阅读

(教育技术学专业论文)基于ide模式的java实验平台研究.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

天津师范大学硕士论文 中文摘要 基于ide 模式的j a v a 实验平台研究 张晶 ( 天津师范大学) 摘要:随着计算机技术的飞速发展,计算机语言也在不断更新。集成开发环 境( i d e ) 作为一种软件开发工具也不断地智能化、专业化。在教育领域中,过于 依赖智能化的集成开发环境使初学者忽视了对计算机语言的基础学习,同时,过 于专业化的集成开发环境也增加了初学者的学习负担。本文介绍的基于i d e 模 式的j a v a 实验平台就在智能化和基础学习中找到了一个平衡点。不仅如此,该 平台还利用了计算机网络技术,实现了在线交流与编程监控功能,方便了在计算 机语言实验中教师与学生的互动。提高了教学效率和教学效果。 关键字:集成开发环境( i d e ) ,词法分析,即时编译,b n f ,事件响应 天津师范大学硕士论文英文摘要 k e s e a r c n e so nj a v a 匕x p e n m e n tp i a t t o r m r 一 , b a s e do nld em o d e z h a n g j i n g ( t i a n j i nn o n n a iu n i v e r s i t y ) a b s t r a c t :w i t ht h ed e v e l o p m e n to ft h ec o m p u t e rt e c h n o n l o g y ,c o m p u t e r l a n g u a g ei su p d a t e dc o n s t a n t i y :i n t e g r a t e dd e v e i o pe n v l r d n m e n t ( i d e ) ,w h i c h i su s e da sat o o if o rs o f t v v a r ee n g i n e e r i n g ,b e c o m e sm o r ei n t e i f e c t i v ea n d p r o f b s s i o n a i 1 ne d u c a t i o nf i e i d ,e c e s s i v ed e p e n d e n c eo ni n t e e c t i v ei c e m a k e st h eb e g i n n e ri g n o r et h eb a s i ci e a m i n go ft h ec o m p u t e ri a n g u a g ea n d e x c e s s i v es p e c i a i i t yo fi d ee n h a n c et h el e a m i n gb u r d e no ft h eb e g i n n er j a v a e x p e r m e n tp i a t f b r r t l ,w h i c hi si n tr i ) d u c e db yt h i st h e s i s ,f o u n da ne q u i l j b u m p o i n tb e t w e e nt 1 1 ei n t e i g e n c eo ft h ei d ea n db a s i cl e a m i n go ft h ec o m p u t e r i a n g u a g e a d di t l o n a y ;廿1 i sp l a t f b r r nt a k e st h ea d v a n t a g e0 ft h en e t w o r k t e c h n i q u ea n di m p i m e n t st h ef u n c t i o n 0 ft h eo n i i n ec o m m u n i c a t i o na n d p r o g r a mm o n i t o r 1 ti sc o n v e n i e n tf o rt h ei n t e r a c t i o nb e t w e e nt e a c h e ra n d s t u d e n t t h e r e f o r e ,t h ee d u c a t i o ne 仟c i e n c ya n de f f e c ti si n c r e a s e d k e y w o r d s :l d e ,p a r s e r ,i n s t a n t i yc o mp i e ,b nf ,e v e n t r e s p o n s e 附件2 独创性声明 本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的研究成果。尽我 所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写过的研 究成果,也不包含为获得墨鲞竖垫苤茔或其它教育机构的学位或证书而使用过的材料。 与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示了谢意。 学位论文版权使用授权书 本人完全了解天津师范大学有关保留、使用学位论文的规定,即:学校有权将学位论文 的全部或部分内容编入有关数据库进行检索,并采用影印、缩印或扫描等复制手段保存、汇 编以供查阅和借阅。同意学校向国家有关部门或机构送交论文的复印件和磁盘。 ( 保密的论文在解密后应遵守此规定) 签名:缢毖一导师签名:肇兰茎 日期:逊塑! 鱼 天津师范大学硕士论文 i d e 模式的j 曩住实验平台简介 第一章基于i d e 模式的j a v a 实验平台简介 1 1 集成开发环境简介 集成开发环境,简称i d e ( i n t e g r a t e dd e v e i o pe n v i r o n m e n t ) 是用于软件 开发的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面工 具。就是集成了代码编写功能、分析功能、编译功能、d e b u g 功能等一体化 的开发软件套。一个好的i d e 可以使软件开发的效率成倍提高。 较早期程序设计的各个阶段都要用不同的软件来进行处理,如先用字处 理软件编辑源程序,然后用编译程序进行编译,再用链接程序进行函数、模 块连接,开发者必须在几种软件间来回切换操作。调试器出现以后,开发者 还必须使用调试器对代码进行调试。频繁的编辑、保存、退出、编译、连接 和调试都需要开发者熟练地切换不同的软件,并且对于程序的运行状况始终 不能动态地把握。 随着计算机多任务操作系统的出现,集成开发环境作为一个集成了编 辑、编译、调试的桌面环境,在软件开发领域中成为主流,并不断向智能化、 专业化方向发展,大大提高了软件开发的效率。目前新型的集成开发环境还 拥有可视化的代码生成能力,能自动生成标准的界面和常用算法的代码,使 开发者的精力更多的关注于用户逻辑,而不是重复性较高的界面和算法的开 发,减少了重复性工作。 1 2 集成开发环境应用于教学 当前的j a v al d e 平台面向的是软件开发者,或者说是计算机语言的使 用者,而不是计算机语言的学习者,所以,计算机语言的初学者使用过于专 业的l d e 进行学习的话往往会感到不知所措。即使初学者初步掌握了部分 i d e 功能,i d e 的某些智能化功能,如代码生成和自动编译,也会使初学者 忽略了计算机语言的基础问题和细节问题,影响学习效果。这就需要一种适 用于教学领域的i d e 模式计算机语言实验平台,既能保留i d e 中适当的智能 技术,提高学习效率,又不至于过于专业,让初学者不用花大量时间在学习 使用集成开发环境上。 集成开发环境技术应用于教学领域而诞生的计算机语言实验平台是教 育技术研究的新领域。和软件开发领域一样,程序设计的教育领域也需要一 个专业的工具作为辅助,只不过二者专业性的侧重点有所不同,一个侧重便 于开发,一个侧重便于学习。因此可以参照目前发展比较成熟的i d e 技术, 加以适当改造,引入到程序设计的教育领域,开发出这样一个辅助工具。 本文介绍的基于i d e 模式的j a v a 实验平台( j s w a i i o w ) 就是这样一个作 品,它采用j a v a 语言开发,不仅保留了i d e 的许多功能,比如关键字高亮 显示、代码提示、动态纠错等功能,还增加了适用于教学的功能,比如利用 网络技术实现的教师监控、在线答疑等,方便了教师和学生互相沟通,提高 了教学效率,保证了教学效果。 本文把该实验平台分为几个重要模块,通过下面几章介绍其实现方法, 这些模块包括:智能化编辑器、j a v a d o c 速查器、j a v a 程序编译运行控制与 网络答疑与监控。其中智能化编辑器的实现需要很多底层功能的支持,因 天津师范大学硕士论文 实验平台的基本功能智能化编辑暑 此占用篇幅相对较多。各个模块的介绍重在讲述底层的实现原理,界面设计 部分不是本文的重点,不多赘述。 第二章实验平台的基本功能智能化的编辑器 编辑器本身不是一个很难实现的模块,一个w i n d o w s 的n o t e p a d 就可 以算的上一个功能相对较全的编辑器,但要实现一个适用于i d e 中的智能化 编辑器就不是那么简单了。一个适用于某种计算机语言的智能编辑器至少需 要包括这几个功能:关键字高亮显示,错误高亮提示,以及代码提示。下面 就逐个介绍这些功能的实现方法: 2 1 关键字高亮显示的实现 关键字高亮显示是i d e 编辑器所应该具备的最基本功能,指编辑器在编 辑某种计算机语言时,该计算机语言的关键字、运算符和各种常量或变量应 该在编辑器中以不同的颜色、字体显示出来,方便阅读者辨认,增加代码的 可读性,同时,最好具备一定的可升级性,以方便该编辑器编辑其他语言。 首先看一下图2 1 所示的效果图: 戮黝嬲缀瞄,o t + :捌磊 1p 2m a l n j 铡ai sc f e 礅e d 姆3 飘懒黼嗡, 3 4c r e 蕊8 a f0 门 配种j a 2 8 穸3 j7 9 :3 7c s 7 2 1 8 5丫 6p a c k a g e j e t 。e p : 7p u b cc i a s sm a i n 8 s t r n ga 葛”a b c d e “: 9 i n tb 昌2 : 10 i n tc 窖b + 3 : 1 1 图2 1 关键字高亮显示效果 由图2 1 可见,原本没有任何显示效果的代码在具备关键字高亮显示功 能的编辑器中变得漂亮且容易阅读,对于“,”中的注释部分,用绿 色斜体来表示;对于关键字,用加粗的蓝色字体表示;而对于字符串或者数 字常量,则用紫色来表示,整段代码赏心悦目。 实现关键字高亮显示的核心技术是面向对象的词法分析技术,词法分析 的结果配合j a v aj f c 的j t e x t p a n e 所支持的s t y i e d d o c u m e n t 类就可以面 向对象地在j t e x t p a n e 中实现关键字高亮显示功能。 2 1 1 面向对象的词法分析器的实现 2 天津师范大学硕士论文 实验平台的基本功鼯智能化编辑器 词法分析主要应用在编译器领域,其目的是把字符串以白空格( w h i t es p a c e ) 或者其他分隔符,按照某种语法规则拆分成一个个单独的“词”。而面向对象的 词法分析是指把词法分析的结果( “词 ) 抽象成某种对象,使其具备某些属性和 动作。在j s w a i l o w 中,“词 被抽象为t 0 k e n ,其结构如图2 2 和图2 3 : 。国b a s i c t o k e n 一ae n d i at e x t i b a s i c t o i 啦n ( p 0 5 i t i o n ,5 t r i n g ) p ke q u a i s ( o b j e c t ) g e t a b b r e v i a t e d t e x t ( h l t ) rg e t b e g i n o f f s e t ( ) | tg e t e n d o 阡5 e t ( ) fg e t e n d p 0 5 i t i o n ( ) | | rg e t l e n g t h ( ) g e t t e t ( ) 曩kh a s h c o d e ( ) ;kt 0 5 t r n g ( ) 图2 2b a s i c t 0 k e n 的结构 一 囝t o k e n i ,口d a t a ; | ae r r o r m e 5 s a g e : | 口t y p e | rt o l 啦n ( t o i 馆n t y p e jp o s t i o n j5 b l n g ) rt o k e n ( t o i e n t y p e jp o s t i o n j5 t r i n g jo b j e c t ) ke q u a l 5 ( 0 b j e c t ) 口e t a t t r i b u 七e 5 e t ( ) g e t d a t a ( ) g e t e r r o r m e s s a g e o g e t t y p e ( ) p 。5 e t d a t a ( o b j e c t ) 5 e t e r r o r m e s s a g e ( 5 t r - n g ) ;kt 0 5 t r i n g ( ) 图2 3t o k e n 的结构 b a s i c t 0 k e n 定义了作为一个“词”所需要的基本属性和动作: e n d 类型为p o s i t i o n ,是j a v a x s w j n g t e x c 包中的接口,描述了改词在文档 中的结束位置。 t e x t 类型为s t r i n g ,描述了该词的字符串内容。 s t r i n gg e t a b b r e b i a t e d t e ) ( t ( n t ) 该方法返回该词进行格式化后的内容,如果 3 天津师范大学硕士论文实验平台的基本功能智能化编辑嚣 词内容长度超过n t 参数,则中间的部分会被简写成“一,例如该词内容为 “t h i s i s a t e s t ”,而参数为8 ,则该方法返回“t h i s s t ”。 i n tg e t b e g i n o t ( ) 该方法返回该词在文档中的起始位置,计算方法为 e n d g e t o f f s e t ( h e ) ( t g e t l e n g t h ( ) 。 n tg e t e n d o 阡s e t ( ) 该方法返回该词在文档中的结束位置,e n d g e t o 肟e t ( ) 就 描述了该位置,不需经过特殊计算。 p o s i t i o ng e t e n d p o s i t i o n ( ) 该方法返回该词在文档中的结束位置的p o s 砌o n 对象,返回e n d 。 i n tg e t l e n g t h ( ) 返回该词的长度,即t e ) ( c g e t l e n g t h ( ) 的返回值 s t r i n gg e t t e 州) 返回该词的内容,即t e ) ( t 。 s t r i n gt o s t r i n g ( ) 返回改词的格式化字符串输出,可用于调试,返回。叮0 k e n r + g e t a b b r e v i a t e d 。r e x t ( 2 0 ) + ”r 。 t o k e n 定义了一个在编辑器中的词所具有的附加属性: d a t a 类型为o b j e c t ,设置该属性的目的是可以使改词附加更多功能,增加扩 展性,比如可以把某个简要介绍作为对象附加给该词。 、 e 几- o r m e s s a g e 类型为s t r i n g ,如果某文档在该词处出现语法错误,该属性 表示这个错误的具体信息。 t y p e 类型为t o k e n t y p e ,表示该词在某种语法规则中所表示的类型。在 j a v a t o k e n t y p e 这个枚举类中定义了符合j a v a 语法规则的所有词的类型。 a t t n b u t e s e tg e t a t t n b u t e s e t ( ) 该方法返回该词所具有的显示风格, a t t n b u t e s e t 在i a v a s w i n g t e 斌包中定义,用于描述某种显示风格的样式集合, 如字体、颜色、大小等信息。详细信息可以查看j a v a t mp i a r n l ,s t a n d a r de d i t i o n 6a p is p e c i f i c a t i o n 【1 】中对于a t t r i b u t e s e t 类的说明。该方法实际是返回某种 t 0 k e n t y p e 中所预先定义好的a t t r i b u t e s e t 对象。 o b i e c tg e t d a t a ( ) ,v o i ds e t d a t a ( o b j e c t ) 返回,设置该词的附加对象。 s t r i n gg e t e r r o r m e s s a g e ( ) ,v o i ds e t e r r o r m e s s a g e ( ) 返回设置该词的错误信 息。 t o k e n t y p eg e t t y p e ( ) 返回该词的类型,即返回t y p e 。 t o s t r i n g ( ) 返回格式化了的该词信息,用于调试,格式为t y p e + 一 - + g e t a b b r e v i a t e d t e ) ( t ( 2 0 ) + ”) ”。 对于j a v a t 0 k e n t y p e 的简要说明: t 0 k e n t y p e 为一个自定义接口,该接口只有一个方法:a t t r b u t e s e t g e t m r i b u t e s e t ( ) ,用来返回该类型所定义的风格集合。定义成一个接口的目的 是使该接口可以用来表示其他语言的词类型。j a v a t o k e n t y p e 实现了该接口, 是一个用来描述j a v a 语言的词类型的枚举类。当然也可以实现如 h t m l t o k e n t y p e 来描述h t m l 语言的词类型,使该编辑器可以对h t m l 语言 程序中的关键字进行高亮处理。 词法分析的核心算法是由j f i e x 生成的词法分析器提供的,利用该词法分析 器的分析结果,进行某些改造,来生成自定义的t 0 k e n 对象。 j f i e x 是一个词法分析器的生成器,可以生成符合某种语法规则的词法分析 器,生成的代码为j a v a 代码,并且该生成器全面支持u n i c o d e 。j f i e x 的作者 是新南威尔士大学的g e n i nk | e j n 博士。对于j f l e x 更多介绍和使用方法可以参 见j f i e x o n i n ed o c u m e n t a t i o n 【z 】,以及g e n i nk i e i n 博士的网站: 、 ,v v w d o c i s f d e 。 天津师范大学硕士论文实验平台的基本功能智能化编辑嚣 j f i e x 生成的词法生成器的分析结果为j a v a - - c u p n t i m e s y m b o i 对象,该 对象所描述的属性由于不具备t o k e n t y p e 属性,因此不能直接使用,但是可以 在生成该对象的地方进行某些修改,使之直接生成t 0 k e n 对象,来取代s y m b o i 对象,下面以部分改造内容为例,介绍一下改造方法。 甜i t c hiz z c 乞i o n ) | ,_ ka d d ( i n t ,t ) | ,ka d d ( t ) ka d d a h ( c o e c t i ) | _ ka d d a ( i n lc o e c t i o n ) 0 。kc i e a r ( ) r kc o n t a i n s ( o b j e c t ) 一kc o n t a i n s a i i ( c o 怕c t i o n ) d o c l e a r ( ) i i kg e t ( i n t ) g e t i n d e x c o n t a i n i n g ( i n t ) g e t i n d e c o n t a i n i n g ( p o s i t i o n ) ;, g e t i n d e x e n d i n g b e f o r e ( i n t ) 0 一 g e t i n d e x e n d i n g b e f o r e ( p o s 赴i o n ) | g e h n d e x 5 t a r t i n g a f t e r ( i n t ) g e t i n d e x 5 t a r t i n g a f t e r ( p o s 纯i o n ) bi n d e x o f ( o b j e c t ) ki s e m p t y ( ) 卜一kj t e r a t o r ( ) 一ki a s t i n d e x o f ( o b j e c t ) p kl i s t i t e r a t o r ( ) 一kl i s t i t e r a t o r o n t ) vl kr e m o v e ( i n t ) p 。kr e m o v e ( o b j e c t ) r kr e m o v e a l i ( c o e c t i o n ) r e p i a c e ( n t ,i n t jl i s t ) 一kr e t a i n a i l ( c o i i e c t j o n ) o ks e t ( i n t jt ) ;t k5 i z e ( ) ;ks u b l j s t ( i n t i n t ) p kt o r a y ( ) ;kt o a r r a y ( t 口) 图2 5t o k e n “s t 类结构 该类所含方法比较多,下面主要介绍几个比较重要的方法: v o i da d d ( t ) 、tr e m o v e ( - n t ) 、tg e t ( i n t ) 方法是向该容易增加、删除或取得 6 天津师范大学硕士论文实验平台的基本功毖智能化编辑嚣 t o k e n ,n t 参数为该t o k e n 的编号。 b o o i e a n n t a i n s ( o b j e c t ) 方法是检查该容器中是否含有某个t o k e n 。参数 o b j e c t 为指定的t o k e n ,该参数被u p c a s t 成o b j e c t 可以在使用该方法时,避免 强制转换成某一类型。如果用户的t o k e n 实现了其他接口,可以不必把某个接 口的引用强制转换成t o k e n 类型。 i n tg e t i n d e x c o n t a i n i n g ( i n to f f e t ) ,i n tg e t l n d e x c o n t a i n i n g ( p o s i t l o np o s ) ,返 回文档在。仟s e 卸o s 处的t 0 k e n 的编号,如果该位置没有任何t o k e n ,则返回一1 i n tg e t l n d e x e n d i n g b e f o r e ( j n to f f s e t ) i n tg e t i n d e x e n d i n g b e f o r e ( p o s i t i o np o s ) ,返回文档在。仟s e t ,p o s 之前的最后一个t o k e n 的编号,如果 该位置之前没有t o k e n ,则返回一1 。 i n tg e t ln d e x s t a r t i n g a l f t e r ( i n to f f s e t ) ,i n tg e t l n d e x s t a r t i n g a e r ( p o s i t i o np o s ) ,返回文档在。仟s e t ,p o s 之后的第一个t o k e n 的编号,如果该 位置之后没有t 0 k e n ,则返回一1 。 i n ti n d e o f ( o b j e c t ) 类似于b o o i e a nc o n t a i n s ( o b j e c t ) 方法,该方法不但检 查某个t 0 k e n 是否存在( 不存在返回一1 ) ,而且会返回该t o k e n 的编号。 l i s t s u b l i s t ( j n ta r 9 0 ,i n ta r 9 1 ) 该方法把容器中编号从a r 9 0 到a r 9 1 之间 的所有t o k e n 以列表的形式返回,得到一个子列表。 初始化一个t o k e nl s t 对象,然后把这个容器包含到某个文档的引用当中, 在该文档载入的时候,对整个文档进行词法分析,分析结果放入t o k e n l i s t 中, 再以t 0 k e n 中的t o k e n t y p e 所包含显示风格,显示在j t e ) ( t p a n e 中。当文档中 的某个位置发生变化时,可以利用j a v a 标准类库中的d o c u m e n t l s t e n e r 接口 来捕捉这些变化,进而使词法分析器在相应的地方进行词法分析,更新 t o k e n l i s t ,然后通知j t e x t p a n e 更新显示风格。 可以这样实现d o c u m e n t l i s t e n e r 接口: p r i v a t ec l a s sm y d o c u m e n t l - s t e n e ri m p l e m e n t sd o c u m e n t l i s t e n e r ( p u b cv o i di n s e r t u p d a t e ( d o c u m e n t e v e n te v e n t ) i n to 仟s = e v e n t g e t o f r s e t ( ) : i n ti e n = e v e n t g e t l e n g t l l ( ) : s c a n ( o f s 一8 ac ,( ,p ,o 仟s + l e n ) : ) p u b i i cv o i dr e m o v e u p d a t e ( d o c u m e n t e v e n te v e n t ) i n to 仟s = e v e n t g e t o 仟s e t ( ) : i n ti e n = e v e n t g e t l e n g t h ( ) ; s c a n ( o f f s 一8 a c k 。p ,o f f s + l e n + 1 ) : ) p u b i i cv o i dc h a n g e d u p d a t e ( d o c u m e n t e v e n te ) 该实现方法仅在文档发生字符增加或者删除后做出响应,对于文档的风格变 化,由于不是用户控制的,所以不必做出响应。e v e n t 对象包含了文档发生变化 的事件应包含的所有信息,比如发生变化的位置,发生变化的长度等,可以利用 这两个参数来通知词法分析器在文档某处进行词法分析。b a c k u p 是以个f i n a l i n t 类型,可以看做一个常量,作用是让词法分析器向前多分析一部分字符,这 样虽然比较保守,但可以避免分析错误。比如对于“,”标记,这在j a v a 语言 中不同于“, 标记,如果不向前多分析几个字符的话,如果用户在“,”之后又 7 天津师范大学硕士论文 实验平台的基本功德智能化编辑罨 输入了一个“,”。那么词法分析器只从当前的“,”进行分析,就会分析出两个“, 标记,而不是一个“,”标记。b a c k u p 的值越大,分析量也就越大,效率会有 所降低,但分析的出错率会大大降低。 上面的程序中有一个关键方法一v 0 i ds c a n ( n ts t a r t 。i n ts t o p ) ,该方法的作用 是从某一文档的第一个参数s t a r t 所指定的位置开始,到第二个参数s t o p 所指定 的位置结束,进行词法分析,把分析结果更新到对应的t o k e n l j s t 对象中,并把 更新结果以事件的方式通知侦听器。 虽然可以在每一次文档发生改变后对整个文档重新进行词法分析,更新整个 t 0 k e n l j s t ,但这样的方法效率较低,取而代之的方法应该是仅仅分析发生变化 的位置,更新t o k e n l i s t 中发生变化的t b k e n ,可以通过这样的方法实现部分更 新。 首先把成员备份到临时变量中,防止其他的线程在进行词法分析的时候修改 这些成员: s y n c h r o n i z e d ( t o k e n l i s t s c a n n e r t s c a n n e r = ( s c a n n e r l ) t h i s s c a n n e c d o c u m e n td o c u m e n t = t h l s d o c u m e n t : l f ( s c a n n e r = = n u d o c u m e n t = = n u ) = t o k e n l i s t s i z e ( ) ) o i d s t a r t = t o k e n l i s t s i z e ( ) 一1 : i f ( o i d s t a r t 0 ) o i d s t a r t = 0 : o i d e n d 是将要被删除的最后一个t o k e n 在t o k e n l i s t 中的编号,在进入循 环之前就是o i d s t a r t ,e n d t o k e n 则表示这个t o k e n : i n to l d e n d = o i d s t a r t : te n d t o k e n = ( o i d e n d 0 ) tl a s t o k t o k e n = t o k e n l i s t g e t ( o i d s t a r t - - 1 ) : i n to f r s e t b e g i n = i a s t o k 1 - o k e n g e t e n d o f 传e t ( ) : t r y s c a n n e r r e s e t ( d o c u m e n t r e a d e r ,l a s t o k t o k e n ) : c a t c h ( 1 0 e c e p t i o ne ) t h r o wn e wr u n t i m e e x c e p t i o n ( e ) :) d o c u m e n t r e a d e r s e e k ( o f f s e t b e g i n ) : ) e i s e t 吖( 天津师范大学硕士论文 实验平台的基本功能智能化编辑嚣 s c a n n e r r e s e t ( d o c u m e n t r e a d e r ) : ) c a t c h ( 1 0 e x c e p t i o ne ) t h n 孔n e wr u n a m e e x c e p t i o n ( e ) : d o c u m e n t r e a d e r s e e k ( 0 ) : 定位好词法分析器后就可以进入循环,进行词法分析,一直到所指示的位置, 或者到文档结束。并把新的t o k e n 存储在a d d e d 列表中: w h i i e ( t e ) t t : t = s c a n n e r n e x r r o k e n o : i 讹= = n u l l ) o i d e n d = t o k e n l i s t s i z e o ; e n d t o k e n = n u : b 舱a k : ) i n tt o f f s e t = t g e t e n d o f f e t ( ) : w h i l e ( e n d t o k e n ! = n u e n d 。r o k e n g e t e n d o f f e t ( ) t o r f r s e t ) + + o l d e n d : e n d t o k e n = ( o i d e n d s t o p & t e q u a i s ( e n d t o k e n ) ) b 怕a k : ) a d d e d a d d ( t ) : ) 计算更新后的t 0 k e n 的起始与结束的编号,该编号处的t 0 k e n 同样要被更 新,防止起始和结束处出现重复的t o k e n : i n tn e w s t a r t = 0 : i n tn e w e n d = a d d e d s i z e ( ) : w h i i e ( o i d s t a r t o i d e n d & n e w s t a r t n e w e n d t o k e n l i s t g e t ( o l d s t a r t ) e q u a i s ( a d d e d g e t ( n e w s t a r t

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论