首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

自制计算器——《自制编程语言》二

自制计算器——《自制编程语言》二 ? CharlieWang发布于 4 月 7 日 前面介绍了借助yacc和lex自制计算器。...《自制计算器(借助yacc和lex)—《自制编程语言》一》 本文介绍下不用yacc和lex实现过程,其实就是自己编写词法解析器和词法分析器来代替yacc和lex。...如果需要扩展并可以支持编程语言的话,最好注意以下几个要点 1.数值与标识符(如变量名等)可以按照上例方法通过管理一个当前状态将其解析出来,比如自增运算符就可以设置一个类似IN_INCREMENT_OPERATOR...2.本次计算器是以行尾单位,st_line会保存一行中所有信息,但在当下编程语言中,换行一般和空白字符是等效,因此不应该以行尾单位处理,而是从文件中逐字符(getc()等函数)读入解析会更好。...上例中用while语句逐字符读取地方就需要替换为getc()函数来读取。 2.自制语法分析器 大多程序员即使没自制编程语言背景,也能猜到词法分析器运行机制,换成语法分析器就有点毫无头绪了。

1.6K20

C语言+图形编程——自制象棋

用C语言做个象棋是不容易,涉及到知识点有很多方面,C语言里面的基本数据类型、运算符、顺序,分支,循环结构。还有运用到数组,函数,指针,以及我们位运算等。...做出来象棋程序,自然的话代码也不少,下面的话我就发一部分吧,把棋盘的话,棋子代码写出来,自然的话,各位都需要自己找好素材,以及我们编译器要用到图形库,记得安装好。...下面我就把棋盘代码发出来在下面 小编给大家推荐一个学习氛围超好地方,C/C++交流企鹅裙:870963251!适合在校大学生,小白,想转行,想通过这个找工作加入。..."仕")==0) { putimage(x,y,&t[12]); } if(strcmp(q,"帥")==0) { putimage(x,y,&t[13]); } } void qipan() { C语言学习群...:462127424 点击链接加入群聊【C语言】:C语言 //图型初始化 int gdriver, gmode; int x,y; int fillstyle; gdriver=DETECT; initgraph

3.3K30
您找到你想要的搜索结果了吗?
是的
没有找到

工具 | 编程书单:十本Python编程语言入门书籍

本文与大家分享一些Python编程语言入门书籍,其中不乏经典。我在这里分享,大部分是这些书英文版,如果有中文版我也加上了。有关书籍介绍,大部分截取自是官方介绍。...《像计算机科学家一样思考Python》按照培养读者像计算机科学家一样思维方式思路来教授Python语言编程。...全书贯穿主体是如何思考、设计、开发方法,而具体编程语言,只是提供一个具体场景方便介绍媒介。《像计算机科学家一样思考Python》并不是一本介绍语言书,而是一本介绍编程思想书。...和其他编程设计语言书籍不同,它不拘泥于语言细节,而是尝试从初学者角度出发,用生动示例和丰富练习来引导读者渐入佳境。 Python入门(Introducing Python) ?...《Python入门》容易理解而且读起来幽默风趣,对于编程初学者和Python语言新手而言是理想书籍

2.2K80

借助yacc和lex自制计算器——《自制编程语言》一

自制编程语言》学习记录,内容基本是摘抄原书其实原书并不是从头讲怎么写一个计算器,而是上来就给了代码,对着代码讲解。计算器代码名字为mycalc,内部完全使用double进行运算。...1.基础概念介绍 1.1 编程语言语法处理一般有以下过程: 1.1.1 词法分析     将源代码分割成若干个记号(token)处理。...1.2 lex:     lex 是自动生成词法分析器工具,通过输入扩展名为.l文件,输出词法分析器C语言代码。    ...1.3 yacc:     yacc是自动生成语法分析器工具,输入扩展名为.y文件,就会输出语法分析器C语言代码。...还是没能了解太对自制编程语言知识,算是对词法分析等基础概念有点了解。后续会不借助jacc和lex重新制作一个计算器。本文结束。

4.5K10

书中学编程:挑选有关编程书籍

毋庸置疑,经典编程书籍仍然是开发者学习编程和提升能力不错资源。 真正问题是,您该如何去挑选适合自己编程书籍呢?...我有几个忠告可以帮助您在市场上纷杂编程书籍中,找到您所需要编程书籍,我在后面的文章中也会推荐几本经典编程书籍给有兴趣学习计算机编程和软件开发的人。...快速甄别 阅读TOC(目录)是甄别编程书籍质量高低最好起点。如果目录中没有囊括您所想学习主题,那么其正文部分很可能会粗制滥造,不会对您有太大帮助。...摒弃糟粕 最糟糕选书方式莫过于单单凭借标题或者封面去选购编程书籍,但是有很多程序员仍旧习惯以这种方式去挑选编程书籍,殊不知唯一能从封面上获得有价值信息只有作者资质和本书主题。...根据编程书籍美誉度进行甄选也相当重要,但书籍质量和出版商或丛书声誉并不会有直接关系,任何出版商都可能会生产出劣质书籍,甚至精品丛书中也难免会出现个别劣质书籍,只根据出版商声誉选购书籍很少能保证高质量书籍或内容满足您需求

79190

设计模式、重构、编程规范等经典书籍书籍推荐

有关设计模式、重构、编程规范等经典书籍很多,有很多你应该已经听说过、甚至看过。今天,我就结合我经验,对这些书籍进行一个整理和点评。...《Java 与模式》 这本书可能并没有那么多人知道,出版时间也比较久远,而且是跟 Java 语言比较紧耦合,里面很多例子都是在剖析 JDK 里设计模式。...如果你熟悉 Java 语言,在我推荐其他书籍都看完前提下,没事时候可以看看这本书。 4....不过,这本书讲东西很杂,不是很聚焦,涵盖了软件开发方法、编程技巧、编码规范、重构等等诸多方面。书如其名,这本书其实更像是软件开发方面的工具类百科全书。...,能真正提升你代码能力,让编程内功转化为直接开发生产力。

5.9K20

Linux网络编程书籍

先要学习网络知识才谈得上编程 讲述计算机网络最经典的当属Andrew S.Tanenbaum《计算机网络》第五版,这本书难易适中。...2本经典著作,《Unix环境高级编程》,《Unix网络编程》二卷本。...他著作有《UNIX网络编程》(两卷本),《UNIX环境高级编程》,《TCP/IP详解》(三卷本)等,同时他还是广受欢迎教师和顾问。   ...本书称不上非常通俗,但是在有一定基础情况下还是比较容易看懂。本书是世面上极少见讲述内部网关路由技术经典书籍,内容极为丰富。...一本在kernel实现网络功能基础书籍,最好还是看英文版,翻译实在太烂了。有条件还是看原版吧,没办法啊,中国此类书籍基本上落后老美3-4年。结合linux源代码分析一书收获更多。

3.4K30

Reactjs开发自制编程语言Monkey编译器:语法解析

词法解析目的是把程序代码中各个字符串进行识别分类,把不同字符串归纳到相应分类中,例如数字构成字符串统一归类为INTEGER, 字符构成字符串,如果不是关键字的话,那么他们统一被归纳为IDENTIFIER...上面这种语法表达式也叫Backus-Naur 范式,其中Backus是IBM研究员,是他发明了第一个编译器,用来编译Fortan 语言。...在后续课程中,我们会用代码亲自绘制出对应多叉树。...链接:http://tomcopeland.blogs.com/EcmaScript.html 描述就是javascript语言语法表达式,有兴趣同学可以点进去看看。...语法解析本质就是,先让词法解析器把代码字符串解析成各种分类组合,然后根据早已给定语法表达式所定义语法规则,看看分类组合方式是否符合语法表达式规定。

89720

PHP语言书籍推荐之关于通过读书学习编程

image.png 我平时学习方式不是看视频就是看书了,还有一些比如菜鸟教程之类网站 虽然网上各种教程类网站很多,文章很丰富,但是大多比较零散。...比如廖雪峰老师教程就比较完善了,也推荐去阅读 如果有些知识没有太多介绍,这时候书特点就比较明显了,书都是比较系统讲解知识,理论性也比较强 分享下我读过这些书中好或者不好地方,给还没开始通过读书学习...PHP语言小伙伴一些建议,给在选择PHP书籍小伙伴一些参考 前几天我就买了好几本书准备研读 image.png Modern PHP(中文版)、Learning PHP设计模式、PHP7内核剖析、...image.png 这不是一本新手入门书籍了,适合已经有PHP基础小伙伴了,可以说是 PHPer 进阶必读的书了 在看这本书之前还可以看看 Laravel-China 社区组织翻译中文版PHP之道...沈唁志|一个PHPer成长之路! 原创文章采用CC BY-NC-SA 4.0协议进行许可,转载请注明:转载自:PHP语言书籍推荐之关于通过读书学习编程

1.2K30

C语言书籍——A陷阱之处

五、字符与字符串 单引号引起来字符代表是该字符ASCII码值; 双引号引起来字符串代表是一个指向无名数组起始字符指针,该数组被双引号之间字符以及一个额外’\0’(字符串标志)初始化。...代码1与代码2是等价,if和赋值语句是两个独立语句;而第三句中赋值语句在if中。 四、swith语句 语句详解 五、函数调用 C语言要求:在函数调用时即使函数不带参数也应该包括参数列表。...因为p和q所指向是同一块内存,所以p指向内存中存储的当然也是字符串’xyz'。 五、空指针并非空字符串 在C语言中将一个整数转换为一个指针,最后得到结果都取决于具体C编译器实现。...九、整数溢出 C语言中存在两类整数算术运算,有符号运算与无符号运算。 1、两个无符号算术运算中,没有所谓“溢出”一说:所有的无符号运算都是以2n次方为模,这里n是结果中位数。...ANSIC标准在中定义了INTMAX:如果是在其他C语言实现上,读者也许需要自己重新定义。

8910

Github开源免费编程书籍

) 极客学院 计蒜客 大数据 Spark 编程指南简体中文版 大型集群上快速和通用数据处理架构 大数据/数据挖掘/推荐系统/机器学习相关资源 数据挖掘中经典算法实现和详细注释 操作系统 Debian...Elasticsearch(中文版) Puppet 2.7 Cookbook 中文版 编程艺术 取悦工序:如何理解游戏 (豆瓣阅读,免费书籍) 每个程序员都应该了解内存知识(译)【第一部分】...C C 语言常见问题集 C/C++ 学习教程 Linux C 编程一站式学习 新概念 C 语言教程 C Sharp 精通C#(第6版) C++ 100个gcc小技巧 100个gdb小技巧...C 语言编程透视 C/C++ Primer - @andycai C++ FAQ LITE(中文版) C++ Primer 5th Answers C++ Template 进阶指南 C++ 基础教程...Go 语言标准库 Go命令教程 Go实战开发 Go语言博客实践 Java程序员Golang入门指南 Network programming with Go 中文翻译版本 Revel 框架手册 学习Go

7.6K40

分享Go书籍-《Go Web编程

最近几天在看一本Go书籍,看了100来页,感觉不错,分享给大家。...书籍基本信息 书籍信息: 书名:Go Web编程 作  者:(新加坡)郑兆雄(Sau Sheong Chang) 著;黄健宏 译 著作 定  价:79 出 版 社:人民邮电出版社 出版日期:2017年12...内容简介 本书全面介绍使用Go语言开发Web应用所需全部基本概念,并详细讲解如何运用现代设计原则使用Go语言构建Web应用。...值得一提是,本书在介绍Go Web开发方法时,基本上只用到Go语言自带标准库,而不会用到任何特定Web框架,读者学到知识将不会局限于特定框架,即使将来需要用到现成框架或者自行构建框架,仍然会从本书中获益...Sau Sheong Chang),既是新加坡能源有限公司数字技术总裁,也是Ruby社区以及Go社区活跃贡献者,著有《Go Web编程》《R和Ruby数据分析之旅》等4 部著作。

80900

Go 语言推荐书籍(2023)

Go是谷歌公司为了解决重大问题而设计一种小型编程语言。 快速、现代编程语言能让业余爱好者、初学者和专业人员都受益。你需要正是这样语言。...今天给大家推荐 10余本 Go语言相关书籍,都是历经多年口碑优秀作品。...Go语言编程 《Go语言编程》从整体写作风格来说,会以介绍 Go 语言特性为主,示例则尽量采用作者平常实践,而不是一个没有太大实际意义语法示范样例。...Go语言核心编程 《Go语言核心编程》是一本系统介绍Go 语言编程书籍,适合各个层次Go 语言开发者阅读,初学者可以系统地从头学习,有一定编程经验者可以选择性地阅读本书。...此外,《Go语言核心编程》专门用一章篇幅来介绍Go 语言陷阱。最后介绍Go 语言工程实践和编程思想。

2.4K11

Reactjs+BootStrap开发自制编程语言Monkey编译器:发刊词

编译原理作为计算机科学核心支柱,它集结了算法,架构设计,计算机硬件,形式语言等计算理论核心要义,是计算机科学集大成者,你看那些计算机奠基性大牛,很多都是从编译器开发上打响名头,例如比尔盖茨早期自己开发...我曾经花两年时间在网易云课堂上完成了一个编译器开发课程,我用java制作了一个C语言编译器,这个编译器不但能解释执行C语言,同时还能把C语言编译成java字节码,使得C语言也能运行到java虚拟机上...为了弥补这些缺陷,我打算重新用Reactjs+BootStrap方式开发一门新编程语言编译器,这么语言叫Monkey,它有点类似于javascript这种脚步语言,由于语法简单,实现它编译器比实现...C语言编译器要容易很多。...Monkey语言具备编程语言所有要素: 1, 有类似C语言语法结构 2, 支持变量绑定 3, 支持整形和布尔型数据类型 4, 支持算术表达式解析 5, 一级类定义(first-class)和高阶函数

65040

Reactjs+BootStrap开发自制编程语言Monkey编译器:词法解析1

; 也就说 编译器把一句代码中不同元素分成了六组,第一组是由关键字’let’组成集合;第二组是三个字符串或是字符集合;第三组由等于号’=’组成;第四组是一个个特殊符号’+’组成集合;第五组是由数字...‘5’组成集合;第六组是符号’;’独自组成一个集合;为了区分不同集合,我们为每一个集合赋予一个不同值,第一组赋值0,第二组赋值1,依次类推,第六组赋值5。...直接赋与数值不利于人理解,于是我们可以用编程中常量定义方法,用不同常量来对应不同值,例如: const LET = 0; const IDENTIFIER = 1; const EQUAL_SIGN...因此经过第一层处理后,编译器看到再也不是具体字符,而是代码中不同元素所对应分类。..., 第二行数字6,它对应Token中,分类值为4,对应到代码中是NUMBER,并且它所在行号是1,从这两处结果看,词法解析结果基本正确。

2.5K10

苹果系统编程必看书籍

Core Animation 不只是动画,更多是对图层操作。 2.iOS编程(第4版) 全书涵盖了开发iOS应用方方面面。...从Objective-C基础知识到新增加语言特性;从AppKit库到常见Cocoa设计模式;从Xcode技巧到Instruments等。如果读者刚 接触iOS编程,阅读本书前两章可以快速入门。...如果读者已经有iOS编程经验,阅读本书可以拾遗补缺。...3.Objective-C Programming (2nd Edition) 这本书涉及到内容比较初级,但是也写很全面,看完后,可以对整个 Objective-C 语法、常用类跟初学事经常遇到问题都有个全面的了解...这本书最大优点在于它一次次带你入坑,再帮你拔出来,这恐怕是最浅显告诉你如何一步步从做一个App到做好一个App。

1K40

Reactjs+BootStrap开发自制编程语言Monkey编译器:创建简易页面IDE

接着执行以下命令: npm install --save react-bootstrap 上面的命令用来安装试用与react框架boostrap UI控件库,我们将使用它来开发我们Monkey编程语言...接下来,我们将进入MonKey语言IDE开发,我们将利用reactjs组件化开发特点,通过乐高式搭积木方式,逐步开发出一个功能丰富页面IDE出来,我们先为项目增加一个新react组件。...这就是我们想要Monkey编程语言开发所用IDE,相当于Visual Studio或Eclipse,当然现在看起来它太简陋,我们后续会慢慢增强其功能。...在React出现之处,组件创建方法是通过调用React.createClass来创建组件,现在网上或一些书籍对React讲解还是基于这种办法,我们必须意识到,这种办法是过时办法。...这里JSX是一个比较抽象概念,React初学者很容易被这个概念搞得糊里糊涂,就像C语言初学者总会被‘指针’搞得二和尚摸不在头脑一样。

4.6K20

reactjs开发自制编程语言编译器:实现变量绑定和函数调用

编程时,我们会初始化一个变量,给变量赋初值,例如下面语句: let x = 5*5; 上面代码被编译器解读后,变量x就会和数值25绑定在一起。...在Monkey语言中,函数跟常量一样,可以直接赋值给变量,于是它就能跟变量绑定起来,于是函数就可以像变量一样作为参数进行传递,或作为一个函数调用返回值,首先我们先增加函数符号对象: //change...环境”,get接口根据输入变量名在哈希表中查询其对应数值,set用于将变量名与给定数值绑定起来,其中outer用于将不同绑定环境连接起来,例如上面讲过函数调用例子,在函数调用前代码执行对应一个...)”,这条语句执行相当于编译器解释执行函数体内代码,注意这时候解释器绑定环境变量已经变了。...从运行结果看,add输入参数是1,2,执行后返回结果是19,这意味着函数体内变量i对应值是10而不是外层变量i对应5,由此我们编译器对代码执行结果是正确,它能将变量与正确数值对应起来,在函数体内绑定环境里并没有定义变量

74630

学习C语言必备书籍-从入门到精通

学习好并精通C语言是成为优秀程序员首要要求,在这里推荐一些学习C语言从小白到高手必看书籍。也是我几年来收集一些精华本。...2、C语言程序设计(第二版)/The C Programming Language/Kernighan 比较经典c语言书籍,个人觉得可以当词典来查阅,内容详实,讲解得当 链接:http://pan.baidu.com... 密码:iay0 3、C专家编程 C语言三剑客之一,里面的内容涉及到编译层面,深入到C语言核心,讲解了C语言运行详细过程,同时也涉及到了汇编语言和计算机组成原理,内容很深,需要好好研究 链接:http...://pan.baidu.com/s/1qXARxGK 密码:pdou 应用 1、C现代编程 很好一本讲利用C语言基本特性完成C++中面向对象设计框架,同时也指出不少在实际应用中常见程序分离技巧。...链接:http://pan.baidu.com/s/1qY2uhxa 密码:pkfg 相信在将这几本书仔细研读几遍后,你C语言技巧和编程素养会提高一大截。

4.4K62

Reactjs开发自制编程语言Monkey编译器:高能技术干货之语法高亮1

使用各种IDE编写代码时,其有一个功能是关键字高亮,当你敲下字符串形成编程语言关键字时,它颜色会比普通变量更加靓丽显眼,而且这种高亮是即时,当你在编辑器上敲下”if”两个字母时,这两个字母颜色会变成引人注目的红色...,当你在”if”后面添加其他字符时,字符串颜色就会从显眼红色转变为令人难以察觉浅色,例如白色。...关键字即时高亮是一个难度很大技术点,由于我们自创Monkey编程语言所使用IDE是网页版,在web上实现关键字高亮更是颇费周折,本节技术含量很大,完成本节后,你数据结构,算法,设计模式等技术内力会有明显提升...,这个表key是Monkey语言关键字对应字符串,例如let, if , else 都是Monkey语言关键字,哈希表值,则是我们手动为关键字专门生成Token对象。...在nextToken函数中,词法解析器在解析代码时,当读入一串有连续字符组成字符串时,这个字符串可能属于Monkey语言关键字,也可能就是普通变量而已,那么当解析到字符串时,解析器现在关键字哈希表中

82930
领券