背景

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

实现计划

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

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

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

转载于:https://www.cnblogs.com/nzhl/p/5759075.html

实现一门新的语言--背景(1)相关推荐

  1. 【转CSDN常高伟】如何学习一门新的语言

    原文:http://blog.csdn.net/chgaowei/archive/2011/05/29/6452793.aspx 这两天在看<编程人生>,这本书确实非常不错.而且看得也特别 ...

  2. 如何学习一门新的语言

    这两天在看<编程人生>,这本书确实非常不错.而且看得也特别的轻松.其中有几个人都谈到了如何学习新的语言,但是给我最深刻的是google的首席java架构师joshua bloch.正好最近 ...

  3. 如何快速的学习一门新的语言

    前言 程序的世界变化非常快,总是出新的框架,新的语言,新的名词,如何那快速的跟上这些变化,使自己保持竞争力,而不落伍呢? 语言设计的目的 笔记觉的,首先要看一下这门语言设计的目的是什么,主要想解决哪方 ...

  4. 如何学习一门新的语言?

    首先要说,这并不是一篇教你如何学习的文章,因为到今天为止我也没有找到一种通用的方法来解决如何学习的问题.但是在探索的道路上,我确实产生过一些思路,我想把这些思考的过程分享出来让大家探讨.如果这对你有帮 ...

  5. 如何学习一门新语言(针对初学者)

    程序员之道,万变不离其宗,说相声讲究的是说.学.逗.唱,学习程序最快也是最好的办法就是:过.抄.仿.改.调.看.练.创.悟: 1.过: 学习一门新的语言,第一步就是把它所涉及的基础知识大体过一点,不求 ...

  6. 技术周刊 Vol.40 - 来学习一门新的编程语言吧!

    新的一年不知不觉已经到来了,总结过去的 2017,相信小伙们一定有很多收获和感悟,那对于刚刚到来的 2018,有什么期待和规划呢?不防就来学习一门新的语言吧,进一步提高编程技能,扩宽自己的知识领域.希 ...

  7. C语言究竟是一门怎样的语言?

    对于大部分程序员,C语言是学习编程的第一门语言,很少有不了解C的程序员. C语言除了能让你了解编程的相关概念,带你走进编程的大门,还能让你明白程序的运行原理,比如,计算机的各个部件是如何交互的,程序在 ...

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

    今天是个值得纪念的日子:由于苹果的WWDC大会.苹果的每次WWDC(全球开发人员大会)举行都让我们像打了肾上腺素这么兴奋.幸福.惊叹.震撼.深思. 今年也不例外,最关键的是苹果带来了它的一门新开发语言 ...

  9. 初学者如何学习一门新的计算机语言!!!

    程序员之道 万变不离其宗 学习程序最快也是最好的办法就是:过.抄.仿.改.调.看.练.创.悟: 1.过: 学习一门新的语言,第一步就是把它所涉及的基础知识大体过一点,不求深解,只求了解--第一遍:无需 ...

最新文章

  1. 中国“神威”获超算排行榜四连冠,却遭外媒质疑
  2. c语言汽水瓶换汽水的编程题,c语言:2种方法编程及优化;喝汽水问题
  3. robocopy file backup script
  4. [html] 实现两列等宽布局的方式有哪些?
  5. 筛表合集(素数筛 欧拉函数筛 莫比乌斯函数筛)
  6. 研究生学习阶段时间安排
  7. 5G标准化加速 需应对测试场景复杂性
  8. erlang 读取confg文件异常 could not start kernel pid error in config file
  9. Xcode7.1模拟器卡顿问题以及解决方案
  10. 制作基于WiFi局域网的自动开门装置2.0(Arduino+微信小程序)
  11. 图的存储结构——邻接表
  12. 汽车维修企业管理【12】
  13. 关于elasticsearch的一些问题总结
  14. Laravel执行定时任务
  15. 用moment获取一年内指定周的起始时间和结束时间、用户所选时间和前端传参时间不一致问题
  16. Dynamic Address Validation Array (DAVA): A Moving Target Defense Protocol for CANBus 论文笔记
  17. 送福利 手把手教你快速配置腾讯云 Linux 服务器
  18. 14年磨一剑,蚂蚁金服全面开放有何阳谋?
  19. 牛客练习赛61 C 四个选项 dp\搜索+组合数学
  20. 微信小程序-域名无法请求localhost

热门文章

  1. qq发文件大小上限_微信又出新功能!网友:终于不用转QQ了
  2. 威联通_万兆加持!威联通QNAP TS-932X,首次入手威联通NAS简单体验
  3. 一段简单的python代码_一个简单的python写的C/S程序
  4. 环回测试能够提供什么信息_以太网测试仪的主要功能有哪些?
  5. mongodb更新语句_MongoDB更新
  6. Android ProgressBar示例
  7. VS2012下创建QT5应用程序
  8. 开课吧:Java开发学习路线-基础知识
  9. Java基础篇:finalize( )方法的使用
  10. Jenkins 教程(一)实现自动化打包及邮件通知