首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
编译原理
订阅
小虎不头秃
更多收藏集
微信扫码分享
微信
新浪微博
QQ
12篇文章 · 0订阅
编译原理实战七:从编译角度认识作用域
之前的文章讲解了编译的基础以及如何用 Antlr 重构了脚本解释器(感兴趣的可以去看下哈),对编译已经有了一定的认识。本篇将进一步讲解作用域和生存期相关的知识。主要解决如下几方面问题: 提升变量存储机制,不能只把变量和它的值简单地扔到一个 HashMap 里,要管理它的生存期,…
编译原理实战六:使用编译器前端工具Antlr生成词法、语法分析器(下)
上篇文章,讲解了用 Antlr 生成了词法分析器和语法分析器。今天主要是来补充和完善一下语法规则,看一看怎样用最高效的速度,完善语法功能。 上篇提到 Antlr 能自动处理左递归的问题,所以在写表达式时,我们可以大胆地写成左递归的形式,节省时间。但这样,我们还是要为每个运算写一…
编译原理实战五:使用编译器前端工具Antlr生成词法、语法分析器(上)
前面几篇讲解了词法分析和语法分析,在例子中提到的词法和语法规则也是高度简化的。虽然这些内容便于理解原理,也能实现一个简单的原型,在实际应用中却远远不够。实际应用中,一个完善的编译程序还要在词法方面以及语法方面实现很多工作,如下图可以直观地看一下。 如果让编译程序实现上面这么多工…
编译原理实战四:带你用JS实现一门简单的脚本语言
编译原理实战二:语法分析之 纯手工实现一个公式计算器、 编译原理实战三:语法分析之 怎么消除左递归、怎么确保正确的优先级和结合性? 两篇文章已经介绍了如何实现表达式的解析,并通过一个简单的解释器实现了公式的计算。但这个解释器还是比较简单的,看上去还不大像一门语言。那么如何让它支…
编译原理实战三:语法分析之 怎么消除左递归、怎么确保正确的优先级和结合性JS版?
在编译原理:语法分析实战纯手工实现一个公式计算器中已经讲解了如何初步实现一个简单的公式计算器,并直观地获得了写语法分析程序的体验,对语法分析有了已经的认识。 本篇文章主要是解决上篇文章中关于怎么消除左递归,怎么确保正确的优先级和结合性等问题 不过在课程开始之前,先来简单地温习一…
编译原理实战二:语法分析之 纯手工实现一个公式计算器JS版
通过本篇文章的学习你可以掌握语法分析的原理和递归下降算法(Recursive Descent Parsing),并初步了解上下文无关文法(Context-free Grammar,CFG)。 本篇内容借鉴自极客时间编译原理课程,有兴趣的可以去购买课程啊,本篇主要是希望更多的人可…
编译原理三:词法分析详解
词法分析是编译的第一个阶段,在单词的级别上 分析和翻译源程序。其涉及的理论只是包括:有限自动机理论;有限自动机理论与正则文法、正则式之间在描述语言方面有一一对应的关系。 正规文法:是3型文法,这个在上篇编译器基础中有提到。正则文法是描述正规集的文法,可用于描述程序涉及语言的语法…
编译原理二:编译的基础知识
词法规则:规定了字母表中那些字符串是单词符号,单词符号一般包括:关键字、标示符、常量、运算符、界限符。我们用正规式和有限自动机理论来描述词法结构 和进行词法分析 语法规则:规定了如何从单词符号来形成语法单位。现在多数程序语言使用上下文无关文法来描述语法规则。 语义对于一个语言来…
编译原理一:想初步了解编译原理?看这篇文章就够了
作为程序员,不管是前端开发工程师还是后端开发工程师,编译技术都与我们的工作息息相关。在实际工作中也经常会碰到需要编译技术的场景。比如,前端开发工程师想要了解TypeScript是如何把一门语言翻译成另一门语言的,以及babel是如何编译JavaScript的等等。学习编译技术有…
编译原理四:语法分析详解
预测分析是递归下降分析技术的一个特例,通过 在输入中向前看固定个数(通常是一个)符号来选 择正确的A-产生式。