首页
沸点
课程
数据标注
HOT
AI Coding
更多
直播
活动
APP
插件
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
底层原理
订阅
拾忆本尊
更多收藏集
微信扫码分享
微信
新浪微博
QQ
28篇文章 · 0订阅
然并卵系列:来写个 Brainfuck 解释器吧
最近在 Codewars上做练习,某道题的内容是实现一个 brainFuck(简称BF语言) 解释器。动手实践的过程还是很有趣的,中间也遇到了各种各样的问题,最终通过测试,代码也比较接近目前的 JS 高分 solution。这篇文章准备聊聊相关的一些知识和实现的细节。 Brai…
解释器模式
这个在编译器的语义分析过程中常用的一种模式,即分析虚拟语法树(AST),但它并不能解决如何生成语法树的问题。 在实际的工作中,有时也会遇到一些类似的工作,比如我们会使用DSL来解决一些复杂的业务问题,这时候就需要我们来定义一些简单的语法来实现。再比如 比如前段时间需要开发一个m…
JVM之模板解释器
早期的字节码解释器既然已经不能适应时代的发展,那么JVM的工程师想出了什么优化呢?字节码解释器慢是因为编译器生成的机器指令不够理想,那么我们直接跳过编译器,自己动手写汇编代码不就行了。没错,现在的HotSpot就是这样干的,这种解释器便称为模板解释器.......
浅谈汇编器、编译器和解释器
在计算机诞生不久的早期年代,硬件非常昂贵,而程序员比较廉价。这些廉价程序员甚至都没有“程序员”这个头衔,并且常常是由数学家或者电气工程师来充当这个角色的。早期的计算机被用来快速解决复杂的数学问题,所以数学家天然就适合“编程”工作。 首先来看一点背景知识。计算机自己是做不了任何事…
折腾Java设计模式之解释器模式
意图 给定一个语言,定义它的文法表示,并定义一个解释器,这个解释器使用该标识来解释语言中的句子。 主要解决 对于一些固定文法构建一个解释句子的解释器。 何时使用 如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言中的句子。这样就可以构建一…
用 Javascript 实现一个简易 BrainF**k 解释器
高中的时候就跟 @MatRush 发现了一个名字超级好玩的编程语言叫 BrainF**k,它比较搞脑筋,因为所有的编程操作都是集合在操作符里面,然后控制指针偏移和内存值的修改来进行一系列操作。 这与后面发现的 HVM(Hack Virtual Machine)有异曲同工之妙其实之
用 JavaScript 编写λ演算解释器
本文作者采用 JavaScript 语言,从语法、Token、Lexer(词法分析器)、Parser、求值、输出、整合等部分详细介绍了λ演算的定义和主要原理。
从零开始写一个Javascript解析器
简单点说,使用 Javascript 运行Javascript代码。 这篇文章来告诉你,如何写一个最简单的解析器。 可以把 Javascript 代码写进一个 Js 文件,然后在其他文件 require 它,达到执行的效果。 NodeJs 会缓存模块,如果你执行 N 个这样的文…
以太坊指令集与操作码解释器
EVM事实是个堆栈机器。指令可能会使用栈上的数值作为参数,也会将值作为结果压入栈中,而指令的构成是由我们所编写的合约的ABI文件所生产,大致结构为 这样,对evm的操作实际上是操作码对程序的操作。 总结:与智能合约交互,你需要发送原始字节。他会进行一些映射,然后进行运算。方法调…
如何构建你自己的 JVM (1) 解释器
一些相关的概念, 汇编指令, JVM 字节码指令. 指令一般很简单, 描述了一个具体的操作. 比如 mov &ex, 1 => 将整数 1 放到寄存器 ex 里. bpush 1 => 将 byte 1 放到操作数栈顶. 简单来说寄存器就是个 Map. 可以根据寄存器地址(ke…