如何创建一种编程语言(create a programming language)

许多人对他们每天使用的编程语言有困难或沮丧。有些人希望更抽象地处理事情,而另一些人则不喜欢实现他们希望是“标准”的功能。无论你是IT专业人士还是业余爱好者,很多时候你可能会发现自己想要创建一种新的编程语言。...

步骤

  1. 1熟悉这项技术。如果你不知道如何使用计算机,你就不能创建一种编程语言。
  2. Image titled Create a Programming Language Step 1
  3. 2.熟悉术语。编译器编写人员经常使用不熟悉的术语。继续之前,请先阅读编译器。一定要知道你需要知道的一切。
  4. Image titled Create a Programming Language Step 2
  5. 3确定你的语言解决了什么问题。它是针对特定领域的问题,还是通用语言?
  6. Image titled Create a Programming Language Step 3
  7. 4思考语言的语义和概念。您是否允许直接指针访问?你们语言的数据类型是什么?它是静态语言还是动态语言?你的记忆模式是什么?你打算使用垃圾收集器还是手动内存管理?(如果您使用垃圾收集器,请准备编写一个垃圾收集器或将现有垃圾收集器改编为您的语言。)我们将如何处理并发性?你打算使用一个简单的线程/锁定模型,还是像Linda或actor模型这样更复杂的模型?(从现在起,计算机有多核。)语言中是否嵌入了原始函数,或者所有内容都来自库?你的语言的范例是什么?功能的面向对象?原型(比如JavaScript)?面向方面?面向模板?还是全新的?您的语言将如何与现有的库和语言(主要是C语言)交互?如果您正在构建特定于领域的语言,这一点很重要。最后,这些问题的一些答案将在第二步得到回答,并将帮助您回答下一步的问题。
  8. Image titled Create a Programming Language Step 4
  9. 5.想一想有人想用你的语言完成的特定任务。例如,“他们可能想要引导机器人跟随一条线”或者“他们可能想要在其中创建相对便携的桌面程序”或者“他们可能想要用它创建web应用程序”。
  10. Image titled Create a Programming Language Step 5
  11. 6.针对上述例子,尝试语法思想(语言文本)。注意把你的语言放在上下文无关的语言类别中,或者放在它里面。你的解析器生成器,稍后你会很感激的。
  12. Image titled Create a Programming Language Step 6
  13. 7写出语法的正式语法。
  14. Image titled Create a Programming Language Step 7
  15. 8.决定是否翻译或编译该语言。这意味着在解释世界中,用户通常会在编辑器中编辑程序,并直接在解释器上运行;在编译世界中,用户将编辑程序,编译程序,将生成的可执行文件保存到某个地方并运行它。
  16. Image titled Create a Programming Language Step 8
  17. 9编写前端扫描器和解析器,或者找到一个工具来帮助您完成这项工作。另外,考虑一下编译器/解释器将如何警告用户错误的程序和语法错误。
  18. Image titled Create a Programming Language Step 9
  19. 10使用解析器信息编写目标代码或中间表示。让解析器创建一个AST,然后使用三地址代码或它的大哥SSA从AST创建目标代码,然后创建一个符号表来定义函数、全局变量等。此外,根据您的语言,您可能还希望为类创建虚拟指针表或信息表(以支持反射或RTTI)。
  20. Image titled Create a Programming Language Step 10
  21. 11编写将所有内容绑定在一起的执行器或代码生成器。
  22. Image titled Create a Programming Language Step 11
  23. 12编写许多测试程序来测试语言。您希望创建强调形式语法负担的程序,以确保编译器接受定义内的所有内容,并拒绝定义外的所有内容。
  24. Image titled Create a Programming Language Step 12
  25. 13考虑用户将如何调试自己的程序。
  26. Image titled Create a Programming Language Step 13
  27. 14如果你的语言使用标准库,你会想要编写它。以及垃圾收集器或其他运行时功能(如果需要)。具体来说,如果编写编译器,则需要操作系统执行的代码才能开始运行用户代码(例如,分配所有全局变量)。
  28. Image titled Create a Programming Language Step 14
  29. 15发布你的语言,以及它的规范和一些你能用它做什么的例子。不要忘记记录如何与现有库、语言集成,以及如何使用运行时功能和/或标准库。
  30. Image titled Create a Programming Language Step 15
  • 了解编译器/解释器的目标平台(操作系统和库),毕竟,你要使用并操作它。
  • 从设计语言开始,不要编写任何代码,直到你满意并回答了所有(或大部分)与你的设计相关的问题,因为提前更改设计比晚更改更容易。
  • 发表于 2022-03-20 04:45
  • 阅读 ( 52 )
  • 分类:IT

你可能感兴趣的文章

脚本语言(scripting language)和程序设计语言(programming language)的区别

...开发也相应增长。但是这些脚本语言到底是什么?它们与编程语言有什么不同?随着操作系统的发展,系统任务变得更加复杂,需要多个文件和系统实用程序来完成任务。突然出现了对一类高级语言的需求,这些语言可以执行OS...

  • 发布于 2021-06-26 05:00
  • 阅读 ( 671 )

如何快学一门语言(learn a language fast)

...音并练习发音。 You can practice pronunciation by listening to radio programs, watching TV. There are also various interactive software and activities on the web that allows you to practice pronunciation. 学习基本短语 Before you start writing and learning grammar, learn some basic phrase...

  • 发布于 2021-06-27 22:32
  • 阅读 ( 248 )

翻译(translator)和程序设计语言中的解释器(interpreter in programming language)的区别

在编程语言中,翻译器和解释器的主要区别在于,翻译器是一种将代码从一种编程语言转换为另一种编程语言的软件,而解释器是一种将高级编程语言转换为机器语言的翻译器。 计算机程序是计算机执行任务的一组指令。它由...

  • 发布于 2021-06-30 18:15
  • 阅读 ( 381 )

脚本语言(scripting language)和程序设计语言(programming language)的区别

脚本语言和编程语言的主要区别在于,用脚本语言编写的源代码使用解释器转换为机器代码,而用编程语言编写的源代码使用编译器或解释器转换为机器代码。 脚本语言是一种在一个文件中包含一系列命令的计算机语言,可以...

  • 发布于 2021-07-01 02:49
  • 阅读 ( 273 )

标记语言(markup language)和程序设计语言(programming language)的区别

标记语言和编程语言之间的主要区别在于,标记语言定义了一组规则,用于以人类可读和机器可读的格式对文档进行编码,而编程语言提供了一组命令和语法,可用于编写用户理解的计算机程序计算机。 标记语言(markup language...

  • 发布于 2021-07-01 02:50
  • 阅读 ( 652 )

程序设计语言(programming language)和脚本语言(scripting language)的区别

关键区别:编程语言是一种恰当而正式的语言,它被设计用来使程序员能够将指令传达给计算机。编程语言可以用来创建程序。脚本语言通常是一种支持脚本的编程语言。脚本是用来控制其他程序的程序。 如今,电脑、智能**...

  • 发布于 2021-07-12 09:43
  • 阅读 ( 261 )

什么是python编程语言?(python programming language?)

01 05的 python的使用方法 python是一种通用编程语言,可以在任何现代计算机操作系统上使用。它可以用于处理文本、数字、图像、科学数据以及您可能保存在计算机上的任何其他内容。谷歌搜索引擎、视频分享网站youtube...

  • 发布于 2021-09-05 06:30
  • 阅读 ( 459 )

什么是使用多种语言?(multilingualism?)

..." 使用多种语文作为规范 "We estimate that most of the human language users in the world speak more than one language, i.e. they are at least bilingual. In quantitative terms, then, monolingualism may be the exception and multilingualism the norm..." —Peter Auer and Li Wei 双...

  • 发布于 2021-09-25 01:54
  • 阅读 ( 412 )

什么是编程语言参考?(a programming language reference?)

编程语言参考是为了解释计算机编程语言如何运行以及如何为该语言编写有效的源代码而创建的文档。一般来说,编程语言参考将涵盖分支语句的工作方式、可用的标量类...

  • 发布于 2021-12-12 09:23
  • 阅读 ( 91 )

什么是编程范例?(a programming paradigm?)

...计者。编程范例是软件工程中使用的逻辑方法,它描述了编程语言是如何实现的。编程范例对于计算机编程领域中的每种语言都是独特的,许多编程语言使用多种范例。“范式”一词最好描述为“模式或模型”因此,编程范式可...

  • 发布于 2021-12-12 09:24
  • 阅读 ( 203 )