![](https://www.jinchutou.com/images/s.gif)
开源EGL语言开发工具EGLDevelopmentTools,第4部分EGL高级话题
25页1、开源EGL语言开发工具EGLDevelopmentTools,第4部分EGL高级话题开源EGL语言开发工具EGLDevelopmentTools,第4部分:EGL高级话题1. EDT的可扩展性简介EGL作为一门编程语言,它的编译过程遵循一般语言的编译过程:源程序通过编译器生成中间模型(IRModel,IntermediateRepresentationModel),IR模型通过代码生成器被转换成目标代码。EDT中EGL源文件转换成目标语言的过程如下图所示:图1.EGL编译过程:|rw亡泅+支百营,聃。口匚十+覃匚。Antirsm口。叫门呻查看大图。这里IR模型之前的工作通常称为前端编译,模型之后的代码生成工作通常称为后端编译。本文将首先介绍通过扩展后端编译来改变EGL语言的行为或者增加新的运行平台和目标语言,然后将介绍如何扩展前端使新的语言概念能够被编译到模型中。所有的扩展都能够以EclipsePlugin的形式方便的增加到EDT中。这一切,使得创造一种新语言变得前所未有的方便。接下来需要做的仅仅是发挥想象力了。2. EGL模型的可扩展性EGL模型在设计之初就考虑了可扩展性。通过扩展E
2、GL模型,可以引入新的元素和概念,使得EGL代码可以表达更多的信息。而这些新的概念和信息,可以被代码生成器识别并利用从而生成全新的功能。下面介绍最常用的几种语言模型的扩展。NativeTypesNativeType是纯抽象的类型定义,由代码生成器决定怎样把NativeType映射到目标平台。EGL语言中的大多数系统函数都是用NativeType来定义的。比如下面代码中用到的SysLib.writeStdout()方法只是一个抽象函数定义。在Java代码生成器中,它会被生成System.out.println(),而在COBOL代码生成器中,则会生成DISPLAY语句。清单1.EGL抽象函数SysLib.writeStdout()packagesamples.server;programExamplenamestring;functionmain()name=Joe;SysLib.writeStdout(name);endendSysLib的定义,目前,我们使用externaltypetypeNativeType的形式来定义一个NativeType.使用同样的方法,你可以扩展EGL的系统
3、函数库,或者定义自己的函数库。当然,在定义了新的NativeType之后,需要使用上一章中提到的方法扩展代码生成器使得这些新的元素能够被映射成目标平台可执行代码。清单2.定义新的NativeTypeexternalTypeSysLibtypeNativeTypestaticfunctionwriteStdout(textstringin);endAnnotationAnnotation可以用于给已有的语言类型添加额外的注解信息,这些信息能够被代码生成器识别并生相应的目标代码。Annotation用于为任何成员(Member)添加注解,比如变量,方法等。在下面的代码中Id是一个Annotation,它表明cust_no字段是一个用于标识的字段。清单3.Annotation的使用recordMyRecordtypeEntityTableName=Customercust_nointId;namestring;end相应的,在代码生成器中,就可以对于有Id标识的字段进行特殊的处理,比如,当我们把MyRecord写入关系数据库的时候,cust_no字段会被当作主键进行处理。下面的代码是对IdA
4、nnotation的定义。我们使用recordtypeAnnotation的形式来定义Annotation。targets=FieldMbr表示IdAnnotation可以被用在任何一个FieldMember上。清单4.IdAnnotation的定义packageeglx.persistence;recordIdtypeAnnotationtargets=FieldMbrendIdAnnotation非常简单,没有附带任何额外的信息。下面我们来设计一个略微复杂点的Annotation用于在生成的代码中添加一些注释。如下代码所示,CommentAnnotation同样作用于FieldMember,并且它可以指定一个字符串值text。清单5.可指定字符串text的CommentAnnotation定义recordCommenttypeAnnotationtargets=FieldMbrtextString;end在定义了CommentAnnotation之后,我们就可以在EGL代码中使用它。清单6.使用CommentAnnotationrecordMyRecordtypeEntityTab
《开源EGL语言开发工具EGLDevelopmentTools,第4部分EGL高级话题》由会员M****1分享,可在线阅读,更多相关《开源EGL语言开发工具EGLDevelopmentTools,第4部分EGL高级话题》请在金锄头文库上搜索。
![股东投资设立公司协议书范文(三篇).doc](https://union.152files.goldhoe.com/2023-2/26/ebe903d4-769d-44f9-8cd8-1be84a5e79ec/pic1.jpg)
股东投资设立公司协议书范文(三篇).doc
![表达方式专题训练(含答案)](https://union.152files.goldhoe.com/2023-4/16/64ab9575-22eb-4976-9114-5eaf55c9eabb/pic1.jpg)
表达方式专题训练(含答案)
![哈工大_计算方法实验_1拉格朗日.doc](https://union.152files.goldhoe.com/2022-8/21/8130870f-ee52-4669-b359-1cfb51f18ba1/pic1.jpg)
哈工大_计算方法实验_1拉格朗日.doc
![湘教版地理七下第七章《了解地区》word单元综合测试题(B卷)](https://union.152files.goldhoe.com/2022-8/18/6ffb58fc-a888-4c35-ab1a-24c22d0bfc28/pic1.jpg)
湘教版地理七下第七章《了解地区》word单元综合测试题(B卷)
![2022年导游基础知识第四章知识点:中国民族民俗概述.docx](https://union.152files.goldhoe.com/2023-6/14/1565bd7c-2f9f-4b31-b881-bf492f1af262/pic1.jpg)
2022年导游基础知识第四章知识点:中国民族民俗概述.docx
![2019政府采购中心上半年工作总结.doc](https://union.152files.goldhoe.com/2023-3/31/ef630a70-2425-4fa1-9c77-14fe1fcfbfe6/pic1.jpg)
2019政府采购中心上半年工作总结.doc
![观察池塘水中的藻类植物教案.doc](https://union.152files.goldhoe.com/2022-10/20/0b6b511f-94ce-4f27-befb-a05c6751e734/pic1.jpg)
观察池塘水中的藻类植物教案.doc
![值日班长职责(试行)](https://union.152files.goldhoe.com/2024-1/5/75964d91-13b0-4ba1-b918-66e79afd3054/pic1.jpg)
值日班长职责(试行)
![超级女生案例分析.doc](https://union.152files.goldhoe.com/2022-8/9/d11c9ca0-8000-4718-b393-8fd8d6328794/pic1.jpg)
超级女生案例分析.doc
![南宁市马山中学2012届十月月考历史试题.doc](https://union.152files.goldhoe.com/2022-8/16/a8138473-6418-45ce-a2fe-daacc80e5c0b/pic1.jpg)
南宁市马山中学2012届十月月考历史试题.doc
![教师工作个人述职报告汇总10篇](https://union.152files.goldhoe.com/2022-9/16/7e14757f-db7b-4283-817f-b98f3a0877a1/pic1.jpg)
教师工作个人述职报告汇总10篇
![地铁站台屏蔽门安装监理质量控制.doc](https://union.152files.goldhoe.com/2023-3/18/ca8345a4-46f5-4997-bc49-308b585e8247/pic1.jpg)
地铁站台屏蔽门安装监理质量控制.doc
![《长方体和正方体的特征》教学设计[13].doc](https://union.152files.goldhoe.com/2023-8/10/d5a3a1d7-ea58-4f34-add7-337235e880c8/pic1.jpg)
《长方体和正方体的特征》教学设计[13].doc
![中国力车胎行业企业融资商业计划书(61850)(天选打工人).docx](https://union.152files.goldhoe.com/2023-3/20/1183c87f-cdb6-4f54-b1ca-da7b1c5032c4/pic1.jpg)
中国力车胎行业企业融资商业计划书(61850)(天选打工人).docx
![小学一年级学习计划(6篇).doc](https://union.152files.goldhoe.com/2023-11/12/6d93667d-a8bf-4d3d-892a-46e49c4c9354/pic1.jpg)
小学一年级学习计划(6篇).doc
![2022年安徽高考数学试题小学理数(word版).docx](https://union.152files.goldhoe.com/2022-8/20/125719ed-eb11-4c41-85e3-91f76e812fa4/pic1.jpg)
2022年安徽高考数学试题小学理数(word版).docx
![副机、二等大管 (2).doc](https://union.152files.goldhoe.com/2023-1/21/b0846696-1def-43be-b2b9-0cc0cc7973de/pic1.jpg)
副机、二等大管 (2).doc
![中医诊断学复习资料](https://union.152files.goldhoe.com/2023-7/30/80ef04b0-6106-4b5f-8fe1-ac33410bd223/pic1.jpg)
中医诊断学复习资料
![销售薪酬的制定.doc](https://union.152files.goldhoe.com/2023-6/7/0bc7689d-7e0c-40cb-8afb-a0d6b1e7237b/pic1.jpg)
销售薪酬的制定.doc
![人教版新目标八年级上册英语知识点全册.doc](https://union.152files.goldhoe.com/2022-12/18/340c049c-1c83-4944-9ac5-29b48c00d0d4/pic1.jpg)
人教版新目标八年级上册英语知识点全册.doc
![安全生产事故案例分析作业](/Images/s.gif)
2023-12-21 14页
![硫回收12台非标设备技术协议080910(字)](/Images/s.gif)
2023-01-23 9页
![生鲜自营系统解决方案](/Images/s.gif)
2023-02-09 29页
![上市公司配股行为的研究doc11](/Images/s.gif)
2022-11-13 11页
![安全设施设计](/Images/s.gif)
2023-12-22 284页
![承压类特种设备检验项目分类表](/Images/s.gif)
2023-04-28 8页
![某公司施工组织设计课程](/Images/s.gif)
2023-05-29 78页
![剪力墙结构施工组织设计(DOC67)](/Images/s.gif)
2022-09-20 94页
![室内大班游戏](/Images/s.gif)
2022-12-18 4页
![企业处工作职责](/Images/s.gif)
2022-07-24 3页