电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

U9技术文档-范例-U9研发体系(EXPRESSION使用手册).PDFVIP免费

U9技术文档-范例-U9研发体系(EXPRESSION使用手册).PDF_第1页
1/14
U9技术文档-范例-U9研发体系(EXPRESSION使用手册).PDF_第2页
2/14
U9技术文档-范例-U9研发体系(EXPRESSION使用手册).PDF_第3页
3/14
U9 研发(Expression 使用手册) 文件编号:U9-SE-××-SPEC-×× 版本号: V1.0 修改状态: 编写人: 熊悦悦 审核人: 刘小东 适用对象 该规范适用于底层开发程序员。 版本记录 【此部分要记录该文档形成过程中的历次版本变更过程及变更的内容】 版本 修改与参与人 修改时间 修改原因 修改概述 审批人1.0 熊悦悦 2008/07/10 原始文档建立 刘小东 1.概述 UFIDA Expression 是一套表达式解析套件,它解析执行表达式,并返回执行结果。 2.构架原理 2.1 基础构架 在 U9 平台中,提供 ExpressionParser 对象对表达式进行解析,产生 AST(抽象语法树)。然后通过 Translator 对 AST 进行翻译,执行表达式树。主要内容包括: 1. 抽象语法树(Abstract Syntax Tree, AST)框架, 包括一组可以重用的表达式对象 2. 一组相关的小语言的词法,语法分析器(包括通用表达式,OQL, 报表表达式,MVC 公式), 相关语言的 Lex 风格的词法规范,Yacc 风格的语法规范 3. 一个通用栈式求值器 4. 一组 Streamer, 将 AST 展开成文本形式,即语法分析器的’逆操作’ 5. 自定义函数的扩展定义和执行机制, 可以用 C#语言为你设计的语言提供’系统函数’定义。 6. 一个简单的带控制流的栈式解释器 2.2 设计理念: 1. 用户可以自定义各种’小’语言,但各种语言都共享同样的抽象语法树结构。这样,自定义语言的词法,语法与它们的对象表达方式解耦。在语言设计的早期, 词法,语法的变动比较大,但由于所有的代码都针对 AST, 所以对文法形式的改动不会影响代码。 2. 基于 GoF(95)的 Visitor 设计模式, 表达式的所有操作被委托给 Visitor 接口。这样,我们可以对同样的表达式进行不同的操作,如求值,转换文本表达,类型检查等,并且可以随意增加新的操作类型,这也是 Visitor 模式的本质。 3. GoF(95)的 Strategy 模式,使得 Parser 可以替换。基于 AST 使得我们可以用多个 Parser 分析同样的语言,返回同样的 AST。目前的各 Parser 都是由一个 C#版的 Lex/Yacc 兼容工具生成的,以后还可以手写递归下降的 Parser,只需配置一下即可。所有的代码都不用改。Streamer, Evaluator 等工具类也是一样。 4. 多语言支持与表达式类型的关系: 各种语言都建立在表达式的基础上,因此它们都共享一套公共的表达式类型,但每个语言还扩展定义了各自的类型,如 OQL 对象查询语言引入了 OPath表达式,MVC Formula 引入了 If 表达式和 return 表达式, 都放在各自的名空间中。 IExpression: 表示任意一个语法树节点 框架的接口和核心表达式类型都在UFSoft.UBF.Util.Expression.Framework 中。 常用的,各应用语言模块共享的表达式类型在UFSoft.UBF.Util.Expression.Core 中。 OQL 对象查询语言表达式类型,和 SQLBuilder/SQL 语言共享的类型放在UFSoft.UBF.Util.Expression.Query 中。 MVC 公式表达式类型放在 UFSoft.UBF.Util.Expression.Program 中 IExpressionParser: 5. 多语言与工具类的关系 所有客户使用的工具类都是接口,提供以下服务 IExpressionParser: 将一段文本解析成 IExpression 树 IExpressionStreamer: 将一个 IExpression 树转换成文本形式 IExpressionEvaluator: 在给定上下文中对 IExpression 树求值 IIntEvalutor IRealEvalutor ILogicEvalutor 每个语言模块都有上述接口对应的(或共享的)实现类,但使用者只需关心接口,并用下列方法从工厂取得接口即可: 如报表模块使用表达式框架工具,采用下列代码: IExpressionParser parser = ParserFactory.CreateParser(“report”); IExpressionStreamer streamer = StreamerFactory.CreateStreamer(“report”); 获取相应于报表表达式语言的工具接口 如 MVC 模块使用表达式框架工具,采用下列代码: IExpressionParser parser = ParserFactory.CreateParser(“Gui”); IExpressionStreamer streamer = StreamerFactory.CreateStreamer(“gui”); 获取相应于 MVC 表达式语言...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

U9技术文档-范例-U9研发体系(EXPRESSION使用手册).PDF

您可能关注的文档

确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信