河南地区微商城优化外包服务费用是多少?
摘要:微盟微商城收费标准,河南网站优化外包服务,网站维护是什么职业,网站开发语言 排行榜GaiaX跨端模板引擎,是在阿里优酷、淘票票、大麦内广泛使用的Native动态化方案,其核心优势是
微盟微商城收费标准,河南网站优化外包服务,网站维护是什么职业,网站开发语言 排行榜GaiaX跨端模板引擎#xff0c;是在阿里优酷、淘票票、大麦内广泛使用的Native动态化方案#xff0c;其核心优势是性能、稳定和易用。本系列文章《GaiaX开源解读》#xff0c;带大家看看过去三年GaiaX的发展过程。 前言
GaiaX【https://github.com/alibaba/GaiaX】是由优酷应… GaiaX跨端模板引擎是在阿里优酷、淘票票、大麦内广泛使用的Native动态化方案其核心优势是性能、稳定和易用。本系列文章《GaiaX开源解读》带大家看看过去三年GaiaX的发展过程。 前言
GaiaX【https://github.com/alibaba/GaiaX】是由优酷应用中心技术团队研发的一款跨端高性能渲染引擎目前该方案已经向技术社区开源其核心目标是解决多端卡片化UI组件的研发效能问题。 先看一下GaiaX构建的总体链路
图 - GaiaX构建总体链路
可以看到在 GaiaX 中从结构化的模板文件到端渲染经过了模板解析、节点树构建、视图树构建、表达式运算、扩展交互等步骤。 本文主要将主要从表达式的方案设计、语法树构建以及表达式的跨平台实现这几个方面对表达式运算这个模块进行介绍。
表达式介绍
在GaiaX模板的构建过程中表达式是较为重要的一个模块其主要的能力是对数据进行取值或运算并绑定到对应的视图中它作为逻辑动态化的基础承接着上层业务对视图数据绑定的具体描述视图的数据变化和具体表述均由表达式作为纽带。
{data:{gx-expression-value:{value: $data.text},gx-expression-calculate:{value: 12*3%3$data.num},gx-expression-function:{value: Size($data.array)}}
}在表达式中我们支持取值运算、函数计算以及表达式运算的能力为了实现双端一致性我们使用了C作为表达式的底层开发语言。
技术方案设计
表达式的解析过程 图 - 表达式各端解析流程 表达式的解析过程其实就是编译的过程编译即把通过源语言编写成的源程序转化为目标程序的过程通常编译的完整流程是把源程序通过词法分析、语法分析、语义分析、中间代码生成等步骤生成计算机可以理解的机器语言考虑到GaiaX的表达式的作用范围我们只考虑前半部分即词法分析、语法分析以及语义分析。 我们先通过一个简单的流程图了解一下表达式的整个解析流程 词法分析 词法分析是对表达式输入的字符流进行扫描根据对应的构词规则对每个词进行划分和分类将其组成有意义的词素序列。
语法分析 语法分析是在词法分析的基础上将词法分析生成的词素组成各类语法短语并判断表达式在结构上是否正确最终构建出符合语法规则的语法树以及对应的符号表。
语义分析 语义分析则是结合语法分析中生成的语法树和符号表对输入的表达式的语义规则进行分析判断语义是否符合规则。
在GaiaX表达式中我们使用LR(1)文法进行语法分析并构建语法树并将语法分析和语义分析结合起来即在语法树的构建过程中判断表达式是否符合语义规则并在语法树构建完成后返回最终的结果。
语法树的构建 - LR(1)文法
上文说到表达式的解析过程其实就是一个编译的过程。在GaiaX表达式方案中我们采用了编译原理中经典的LR(1)文法作为表达式语法树的构建方案。 LR(k)分析方法是1965年Knuth提出的,括号中的k表示向右查看输入事符号的个数。这种方法比起自顶向下的LL(k)分析方法和自底向上的优先分析方法对文法的限制要少得多也就是说,对于大多数用无二义性上下文无关文法描述的语有都可以用相定的LR分析器进行识别而且这种方法还具有分析速度快能准确即时地指出出错位置的特点。
LR(1)文法
LR(1)文法的意思是从左向右扫描最右推导往前多看一个字符。
字符含义L从左到右扫描输入串R利用最右分析方法来识别句子(1)向右展望1个字符
在具体介绍LR(1)分析法之前我们需要先了解两个基本概念
名称含义推导一个字符串x通过一个规则变换成另一个字符串y称为x推导出y即x-y规约与推导相反语法规则为x-y时由y规约到x即为规约
GaiaX表达式语法树构建流程
LR(1)的分析过程是规约的过程我们以GaiaX表达式中的运算语法为例深入了解GaiaX表达式语法树的构建流程。
