如何做自己的淘宝优惠券网站,建设自己的网站怎么这么难,东莞门户网站建设方案,专题类网站zExpression 句法编译器解释器#xff0c;脚本引擎内核技术体系解释#xff1a;在编译原理的技术体系中#xff0c;凡是处理文本化的代码前#xff0c;都需要做一次预处理#xff0c;其中我们常说的语法#xff0c;语法糖#xff0c;都是一种预处理程序词法#xff1a;…zExpression 句法编译器解释器脚本引擎内核技术体系解释在编译原理的技术体系中凡是处理文本化的代码前都需要做一次预处理其中我们常说的语法语法糖都是一种预处理程序词法词法是对文本关键字数字符号进行分类整理最后形成词法树并且严格遵循顺序化处理原则申明在预处理代码中申明部分叫做申明树申明树又依赖于词法顺序预处理因为对词法预处理是一种简化手段句法在经过了申明预处理以后是对代码表达式的单行逻辑操作进行处理这一步叫句法取为zExpression句法编译器是我从曾经撰写的编译器中特意剥离出来的解决方案它可以独立出来分发和使用可以实用数字化预处理图形图像科学计算等等领域也可以作为学习提高自己的手段核心思路实现zExpression采用的是对等复杂化原则面向解决编译器问题而编写复杂度相比于常规程序会高许多因为解决了最终问题代码在命名和堆结构上也看不出漏洞所以它是成熟句法解释器方案zExpression特点完整的单步原子化操作完整的符号优先级后处理能预处理字面错误并反馈错误发生在哪能识别浮点和整数的自然数写法支持函数调用支持自定义脚本语法逆波兰2.0符号优先级处理支持安卓和苹果各型号手机完整的功能Demo完整性能和解析准确性评估框架在编译以后能形成原子化op代码可以通过stream高速载入并运行不限制cpu类型OP代码框架可以轻松译码成ARMv7 ARMx64 x64 x86等平台的机器码矩阵和向量表达式支持平台支持test with Delphi 10.3 update 2 and FPC 3.0.4Windows: delphi-CrossSocket(C/S OK), delphi-DIOCP(C/S OK), delphi-ICS(C/S OK), delphi-Indy(C/S OK),delphifpc Synapse(C/S OK)Android:Indy(C/S OK), CrossSocket(Only Client)IOS Device: Indy(C/S OK), CrossSocket(Only Client)IOS Simulaor: n/aOSX: Indy(C/S OK)ICS(未测试), CrossSocket(C/S OK)Ubuntu16.04 x64 server: Indy(C/S OK), CrossSocket(C/S OK)Ubuntu18.04 x86x64 Desktop:only fpc3.0.4 Synapse(C/S OK)Ubuntu18.04 x86x64 Server:only fpc3.0.4 Synapse(C/S OK)Ubuntu18.04 arm32arm neon Server:only fpc3.0.4 Synapse(C/S OK)Ubuntu18.04 arm32arm neon desktop:only fpc3.0.4 compile ok,no test on run.Ubuntu16.04 Mate arm32 desktop:only fpc3.0.4 compile ok, test passedRaspberry Pi 3 Debian linux armv7 desktop,only fpc 3.0.4,test passed.wince(arm eabi hard flaot),windows 10 IOT,only fpc 3.3.1,test passed.CPU架构支持test with Delphi 10.3 update 2 and FPC 3.0.4MIPS(fpc-little endian), soft float, test pass on QEMUintel X86(fpc-x86), soft floatintel X86(delphifpc), hard float,80386,PENTIUM,PENTIUM2,PENTIUM3,PENTIUM4,PENTIUMM,COREI,COREAVX,COREAVX2intel X64(fpc-x86_64), soft floatintel X64(delphifpc), hard float,ATHLON64,COREI,COREAVX,COREAVX2ARM(fpc-arm32-eabi,soft float):ARMV3,ARMV4,ARMV4T,ARMV5,ARMV5T,ARMV5TE,ARMV5TEJARM(fpc-arm32-eabi,hard float):ARMV6,ARMV6K,ARMV6T2,ARMV6Z,ARMV6M,ARMV7,ARMV7A,ARMV7R,ARMV7M,ARMV7EMARM(fpc-arm64-eabi,hard float):ARMV8aarch64更新日志2020-3对注册函数新增申明信息修复函数前符号 -func(11)修复函数后符号 func(11)-12019-7矩阵表达式支持// 构建3*3的variant矩阵使用c语法表达式procedure MatrixExp;varm: TExpressionValueMatrix;beginDoStatus();m : EvaluateExpressionMatrix(3, 3,hello-baby/*备注字符串联合*/,true,false, 11,22,33, 4*4,4*5,4*6, tsC);DoStatus(m);end;// 构建variant向量数组使用pascal语法表达式procedure MatrixVec;varv: TExpressionValueVector;beginDoStatus();v : EvaluateExpressionVector(0.1*(0.1max(0.15,0.11)){备注内容},1,2,3,4,5,6,7,8,9, tsPascal);DoStatus(v);end;2019-4修复TextParsing备注编码后的bugOpCode新增回调调用类型(参考zAI工具链中的Script支持)2018-9-29新技术:新增文本探头技术可将蚂蚁程序的编程复杂度降低50%新技术:逐字符文本字符爬取性能提升%500多平台:全面支持多种IOT系统以及多处理器硬件架构新Demo:新增一个FPC的Demo该Demo不使用匿名函数工艺:兼容基于FPC对IOT的支持从底层到高级大规模统一调整命名此项调整会影响很多工程的代码细节// 本项目中的回调分为3种// call: 直接指针回调fpcdelphi有效// method: 方法回调会继承一个方法宿主的地址fpcdelphi有效// proc: 匿名过程回调只有delphi有效// 如果本项调整对于改造现有工程有一定的工作量请使用字符串批量处理工具// 在任何有回调重载的地方方法与函数均需要在后缀曾加回调类型首字母说明// 如RunOp 变更为 RunOpP() // 后缀加P表示匿名类型回调RunOp 变更为 RunOpM() // 后缀加M表示方法类型的回调RunOp 变更为 RunOpC() // 后缀加C表示指针类型的回调2018-7-6大幅修正底层库的命名规则对fpc/86/64平台支持全部基础库支持Linux下的无故障编译和运行对fpc编译器3.1.1全面支持新增大小字节序支持修复对32位fpc编译器不认for用Int64的问题修复字符串在fpc编译器运行于linux发生异常的问题新增pascal预编译工具将pascal代码规范成c风格的全部统一大小写全面兼容Linux区分大小写文件名的机制2018-4-12修复内核中的内存越界bug该bug的症状为无故提示内存无法访问通过正常debug很难排除这是是内存越界时所造成的bug2018-3-1在TPascalString内核中新增模糊字符串对比函数(SmithWaterman)优化与测试完成2018-2-28修复c转义字符buf感谢阿木qq345148965将charPos的参数命名更改成了cOffset并且加入const修饰符2018-2-26修复使用Release模式无法编译问题修复zExpression的切割分段不正确问题小幅提升字符探头的切割性能(splitToken,splitChar)因为底层重写了一个原子锁在很多record申明前加入了packed修饰符2018-2-25新增自定义表达式符号支持新增自定义表达式符号的演示2018-2-25修复嵌套函数参数不能正确展开接口的问题修复解析引擎的数字探头不能识别16进制自然数和函数问题新增一个赋值的demo范例包含变量申明静态复用动态复用总共三部曲请在范例演示中自行研究修复字符串和数字匹配联合的问题支持c代码风格0x16进制语法2018-2-6重写了一次解析器内核支持函数调用从现在起zExpression会不断更新使用zExpression有疑问请加互助qq群490269542请不要直接联系作者by.qq6005852017-6