论文部分内容阅读
编译理论和技术是计算机领域中的核心理论与技术之一。在编译器设计中,涉及到多项相关理论和技术,如形式化语言、自动机理论、形式化语义理论、词法分析技术、语法分析技术、词法分析器和语法分析器自动生成技术、语法制导翻译、中间代码、代码优化技术、数据流分析等。这些理论和技术同样可以运用在工程应用系统的设计中,解决许多信息分析和处理方面的问题,提高工程应用系统的适应能力和可扩展能力。
本文首先讨论了基本编译技术在工程应用系统设计中的应用框架,提出了应用系统内置词法分析器和语法分析器的工作模式,讨论了利用编译技术进行信息分析时不同层次的语义处理实现方案、在工程应用系统设计中的几种内置脚本引擎的实现方案,提出了可用户化定制的工程应用系统设计模式。进一步研究了以编译技术为基础的逆向建模技术和语句序列化代码分析技术及其应用。
在工程应用系统的设计中,不仅可以利用正则表达式分析技术实现对复杂结构信息的检索,还可以运用词法分析技术对复杂结构信息进行整理和分类,使信息的结构更为规范化,更便于分析和处理。在词法分析的基础上,进一步运用语法分析技术则可以对复杂结构的信息进行高效和准确的识别和分析。
在信息结构不确定的工程应用领域中,利用词法分析器和语法分析器的自动生成技术,将词法和语法分析器嵌入在应用系统中,用词法规则和语法规则对信息结构进行描述,并作为工程应用系统的输入,由内置词法和语法分析器自动生成分析驱动表,即可以所描述结构的信息进行高效、准确的分类、识别和分析。
在词法规则和语法规则的指导下,对信息进行分类、识别和分析,分析结果通常需要反映为特定的语义行为。将语义行为的描述独立于工程应用系统的设计,可以使系统具有更高的灵活性和可用户化能力。根据对语义行为控制能力强弱的要求,可以采取预定义语义行为描述、可编程语义行为描述、对象支持可编程语义行为描述等几种语义行为描述策略。控制能力越强,语义行为的描述就越复杂,语义行为描述的处理也就会越复杂。
脚本语言可以作为语义行为描述的一种有效手段。内置脚本引擎的设计和使用可以给工程应用系统提供强大的用户控制能力,终端用户可以以行为脚本的形式向应用系统提交对用户化行为的描述,行为脚本在脚本调度机制和内置脚本引擎的支持下被调度和执行,从而可以使应用系统具有更好的用户适应性和更高的用户化程度。本文选择C语言作为语言基,采用虚拟机底层结构,参考开源GCC编译器,分别选择GCC-tree、RTL和SCIL为解释层对内置脚本引擎进行了设计。
在过程工业应用系统的设计中,利用形式化方式对不同来源、不同格式的采集数据帧的结构规则进行描述,并以规则描述作为数据帧处理系统的配置输入,在系统内部生成分析驱动表,驱动对数据帧的分析过程,可以使数据帧的分析和处理过程独立于数据帧的具体格式,从而可以避免因为数据帧格式的变化而修改甚至重新构造系统。
过程工业监测系统设计中的行为定制是编译技术综合应用的又一个典型案例。在过程工业监测系统的设计和布署过程中,各类用户对数据的处理、响应行为等会有各种不同的要求。通过引入内置脚本引擎和行为定制机制,可以将用户化需求与系统的核心功能实现分离开来,使系统的设计集中于业务逻辑和功能的设计上,并以事件响应的方式提供可定制行为的接口。在布署系统和使用系统的过程中,管理员或用户可以根据现场需求,用行为脚本将用户化行为描述出来并指定到相应的响应事件上,由事件调度系统对脚本进行调度,由内置脚本引擎对脚本进行解释和执行,完成用户定制的操作,使系统不需要重新构造就可以按照用户的需求表现出不同的行为。
无论是分析自行设计的工程应用系统代码,还是分析其他来源的参考代码,模型文档都是重要的代码分析工具。以编译技术为基础的逆向建模技术可以用于分析源代码并自动生成代码的模型文档,从多个角度为研究人员和设计人员更形象地展示代码的结构和流程,帮助研究人员和设计人员更全面、更准确地理解代码、发现问题,甚至可以帮助设计人员寻找系统的优化方案。
在工程应用系统的设计中,对于代码内存在的隐蔽性错误,以手工方式进行检测不仅工作量大,而且难以保证全面性和准确性。在代码语法分析的基础上,进一步对代码进行语句序列化,即可以通过语句序列遍历分析代码在运行时的各种可能状态,并根据预定规则和用户规则对代码的逻辑进行检测,帮助设计人员发现代码中隐藏的可能逻辑错误。