当前位置: 首页 > news >正文

dw可以做网站后台吗/汽车seo是什么意思

dw可以做网站后台吗,汽车seo是什么意思,网页链接格式,微信小程序登录平台CSLight 是业内比较厉害的一个人(李剑英)写出来用于对U3D脚本进行热更新的开源项目,从他的一系列博客文章可以看出,他是一个很有想法的人,尤其是在U3D脚本热更新和资源热加载这块有自己的观点。相比ulua我个人还是倾向…

CSLight 是业内比较厉害的一个人(李剑英)写出来用于对U3D脚本进行热更新的开源项目,从他的一系列博客文章可以看出,他是一个很有想法的人,尤其是在U3D脚本热更新和资源热加载这块有自己的观点。相比ulua我个人还是倾向于CSLight毕竟一个项目里面存在好几种语法规则在维护上是一件很麻烦的事,这两种脚本有人做过测评效率上差不多。

 

1.脚本:

什么是脚本?它的体现形式是一段字符串,然后被一个宿主环境解释执行,例如js在v8里面解释执行,所以js对于v8来说就是脚本。广义上来说,所有的语言都是脚本,而它们的宿主环境就是计算机硬件。无论是解释执行还是编译执行,对于它们的宿主环境来说,都需要做两件事情,解释和执行。解释,就是把一段信息翻译成宿主环境能够认识的东西。

 

2.CSLight:

CSLight就是一个宿主环境,而它的脚本是一个C#规范子集的一段字符串,这个子集的范围在作者博客有介绍:http://www.cnblogs.com/crazylights/p/3888932.html。脚本在解释之后,会把信息以一种宿主环境可以直接调用的形式存储,而CSLight会把这些信息存储在CLS_Environment里面。

 

3.CLS_Environment:

(1)构造:

        Dictionary<CLType, ICLS_Type> types = new Dictionary<CLType, ICLS_Type>();Dictionary<string, ICLS_Type> typess = new Dictionary<string, ICLS_Type>();Dictionary<string, ICLS_Function> calls = new Dictionary<string, ICLS_Function>();public CLS_Environment(ICLS_Logger logger){//if(useNamespace==true)//{//    throw new Exception("使用命名空间还不能完全兼容,建议关闭");//}this.logger = logger;//this.useNamespace = useNamespace;tokenParser = new CLS_TokenParser();compiler = new CLS_Expression_Compiler(logger);RegType(new CLS_Type_Int());RegType(new CLS_Type_UInt());RegType(new CLS_Type_Float());RegType(new CLS_Type_Double());RegType(new CLS_Type_String());RegType(new CLS_Type_Var());RegType(new CLS_Type_Bool());RegType(new CLS_Type_Lambda());RegType(new CLS_Type_Delegate());RegType(new CLS_Type_Byte());RegType(new CLS_Type_Char());RegType(new CLS_Type_UShort());RegType(new CLS_Type_Sbyte());RegType(new CLS_Type_Short());RegType(new CLS_Type_Long());typess["null"] = new CLS_Type_NULL();//contentGloabl = CreateContent();//if (!useNamespace)//命名空间模式不能直接用函数{RegFunction(new FunctionTrace());}}

从构造上来看,这里主要是注册类型和方法信息,而这些类型和方法都是会被脚本用到的,也就是说如果types内容为null脚本写的再漂亮CSLight也是不认识的。

其次需要主要的是构造必须传入一个ICLS_Logger 对象用来输出日志,在运行时输出错误日志是必须的,所以这里是强制要求有一个log对象。而这种方式也很有效的避免了与U3D的依赖。

CLS_TokenParser和CLS_Expression_Compiler应该就是用来执行脚本的。

(2)相对重要的方法:

        public void RegType(ICLS_Type type)public void RegFunction(ICLS_Function func)public CLS_Content CreateContent()public void Project_Compiler(Dictionary<string, IList<Token>> project, bool embDebugToken)public CLS_Content.Value Expr_Execute(ICLS_Expression expr, CLS_Content content = null){if (content == null) content = CreateContent();return expr.ComputeValue(content);}public IList<Token> ParserToken(string code){return tokenParser.Parse(code);}public ICLS_Expression Expr_CompilerToken(IList<Token> listToken, bool SimpleExpression = false){return SimpleExpression ? compiler.Compiler_NoBlock(listToken, this) : compiler.Compiler(listToken, this);}

Project_Compiler:这里的工程可以理解为文件夹,它的功能是把一个文件夹下面所有cs文件进行解释,然后把里面的类方法注册到CLS_Environment对象里面。

CLS_Content:可以把它理解为一个容器,存储结果或者参数。

 

3.常用接口:

(1)CLS_Content:

        public class Value{public CLType type;public object value;public int breakBlock = 0;//是否是块结束public static Value FromICLS_Value(ICLS_Value value){Value v = new Value();v.type = value.type;v.value = value.value;return v;}}public Dictionary<string, Value> values = new Dictionary<string, Value>();public void Define(string name,CLType type) public void Set(string name,object value)public void DefineAndSet(string name,CLType type,object value)public Value Get(string name)

 在CLS_Content的内部定义了一个Value类型作为它的值的类型。这里需要注意的是CLS_Content需要先知道object的CLType,然后才能存储它的值。

(2)ICLS_Expression:表达式,一个复杂的表达式由多个简单的组成,这个接口计算表达式的结果。

ICLS_Value:继承ICLS_Expression接口,在其基础上增加了CLType类型信息。

ICLS_Environment_Compiler:编译整个环境

ICLS_Expression_Compiler:编译表达式

这里的编译我个人的理解就是把解析好的指令执行一遍,但是好像又不对,应该是属于解析的第二个过程,第一个过程是分析字符串,把字符串分析成一段段的表达式。这个过程是把表达式换成CSLight可识别的形式。

(3)ICLS_Function和ICLS_Function_Member:接口很简单只有一个Call方法

        CLS_Content.Value Call(CLS_Content content, IList<CLS_Content.Value> param);CLS_Content.Value Call(CLS_Content content, object objthis, IList<CLS_Content.Value> param);

 上面的是全局方法,下面的是成员函数,多了一个this指针。

(4)ICLS_Logger:打印日志

 

总结:大致看了一下源代码,多是一些解释执行的东西,大致有点了解就行了,毕竟用好才是最重要的。

 

http://www.lbrq.cn/news/952471.html

相关文章:

  • 视频发布播放网站建设/外贸网站都有哪些
  • 做旅游网站设计的感想/今日头条热搜榜
  • 怎样在百度能搜到自己的网站/天津百度
  • 中国企业新闻观察网/上首页seo
  • 网站建设的价/自己创建一个网站需要多少钱
  • 网站制作样板/seo网站关键词优化哪家好
  • ie浏览器哪个做网站稳定/广东广州网点快速网站建设
  • 找人做的网站怎么/百度一下百度搜索百度
  • 六安做网站的/2023网站分享
  • 珠海网站建设怎么样/有必要买优化大师会员吗
  • kooboo wordpress 对比/杭州seo排名
  • 佛山市南海区建设局网站/百度人工服务
  • 国外界面设计网站/国外免费网站建设
  • 如何用自己电脑做网站服务器吗/百度投放广告一天多少钱
  • 九_网站建设日程表/焊工培训内容
  • 建造师信息查询网/长沙有实力seo优化
  • wordpress添加备案号插件/windows优化大师功能
  • 株洲网站优化找哪家/百度竞价怎么做开户需要多少钱
  • 万能视频下载神器/seo研究所
  • 做网站用什么框架好/设计个人网站
  • 泰州住房城乡建设网站/低价刷粉网站推广
  • 如何做网站模版/seo排名赚app
  • 建设银行网站首页公司机构客户/点击seo软件
  • 烟台网站开发/网站seo排名优化工具在线
  • 求做图的网站/陕西网站制作
  • sage wordpress/seo入门视频
  • 亳州做网站哪家好/英文网站设计公司
  • wordpress网站聊天插件/bt兔子磁力搜索
  • 网络营销课程感悟/太原seo网站排名
  • 在线做c 题的网站/网络营销策略包括
  • Android Studio 的 Gradle 究竟是什么?
  • Trae开发uni-app+Vue3+TS项目飘红踩坑
  • 深入解析 Linux 硬链接与软链接:原理、区别及应用场景
  • 什么是卡贴???
  • 从TPACK到TPACK - AI:人工智能时代教师知识框架的重构与验证
  • 【Settlement】P1:整理GH中的矩形GRID角点到EXCEL中