实现一门新的语言(1)

背景

两个月前自学了编译原理, 在草草学习了前端之后实现了一门不能算语言的语言, 一直想对它进行维护, 但是无奈源代码是用java写的, 就我目前的状态而言对java完全提不起兴趣, 这段时间学习C++, 在实现完正则表达式之后几乎找不到high点, 于是决定用C++重新实现一门语言. 为了增加难度我准备实现一门面向对象的语言, 但是同时也为了降低难度我决定暂时不写该语言的CFG(事实上我已经不太记得怎么写上下文无关文法了), 等到具体实现过程中, 怎么简单怎么写… 因为我实际水平有限, 编译原理学习也很有限, 可能很多地方的实现的方式会按照自己的想法而不是标准来, 如果大家感兴趣欢迎和我交流…

实现计划

为了达到锻炼C++的效果, 同时为了延长开发周期, 不让自己又陷入全世界寻找练手项目的困境, 开发过程中我会遵照一下原则 :

  1. 所有用到的数据结构, 算法均采取徒手撸的方式, 换句话说, 在这里你可能看不到标准库中的容器和算法.
  2. 因为我目前对于前段的了解非常有限, 同时我也不打算花时间去研究flex, bison之流, 所以可能词法分析和语法分析会采用手工编码的方式, 所以也是手撸.
  3. 所以你可以看到我这个项目对于标准库的依赖相对来说比较低, 也是希望提高自身的编码水平吧, 所以可能出现中途造轮子的章节, 望谅解.
  4. 最后一点也是最重要的一点, 我真的只是一个C++初学者, 我接触C++才一个月不到, 同时我接触编程才刚刚一年, 所以无论是在语言方面或者是在算法实现方面如果有任何问题都可以随便指出, 我非常希望得到他人宝贵的意见.

实际的代码应该从下一节开始, 今天粗略地看了一下之前博客, 由于自己之前一直不重视排版, 才发现以前的文章排版像屎一样, 自己都看不下去了, 今后会努力改善...

?

时间: 2025-01-13 21:41:36

实现一门新的语言(1)的相关文章

如何学习一门新的语言

如何学习一门新的语言? 1 学习的目的?解决问题. 2 如何解决问题?通过语言本身和通过和语言相关的库. 学习就是学习语言的使用以及库的使用. 我们一般都学习过一种或者几种语言,从学习语言的过程中我们自己已经摸索出了语言的特征.并且使用它来解决了一些问题.然后我们把这些问题重新提出,用新语言如何解决?这是很好的练习过程. 语言的元素: 语元(在词法分析中叫token),这个是构成语言的基本元素.在不同语言下有不同的规则.语元的种类包含关键字,标识符,符号.要知道这种语言的关键字都有哪些,标识符的

第1章:Python语言介绍/1.1 如何学习一门新开发语言

* 如何学习一门新开发语言 1. 学习新语言套路 1. 了解语言背景:是干什么的? 2. 安装环境 1. 下载安装包:Python-3.7.1.tar.xz.JDK. 2. 找一款好用的IDE: 1. JAVA:eclipse/myeclipse 2. C语言:VIM 3. C++:VISIO STUDIO 4. GO语言:LiteIDE 5. PYTHON:IDLE 3. 找一份容易上手的教程 1. 语言表达简单易懂 2. 实例多 3. 代码能落地 4. 坚持看完 4. 勤动手,勤总结 5.

有编程基础的人如何快速掌握一门新的语言

如果你已经熟练地可以用一种语言编写项目了,那么如何快速学习另一门语言? 首先,学习资料是必须有的.最好是教程视频,还有这门语言的参考手册(chm版)是最好的. 学习的过程中要合理的规划好自己的时间.学习周期,一天的学习时间,休息时间等,反正就有自己的时间概念. 当你熟悉这门语言语法以后,这时你就要关注数据的跳动与这名语言对数据的处理了.因为语言只是一种工具,至于用哪种语言,只是看符不符合实际需求而已.

201671010111 2016-2017-2《Java程序设计》新学期一门新语言的新学习

大学第三个学期的学习开始了,一门新的语言--java列进了本学期的学习任务当中.带着一份憧憬却又难免有点惧怕,课本是从未有过的厚大,老师说带着我们将它读薄.似乎有了征服的力量. 第一节理论课老师告诉大家这学期的课程将施行"反转课堂教学法".对于从来都是以上课老师在讲,我们学的上课方式进行学习的我们而言.前期难免是有点困难的,但是我们会努力地去做到这些并追求做得更好.这样的上课方式可以提升我们自主学习的能力,培养我们的自学兴趣,使得我们在学习上处于主动方,而不只是被动的在学,在接受.&q

如何学习一门新语言

youtube上看了一个视频,介绍如何尽快的掌握一门新的语言: https://www.youtube.com/watch?v=FrMSSQRYS6I [5 principles, 7 actions] Action 1 : listen a lot, brain soaking 泡脑子 多听你要学习的语言,不管能不能听懂,要把脑子泡一泡: Action 2 : Focus on getting the meaning first, (even though don't know the wor

幼谈苹果新开发语言:Swift和苹果的用心

今天是个值得纪念的日子:由于苹果的WWDC大会.苹果的每次WWDC(全球开发人员大会)举行都让我们像打了肾上腺素这么兴奋.幸福.惊叹.震撼.深思. 今年也不例外,最关键的是苹果带来了它的一门新开发语言:Swift. 霎时间风起云涌,短短几个小时互联网界掀起了一股谈论Swift的小高潮,假设你不知道Swift,你会觉得这是一件非常丢脸的事情,粑粑. 为了不至于太落后受歧视,我今天也来简单谈谈Swift(不知道为何,国内把它称为雨燕.别这样好吗?这让我想起了 长安铃木的Swift 雨燕汽车) 一.全

如何学习一门新的编程语言

最近突然有所感悟,特写下此博文,欢迎大家来辩! 如何学习一门新的语言?首先,需要一本书.其实好多人在挑选书籍的时候有个习惯(或者说是毛病),就是总是想挑选一本比较权威的书(俗称好书).大家想过没有,我们每人的生活环境以及学习环境都有或多或少的不同,以至于我们的学习方式.方法都是不一样的,所以所谓的"好书"对一些人来说就不一定是好书,只有合适的才是最好的. 所以,书籍方面我认为选一本基础的就好了,因为最后你会发现,买了书也看不了多少次,大多数还是在网上查找...哈哈 书籍方面的事情说完了

作为从业人员,如果一定要学一门新的编程语言,那么它一定是c++

作为从业人员,如果一定要学一门新的编程语言,那么它一定是c++. 无论各种编程语言排行榜如何变化,什么语言最赚钱,想成为真正的程序员,那么c/c++是必修课,因为几乎所有的底层都是c/c++编写的,各种VM最后也是用c/c++写成的,编程思想非常的重要,但是精通c/c++将是你无论作为java/go/c#/oracle dba/mysql dba/架构师,都将具有无可比拟的优势,因为最后有些非常难解决的问题不通过源码无法解决(mysql/glibc/postgresql以及其他一些linux库)

快速学习一门新的编程语言

为什么 Objective-C 很难 - linux,dev - 博客园http://www.cnblogs.com/huapox/archive/2012/12/01/3251600.html 9 个指导开发者快速编码/学习的网站推荐 - 楚广明 - 博客园http://www.cnblogs.com/chu888chu888/archive/2012/02/16/2354813.html 教是最好的学 - MNight - 博客园http://www.cnblogs.com/mnight/p