随笔分类 - Programing Languages
摘要:5. core核心模块 + 核心模块会通过compiler模块提供的调用compiler的功能, 将用户的输入转为VM直接的输入 + 编译模块用来编译, 而核心模块用来执行 + 在core.h文件中 + 在core.c文件中(在core.c中实现内部类的方法, 并定义bindMethod的函数并定到
阅读全文
摘要:4 编译2 编译 1. 编译阶段主要就是生成指令, 打一个比方, 现在有一个项目, 领导为了完成这个计划, 将这个计划按照几个步骤划分(就是指令), 领导就是用这些指令指定了计划的运行流程, 但是项目具体怎么落实是交给员工的, 员工得到了这个指令, 怎么执行就让员工自己来完成, 比如, BUY\_F
阅读全文
摘要:3. 内置对象 list对象 range对象 map对象 thread对象 算法 + hashObj, 主要是从对象中提取出数字或者字符串进行hash即可
阅读全文
摘要:4. 编译 + 创建compiler目录, 也就是我们C语言项目的compiler模块, 该模块与使用该脚本语言的用户是最亲近的了, 因为编译就是一个桥梁, 将 用户输入的文本 转换为 内部调用 , 在VM内部, 我们通过Value统一操作对象, ObjHeader实现多态等功能, 对于Value和
阅读全文
摘要:2. 面向对象的脚本语言的类的实现 只要是一个对象就要有一个ObjHeader结构体, 该结构体位于该对象的开头 ObjHeader结构 Value结构体(Value不是对象, 他在脚本语言层面是一个引用, 因为没有类型, 但是在C语言中需要Value保存属性) Class类对象结构体 在构建出上述
阅读全文
摘要:1. 词法分析器 函数 + skip\_one\_line: 跳过一行, 会在skip\_comment中注释为//的时候调用 + skip\_comment: // 和 / / + skip\_blanks: 跳过空白行, 会在skip\_comment处理完注释之后调用, 同时在get\_nex
阅读全文
摘要:词法分析器 函数 + skip\_one\_line: 跳过一行, 会在skip\_comment中注释为//的时候调用 + skip\_comment: // 和 / / + skip\_blanks: 跳过空白行, 会在skip\_comment处理完注释之后调用, 同时在get\_next\_
阅读全文
摘要:符号表 + opcode代码中的操作数都是一个符号表中的索引, 在符号表中存储的是字符串, 方法名, 变量名, 变量值, 让虚拟机通过索引在符号表中获取真正的参数 字母表 + 在我们定义的脚本语言风格中用到的所有不可以再分的符号放到字母表中, 通过字母表中的单个字符组合出各式各样的单词
阅读全文
摘要:模块 + 词法分析器 + 语法分析器 + 代码生成器 操作 + 通过词法分析器将源文件转为Token存储起来 + 通过语法分析器调用词法分析器获取一个Token, 在调用代码生成器生成目标代码, 所有是并行的
阅读全文
摘要:不同 + 编译型语言: + 编译型程序所生成的指令时二进制形式的机器码和操作数, 就是所谓的二进制流, 二进制程序是CPU可以直接识别执行的 + 解释性语言: + 脚本语言的解释器是二进制形式的, 可以被CPU直接识别的, 但是脚本解释器的输入是脚本语言字符串, CPU执行脚本语言解释器, 而脚本语
阅读全文
摘要:分类(脚本语言分类的标准是脚本语言的语法风格) + 基于命令的 类似于汇编语言, 一行代码有操作码和参数组成, 所以不支持循环 + 基于规则 + 面向过程 + 面向对象: + smalltalk是世界上第一个纯正的面向对象语言
阅读全文