论文部分内容阅读
随着硬件系统复杂性的不断提高,为了简化设计任务,在更高的抽象层次——系统级进行软硬件协同设计成为当前的研究热点。在ANSI-C基础上扩展而成的SpecC语言是面向系统级设计专门开发的比较流行的系统级硬件描述语言。为了实现系统级综合自动化,SpecC综合器的开发成为SpecC系统级设计方法的主要任务。
词法分析器是综合器的基础模块,它的性能对综合器有很大影响。通常,人工实现的词法分析器比自动生成的性能要好。而据我们所知,目前已经开发出的SpecC综合器SCRC(SpecC Reference Compiler)的词法分析器是用自动生成工具生成的。因此,如何用高级编程语言开发出一个更高效的SpecC词法分析器成为我们的研究课题。
本文从词法分析器设计与实现的基础理论出发,在综合研究各种词法分析器设计与实现技术的基础上,结合SpecC语言的词法特点,在Linux环境下用C语言设计并实现了SpecC的一个词法分析器SpecC_Lexer。整个SpecC_Lexer分为五个模块,包括主模块、记号识别模块、预处理模块、缓冲区管理模块和辅助模块。它的实现主要是参照从SpecC语言词法的正规定义获得的各种记号的有限状态自动机进行编码,并通过利用缓冲区管理技术来解决词法二义性和回溯等问题的方式来提高词法分析性能。
为了对SpecC Lexer进行功能测试,本文还专门设计了一个测试用例。测试结果表明,SpecC Lexer能正确地对用户输入的SpecC源代码进行预处理和词法分析,并在源代码中出现词法错误时反馈错误信息给用户。SpecC Lexer的实现为以后开发SpecC综合器提供了一个基础模块。