atitit.自己动手开发编译器and解释器(2) ------语法分析,语义分析,代码生成--attilax总结 1. 建立AST 抽象语法树 Abstract Syntax Tree,AST) 1 2. 建立AST 语法树----递归下降(recursive descent)法 2 3. 语法分析概念 2 3.1. 上下文无关语言,非终结符(nonterminal symbol),终结符(terminal symbol).注 2 3.2. 最左推导.当然也有最右推导 3 3.3. 分支预测的…
atitit.自己动手开发编译器and解释器(1) ------词法分析--attilax总结 1.   应用场景:::DSL 大大提升开发效率 1 2. 2. 流程如下::: 词法分析(生成token流) >>>>语法分析(生成ast) >>解释执行... 2 3. 如何进行词法分析?Fsm状态机(自动机) 2 4. 使用状态模式构建FSM  (简单,易用..推荐首选) 2 5. ---代码( 状态模式构建FSM ) 3 6. 词法分析概念 3 6.1. 词法分析(英…
稍微说明一点,整型常量和上面的标识符的词法,在调用lex.DefineToken时都多传了一个参数.这个参数是可选的描述信息,如果不传会直接使用正则表达式的字符串形式.而标识符的正则表达式有4万多个字符那么长而且没有可读性,所以加一个额外字符串描述一下.它将来会被用于生成编译错误信息. 最后我们来写空白符.换行符和注释的正则表达式.这三个是完全按照C# spec的规范编写的.其中注释包含了两种://开头直到换行的注释已经/*开头直到*/的多行注释.大家可以学习一下它们的正则表达式怎么写: var…
上回我们介绍了两种有穷自动机模型——确定性有穷自动机DFA和非确定性有穷自动机,以及从正则表达式经过NFA最终转化为DFA的算法.有些同学表示还是难以理解NFA到底怎么转化为DFA.所以本篇开头时我想再多举一个例子,看看NFA转化为DFA之后到底是什么样.首先我们看下面的NFA,它是从一组词法分析所用的正则表达式转换而来的.这个NFA合并了IF.ID.NUM.error这四个单词的NFA.因此,它的四个接受状态分别代表遇到了四种不同的单词. 用上一篇学到的方法,我们需要求出一个DFA,它的每个状…
atitit.提升软件开发的效率and 质量的那些强大概念and方法总结 1. 主流编程中三个最糟糕的问题 1 1.1. 从理解问题后到实现的时间很长 1 1.2. 理解和维护代码  2 1.3. 学习曲线高  2 1.4. 扩展性烂 2 1. Coc 2 2. Dsl 2 3. DSM 3 4. 4gl 3 5. 产生式编程(Generative Programming,GP) 3 5.1. 为重用而开发以及使用重用的开发 3 6. 在模型驱动开发(MDD)介绍MDA 4 7. ·  元编程…
Atitit. 提升软件开发效率and 开发质量---java 实现dsl 4gl 的本质and 精髓  O725 1. DSL主要分为三类:外部DSL.内部DSL,以及语言工作台. 1 2. DSL规则 2 2.1. DSL = 整洁的代码 2 2.2. DSL必须以文本代码的形式出现 2 2.3. DSL的语法应该尽可能地接近英语或者其他自然语言 2 3. DSL 文本形式 or 图形标识 2 4. 实现方式 2 4.1. 2. 管道抽象 2 4.2. 3. 层次结构抽象 3 4.3. 4.…
这次聊聊「编译器和解释器」. 编程语言中,有以C为代表的编译型语言和以Perl为代表的解释型语言.不管是哪种,程序都是以人类能够理解的形式记录的,这种形式计算机是无法理解的. 因此,才会有编译器和解释器. 对于编译型语言,是使用编译器将人类可读的代码转换为机器能够理解的「机器语言」文件,然后通过执行这个「机器语言」文件来实现程序的执行. 另一方面,对于解释型语言,是使用解释器将人类可读的代码逐行解释,一边解释一边执行这个程序.(这里的解释是将代码解释成机器语言,让计算机能够理解) 甚至有的语言既…
16 个回答 默认排序​ RednaxelaFX JavaScript.编译原理.编程 等 7 个话题的优秀回答者 282 人赞同了该回答 能.我一开始学编译原理的时候就是用Java写了好多小编译器和解释器.其实用什么语言来实现编译器并不是最重要的部分(虽然Java也不是实现编译器最方便的语言),最初用啥语言都可以. 我在大学的时候,我们的软件工程和计算机科学的编译原理课的作业好像都是可以用Java来写的.反正我印象中我给这两门课写的作业都是用的Java. ===================…
Atitit codeblock c++开发环境建立attilax总结 1.1. C++的重要意义 1 1.2. 项目ide的选项 1 1.3. 安装MinGW  (基于GCC的C++编译器)  50M 1 1.4. 安装codeblock 30M 2 1.5. 建立项目 2 1.6. halo 2 1.7. 编译 2 1.8. 断点调试发现缺少gdb.Exe提示.. 3 1.1. C++的重要意义 目前来看,性能是最大优点了..如果一个算法用java实现测试太慢,那么可以转换翻译为c++试试.…
 on 2012-07-14 21:24 Bang 阅读(102) 评论(0) 编辑 收藏  续 第二部分 初始后端实现 框架后端支持编译器和解释器.现在框架抽象类Backend有两个极简版实现,一个为编译器另一个为解释器.图2-7 展示了它们的UML类图. 图2-7 子类CodeGenerator和Executor分别是后端的编译器和解析器实现. 编译器 编译器后端做代码生成.backend.compiler包中的类CodeGenerator实现框架抽象类Backend.现在它被最大简化了.清…
Python 编译器与解释器 Python的环境我们已经搭建好了,可以开始学习基础知识了.但是,在此之前,还要先说说编译器与解释器相关的内容. 如果这部分内容,让你觉得难以理解或不能完全明白,可以暂时跳过,等以后再回过头来重新读一遍. 一.数据的表示方式 我们都知道,现实生活中,数字的表示方式有很多种,常见的有二进制.八进制.十进制和十六进制.十进制我们都很熟悉,加法口诀表我们都背过,主要是使用0~9,这10个阿拉伯数字来构建整个十进制的体系,其中最核心的法则是“逢十进一”,借位则是“借一当十”…
原作:Archie Mistry 翻译:豌豆花下猫@Python猫 原文:https://morioh.com/p/765b19f066a4 Python 是一门对初学者友好的编程语言,是一种多用途的.解释性的和面向对象的高级语言. 它拥有非常小的程序集,非常易于学习.阅读和维护.其解释器可在Windows.Linux 和 Mac OS 等多种操作系统上使用.它的可移植性和可伸缩性等特性使得它更加容易被运用. Python 库可用于以下用途: Web 开发 数据科学 机器学习 多媒体 软件开发…
编译器与解释器 编译器/解释器:高级语言与机器之间的翻译官 都是将代码翻译成机器可以执行的二进制机器码,只不过在运行原理和翻译过程有不同而已. 那么两者有什么区别呢? 编译器:先整体编译再执行 解释器:边解释边执行 用一个通俗的例子进行比喻:我们去饭馆吃饭,点了八菜一汤.编译器的方式就是厨师把所有的菜给你全做好了,一起给你端上来,至于你在哪吃,怎么吃,随便.解释器的方式就是厨师做好一个菜给你上一个菜,你就吃这个菜,而且必须在饭店里吃. Python解释器种类 Python有好几种版本的解释器:…
atitit.微信项目开发效率慢的一些总结 #---理念问题..这个是最大的问题.. 要有专人提升开发效率才好.. #---没有一个好的开发方法体系.... ini deve 法. fell asd+xp+ipd 比较好.. #---团队配合弱的.. 研发体系延续早期的一个独立的开发团队负责一个独立产品...  面对客户小批量个性化的需求,太高的成本.太长的周期,做会亏本,不做会损失市场    #---需求管理不足...没有需求更改流程.  需要需求管理,需求的范围不断扩大...    作者 老…
atitit.提升软件开发效率大的总结O5 #---平台化.组件化 1 #--cbb公用模块的建设 1 #---内部最佳流程方法跟实践的总结 2 #---内部知识体系的建设 2 #---问题Qa库的建设. 2 #---内部框架/标准类库/api/业务库的建设... 2 #----开发工具集和配置的建设.... 2 #---代码生成跟代码转换工具的集合,互操作等 3 #----常常关注开发语言,类库,框架,工具的新特性,补充到我们的内部框架里面.固化下来. 3 #---代码输入法 3 #----热…
Atitit mybatis快速开发 的sql api接口 1.1. sql模式 开发速度大大快与 映射模式1 1.2. MyBatis Mapper1 1.2.1. 代码2 1.2.2. 原理2 1.3. 参考资料3 1.1.   sql模式 开发速度大大快与 映射模式 1.2. MyBatis Mapper 可能有些人也有过类似需求,一般都会选择使用其他的方式如Spring-JDBC等方式解决. 能否通过MyBatis实现这样的功能呢? 为了让通用Mapper更彻底的支持多表操作以及更灵活的…
Atitit 项目管理 提升开发效率的项目流程方法模型 哑铃型  橄榄型 直板型 项目主体三个部分 ui界面,中间层,数据库 按照不同的比重可以分为一下三个模型  哑铃型  橄榄型 直板型 哑铃型 开发效率更高,性能反之 ,ui和数据库层比较大,中间的接口层比较薄弱 直板型 橄榄型,追求性能型..中间打,俩偷笑 从语言看ui 界面h5是dsl 4gl+js  3.5gl....数据库是sql ,dsl  4gl 语言代际比较高.带来更高的开发效率性... 作者:: 绰号:老哇的爪子claw of…
atitit.为什么 java开发要比php开发速度慢?? 1. 界面开发方面vs php 1 2. 架构繁琐 1 3. 环境配置复杂 1 4. 类库jar包冲突(严重) 1 5. 配置文件热部署的缺失(严重) 2 6. 热部署的缺失(严重) 2 7. 参考: 3 1. 界面开发方面vs php javaer的理念验证滞后,常常手写界面与tag,而不能好好利用dw 解决::好好利用dw这个最强大的html ide吧..不要使用struts,jstl一类框架的tag,大大破坏布局,而且难以调试..…
atitit.提升软件开发的生产力关健点-------大型开发工具最关健 1. 可以创作出更好的工具遍历自己 1 2. 大型工具包括哪些方面 2 2.1. ide 2 2.2. dsl 2 2.3. .frmwk..lib 2 2.4. 模块化soa 2 3. Eat Our Own Dog Food 2 4. 每样小工具只做一件事 2 5. 以command line/web为接口 3 1. 可以创作出更好的工具遍历自己 生产力可以有十倍甚至百倍的差距.这是其他行业很少见到的现象, 一般行业只…
Atitit. Ati IDE 开发平台的第一版规划 1. 增加业务类型复杂类型内置1 1.1. 简单类型string int float自动类型转换以及2 1.2. $变量str连接2 2. Dsl2 3. 类库2 3.1. 输入法工具箱,词库clr工具 and 垃圾词库2 3.2. 翻译lib tools2 3.3. Menu mana2 3.4. 2 3.5. 商户管理2 3.6. 文章管理(by merchant and admin )2 3.7. 普通用户..reg login  lo…
自己动手开发手机APP控制西门子200smart 教程(原创干货)   自己动手开发手机APP控制西门子200smart 教程(原创干货) 2020-02-09 19:06:45 自己动手开发手机APP控制西门子200smart 教程(原创干货) 大家好,最近赶上肺炎疫情,在家有空分享给大家一些控制教程,鸿控主打手机APP开发教程 需要有些基础,最起码电气专业,懂电气跟PLC就可以. 准备材料:西门子200SMART SR40 Y一个 鸿控物联网网关一个 网线一个(能接局域网) 软件:STEP…
Atitit.注解and属性解析(2)---------语法分析 生成AST  attilax总结  java .net 1. 应用场景:::因为要使用ui化的注解 1 2. 使用解释器方式来实现生成AST 1 3. 识别TerminalExpression和NonterminalExpression 2 1.1. 单词流必须识别为保留字,标识符(变量),常量,操作符(运算符 )和界符五大类 2 1.2. 操作符(运算符 )::: 2 4. 生成括号操作符表达式 2 5. 逗号操作符表达式 5…
Atitit.软件架构高扩展性and兼容性原理与概论实践attilax总结 1. 什么是可扩展的应用程序?1 2. 松耦合(ioc)2 3. 接口的思考 2 4. 单一用途&模块化,小粒度化2 5. 组合(Composition),而不是继承(inheritance) 2 6. Ocp原则开闭原则2 7. Plugin系统2 8. 流程扩展工作流系统,流程自定义2 9. Ui扩展 html53 10. 数据独立性3 11. 脚本与hotdeploy3 12. 表处理扩展if else (数据与数…
Atitit mybatis 3 3.2 3.3  3.4 新特性attilax总结 1.1. iBATIS 3 内的新特性.html1 1.2. MyBatis团队于2013年2月21日正式发布 MyBatis 3.2.01 1.3. MyBatis 3.3.0 发布,此版本主要有两个改进:1 1.4. 持久层框架 MyBatis v3.4.1 发布 2016-06-26 2 2. Mybatis直接执行sql的改进 SqlMapper2 2.1. SqlMapper提供的方法2 3. 参考资…
Atitit.字节数组转字符串 base64 base16 Quoted-printable 编码原理设计 attilax 总结 1. Base64编码, 1 2. Base64实现转换原理1 3. Base16 md5编码2 4. Quoted-printable 编码 QP编码2 5. Base64的俩个子模式 urlsafe Or  url unsafe3 6. UUencode编码 3 7. private static char toChar(int index, boolean is…
Atitit 插件机制原理与设计微内核 c# java 的实现attilax总结 1. 微内核与插件的优点1 2. 插件的注册与使用2 2.1. Ioc容器中注册插件2 2.2. 启动器微内核启动3 3. 插件的俩种执行策略3 3.1. 必须手动接续,否则自动终止(推荐)3 3.2. 必须手动throw  stop ex终止,负责自动接续..4 4. 插件链的生成原理4 5. -------code4 6. 参考7 1. 微内核与插件的优点 但凡有生命力的产品,都是在扩展性方面设计的比较好的,因…
atitit.html css框架Bootstrap  Foundation的比较与不同 attilax大总结 1. Bootstrap  Foundation的比较与不同1 2. Bootstrap 教程2 2.1. Bootstrap 简介2 2.2. Bootstrap CSS2 2.3. Bootstrap 布局组件2 2.4. Bootstrap 插件3 2.5. Bootstrap 其他3 3. Bootstrap 的attilax总结3 4. 参考3 1. Bootstrap  F…
atitit. 企业组织与软件project的策略 战略 趋势 原则 attilax 大总结 1. 战略规划,适当的过度设计 1 2. 跨平台化 1 3. 可扩展性高于一切 1 4. 界面html5化 2 5. web界面spa ajax化 2 6. Vm 平台化 2 7. 插件化 2 8. 自包括.容器化隔离. .iframe 3 9. 延迟初始化 cfg  bat化.. 3 10. #--------------------------------other 3 11. 全球化(国际化) 3…
Atitit.研发团队与公司绩效管理的原理概论的attilax总结 1. 四个理念 1 1.1. 绩效管理的三个目的.四个环节.五个关键2 1.2. 绩效目标smart2 2. 考核对象2 3. 绩效管理模式2 3.1.1. 德能勤绩2 3.2. 6.2 检查评比2 3.3. 6.3 共同参与2 3.4. 6.4 自我管理2 4. 绩效实施流程 2 5. 绩效方法(BSC.KPI及360度考核)3 5.1. kpi3 6. 第9章 绩效管理与绩效评价 9.1 绩效管理和绩效评价的基本概念 9.2…
Atitit. 破解  拦截 绕过 网站 手机 短信 验证码  方式 v2 attilax 总结 1. 验证码的前世今生11.1. 第一代验证码 图片验证码11.2. 第二代验证码  用户操作 ,比如要求拖动等21.3. 第三代验证码 手机验证码 短信验证码22. 短信验证码的原理23. 常用破解法23.1. 漏洞绕过法23.2. 手机 软件转发法23.3. 手机api法33.4. 默认万能密码法 测试维护万能验证码33.5. 网站服务器短信发出截获33.6. 配置文件法33.7. 前端源码截获…