解析器小结

原创 2011年01月13日 13:07:00

第一次用编程语言写自己的工具,挺有成就感的说~ 也有一些体会。工具的任务是把SilkTest脚本转换成python脚本。里面有一些工作特定相关的假设和需求。主要所得是心得体会啦~

Draft for SilktTest to Python transfer:

requirements:

"word1 word2"  -> "word1 word2"
{ -> [   
} -> ]
NULL, null, Null -> None
TRUE, true -> True
a.b.c   -> a['b']['c']

["","a"] + ["","b"] ->  ["","b"]

// -> #
line continuation


':' is not key delimiter in SilkTest
SilkTest keyword
 =, +, -, (, ), [, ], ; , .
 


Addintional Plus:
 1. detect what library is used in the test case , add sentence to import the library: Open_dialogname_**, Set_dialogname_**, Dlg_Set_dialogname_**, Dlg_Get_dialogname_***, Close_dialogname_***
  dialoglib = lower(dialogname) + "lib"
  
  from raftlibs import dialoglib
  from dialoglib import *
  
 2. add sentence like Activate_App(), sDocumentsDir = os.path.join(getPathToDesktop(), "TestFiles") at appropriate place
 
 3. Function call refactor:
  VerifyObjectActive()

 

从软件开发的角度来看:

         这是一个编译器,需要完成的基本任务是1)提取字符串和注释 2)分解单词 3)转换 等等.. 这些需求适用于“编译器”这个领域。用什么结构存储中间数据,功能之间是怎么样的接口,这些是可选的,算是程序设计的一部份。程序结构之下,分隔符是什么,字符串的文法,这要看具体的处理对象。

         基本任务,和加分任务可以根据难易程度和需求程度分优先级。一般把简单的最需要的任务放在前面完成。通常一个亟需的任务能够通过简单的机械化做到,是引发想开发这个软件的原因。几个亟需的任务也可以一个一个在程序中完成。当任务的个数很多很乱时,可以提取它们的共同点、合并到一个任务之中,将任务内容化为数据储存。

          在实现越来越多的任务时,可能整个程序的结构都要发生改变。原先的设计不一定能保证完成后来添加的任务。改变是痛苦的,学习理论知识能帮助建立有效的结构。

         理论知识研究通用的结构和算法。但是我们的需求可能很明确,用简单愚笨的结构就能实现,没有许多意外情况需要考虑。不管怎么样,理论知识能建立起一个模型和一类需求之间的纽带。不过理论的书籍很少讨论需求。会说明这这是用来干什么的,但是需求为何需要很少解释。而模型的建立来自复杂的需求,阅读理论书籍而不理解需求会有障碍。也是我觉得为什么项目开发经验的收获之一就是理解需求。

 

从软件测试的角度来看:

         在添加任务时,一个完整的功能不一定被一个独立的模块实现,它可能被划分到几个部分中。这些部分的前趋和后继可能会需要调整。部分和部分之间有时可能重叠,有时可能不重叠,这会让人头疼。将一个功能错误地划分或者放入错误的部分就会导致问题。另外在需要覆盖所有情况时,对个别特殊情况枚举不全也会导致错误。

[编译原理]词法分析器的分析与实现

词法分析概述:编译程序要对高级语言编写的源程序进行分析和合成,生成目标程序。词法分析是对源程序进行的首次分析,实现词法分析的程序成为词法分析程序(或词法分析器),也称扫描器。 像用自然语言书写的文章一...
  • u012848631
  • u012848631
  • 2015年06月16日 13:50
  • 11215

简单词法分析器java版本

Error为错误提示类,将错误信息保存在Error中。用于输出error.txt Word为关键字定义,将关键字信息保存在Word中,用于对单词的验证 Lexer 为词法分析核心类,包含对源程序的分析...
  • jlh912008548
  • jlh912008548
  • 2016年05月31日 20:35
  • 2682

一个简单词法分析器的C语言实现

一个简单词法分析器的C语言实现 1.1实验描述 例如:对源程序: begin x:=9: if x>9 then x:=2*x+1/3; end # 的源文件,...
  • chenglinhust
  • chenglinhust
  • 2013年06月13日 14:07
  • 7384

【SpringMVC框架】小结+视图解析器配置前缀和后缀

1.入门程序小结 通过入门程序理解springmvc前端控制器、处理器映射器、处理器适配器、视图解析器用法。 前端控制器配置: 第一种:*.action,访问以.action结尾 由Dispatc...
  • u013517797
  • u013517797
  • 2015年07月21日 08:57
  • 10565

【SpringMVC框架】小结+视图解析器配置前缀和后缀

1.入门程序小结 通过入门程序理解springmvc前端控制器、处理器映射器、处理器适配器、视图解析器用法。 前端控制器配置: 第一种:*.action,访问以.action结尾 由Di...
  • jinwufeiyang
  • jinwufeiyang
  • 2016年07月12日 14:51
  • 2938

最好用的json解析器

  • 2018年01月14日 00:29
  • 2.66MB
  • 下载

pull解析器

  • 2015年04月29日 14:44
  • 54KB
  • 下载

EscPos 解析器

  • 2017年12月09日 00:50
  • 814KB
  • 下载

jsoup Java HTML解析器

  • 2017年12月17日 11:23
  • 318KB
  • 下载

msxml ,微软的xml语言解析器

  • 2017年08月16日 16:22
  • 4.75MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:解析器小结
举报原因:
原因补充:

(最多只允许输入30个字)