资源描述:
《多领域统一建模语言的分析器的研究及实现》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、摘要复杂物理系统,通常是机、电、液、控等多领域子系统的综合体,必须在统一环境下进行建模仿真才能得到完整的性能分析结果。Modelica作为新一代多领域统一物理建模语言,继承和统一了以前多种建模语言的特点,支持面向对象建模、多领域建模、陈述式物理建模和连续离散混合建模,非常适合描述现代多领域复杂系统,代表着现代建模和仿真技术发展的新方向。应用多领域统一建模语言解决实际问题,需要经过建模、分析、优化和求解等多个步骤,依赖于一个完整的建模仿真系统平台。建模语言源代码的分析是该平台的一个必要环节,它负责读取特定建模语言描述的模型、系统库和
2、各种领域库,对它们进行分析转化,最终翻译成通用的中间表示形式,为后续微分代数方程生成、求解引擎计算提供完整的模型信息。本文研究了多领域统一建模语言Modelica特征及其规范,全面分析了该语言支持多领域统一建模的语言特性。此外,本文还研究了现代编译器设计技术及各种工具,在分析对比FLEX、BISON和ANTLR等工具的基础上,采用ANTLR作为多领域统一建模语言分析器的设计工具。整个建模仿真平台被区分为前端和后端,本文实现的语言分析器程序集中在前端,按照功能分为Modelica源文件的词法扫描、语法分析、错误处理和语义分析。在词法
3、扫描中,确定了词法分析程序的设计原则,实现了单词的描述技术和识别机制;在语法分析中研究了抽象语法树节点类系和容器树存储结构的设计和实现并做了全面对比,同时对递归下降分析法的自动化生成也做了研究和分析;错误处理和语义分析是较高的层次,本文对此也做了研究和部分实现。最后,利用实现的程序代码,分析了Modelica源文件和领域库,结果证明,对于非常复杂的源代码,本文实现的分析器都能正确解析完成,说明设计和实现都是正确的和有实效的。关键词:多领域建模语言分析器编译器IAbstractComplexphysicalsystem,genera
4、llyasynthesisofsubsystemsfromdifferentdomainssuchasmechanical,electrical,hydraulicandcontrolsystems,mustbemodeledandsimulatedunderageneralprogramcircumstancetoobtainintegralresultsofperformancetestandanalysis.Modelicaisanewlanguageforthephysicalmodelingofmulti-domains
5、ystems,whichunifiesandgeneralizespreviousmodelinglanguagesandsupportstheobject-orientedmodeling,multi-domainmodeling,declarativephysicalmodelingandcontinuousanddiscrete-eventhybridmodeling.Henceitsuitsthedescriptionformoderncomplexmulti-domainsystemsverywell,andrepres
6、entsthenewtrendofmodernmodelingandsimulationtechnology.ToresolvepracticalproblemswithModelicalanguage,suchstepsasmodeling,parsing,optimizingandcomputationmustbetaken,whicharealldependentonanintegralmodelingandsimulationprogramsystemplatform.Parsingthesourcecodesofmode
7、llanguage,whichistheessentialcomponentinthatplatform,isinchargeofloadingandanalyzingthereadymodelfiles,systemlibraryandallkindsofdomainlibrarywrittenincertainlanguage,andfinallytranslatestoageneralintermediaterepresentations,whichprovidesallintegralanddetailinformatio
8、nsoforiginalmodelsforthesubsequentgenerationofDAEs(DifferentialAlgebraicEquations)andthecomputationcarriedoutbyresolveengine