备案号:辽ICP备19007957号-1
聆听您的声音:feedback@highmark.com.cn企业热线:400-778-8318
Copyright ©2015- 海马课堂网络科技(大连)有限公司办公地址:辽宁省大连市高新技术产业园区火炬路32A号创业大厦A座18层1801室
COMP1917的目标是让学生熟练使用高级语言进行编程。涵盖的主题包括:基本编程概念、程序测试和调试、数据的基本内存表示法、编程风格。通过实验室编程练习和作业,学生将获得有关这些主题的实际经验。
一、如何构建新的编程语言
从很高的角度来看,创建一种新的编程语言主要涉及三个步骤。
定义语法。
为源代码创建前端编译器。
构建后端代码生成器。
因此,你需要从一支笔和一张纸开始,定义你的语言的语法。如果你不知道什么是正式语法,那就把它想象成人类语言的语法(阅读我的相关文章)。
例如,在人类语言中,你可以说 "一个句子由冠词、名词和动词组成"。然后,语言的自然模糊性(主要由口语部分和人类的天性决定)将这一规则抛诸脑后。
在正式语言中,如果语法规定 "赋值由变量名、等号(=)和数字构成",那么这将是程序源代码中实例化变量的唯一方法,否则代码将无法编译(如果是解释型语言,则会出现错误)。
简而言之,形式语法定义了程序源代码在这种语言中必须是什么样子。它涉及到程序员在使用你的语言编写程序时必须遵守的语法规则。
前端编译器(Front-End Compiler)是一种软件,它能接收源代码并生成一些看起来很奇怪的数据结构。本文稍后将对此进行详细介绍。
最后,"后端代码生成器 "是另一款软件,它将前端生成的代码转换成可实际运行的代码。
等等,这......可以运行?可以运行?这就是把初始源代码转换成新的源代码(可以运行)?
是的,不过是机器能理解的代码,通常称为目标机器码。严格来说,这意味着你应该提供汇编代码,将其交给汇编器,汇编器将与链接器/加载器一起工作,然后他们会将机器代码返回给你。
然而,许多精明的人过去已经做了这样的努力。因此,新的编程语言往往只是被翻译成现有的编程语言,而现有的编译器已经存在。
例如,在架构新语言时,您可能会决定您的编译器不生成机器代码,而是生成 C 代码,然后将其交给 C 编译器。这是一种标准的方法,它不会让您从编写编译器的过程中摆脱任何有趣的部分:您仍然需要构建一个编译器。
二、创建编程语言编译器的步骤
为一种复杂的编程语言编写一个严肃的编译器是一项艰巨的任务。这需要一支技术精湛的庞大团队。
例如,FORTRAN 1 编译器的开发就花费了大约 3 年时间。FORTRAN 语言是为科学计算而设计的,它改变了这一领域的游戏规则,至今仍被广泛使用。他们做得很好,几乎改变了计算的历史。
尽管复杂得吓人,但编译器只有 5 个主要部分:
1.词法分析。识别语言关键字、运算符、常量和语法定义的每个标记。
2.解析。对标记流进行 "理解",即把每对标记之间的关系编码成树状数据结构。这种树状结构旨在描述每行源代码中操作的含义。
3.语义分析。可能是所有步骤中最晦涩难懂的一个。主要涉及理解类型和检查源代码 "含义"(而不仅仅是语法)中的不一致性。艰难。
4.优化。无论编译前的源代码有多好,都有可能在进行低级编码(直到机器码)时实现一些优化。比如内存优化,甚至功耗优化。当然,还有运行时优化。
5.代码生成。原始代码的优化版本最终被翻译成可执行代码。
海马课堂专业课程辅导,2100+严选硕博学霸师资,针对学生的薄弱科目和学校教学进度,匹配背景相符的导师,根据学生情况进行1V1专属备课,上课时间灵活安排,中英双语详细讲解课程中的考点、 难点问题,并提供多方位的课后辅导,辅助学生掌握全部课程知识,补足短板。
阅读原文:https://www.highmarktutor.com/news/14490_62.html
版权作品,未经海马课堂 highmarktutor.com 书面授权,严禁转载,违者将被追究法律责任。
24h在线客服



备案号:辽ICP备19007957号-1
聆听您的声音:feedback@highmark.com.cn企业热线:400-778-8318
Copyright ©2015- 海马课堂网络科技(大连)有限公司办公地址:辽宁省大连市高新技术产业园区火炬路32A号创业大厦A座18层1801室
hmkt088