程序员要如何创建一门编程语言?

文章图片
作者|MdShuvo译者|弯月出品|CSDN(ID:CSDNnews)虽然每位开发人员都掌握了一种甚至多种编程语言 , 但你是否曾想过自己动手创建一种编程语言?
首先 , 我们来看看什么是编程语言:
编程语言是用来定义计算机程序的形式语言 。 它是一种被标准化的交流技巧 , 用来向计算机发出指令 , 一种能够让程序员准确地定义计算机所需要使用数据的计算机语言 , 并精确地定义在不同情况下所应当采取的行动 。简而言之 , 编程语言就是一组预定义的规则 。 然后 , 我们需要通过编译器、解释器等来解释这些规则 。 所以我们可以简单地定义一些规则 , 然后 , 再使用任何现有的编程语言来制作一个可以理解这些规则的程序 , 也就是我们所说的解释器 。
编译器:编译器能够将代码转换为处理器可以执行的机器代码(例如C++编译器) 。 解释器:解释器能够逐行遍历程序并执行每个命令 。下面 , 我们来试试看创建一个超级简单的编程语言 , 在控制台中输出洋红色的字体 , 我们给它起个名字:Magenta(洋红色) 。

文章图片
建立编程语言在本文中 , 我将使用Node.js , 但你可以使用任何语言 , 基本思路依然是一样的 。 首先 , 我们来创建一个index.js文件 。
classMagenta{constructor(codes){this.codes=codes}run(){console.log(this.codes)}}//Fornow,wearestoringcodesinastringvariablecalled`codes`//Later,wewillreadcodesfromafileconstcodes=`print"helloworld"print"helloagain"`constmagenta=newMagenta(codes)magenta.run()这段代码声明了一个名为Magenta的类 。 该类定义并初始化了一个对象 , 而该对象负责将我们通过变量codes提供的文本显示到控制台 。 我们在文件中直接定义了变量codes:几个带有“hello”的消息 。

文章图片
下面 , 我们来创建词法分析器 。
什么是词法分析器?我们拿英文举个例子:Howareyou?
此处 , “How”是副词 , “are”是动词 , “you”是代词 。 最后还有一个问号(?) 。 我们可以按照这种方式 , 通过JavaScript编程将句子或短语划分为多个语法组件 。 还有一种方法是 , 将这些句子或短语分割成一个个标记 。 将文本分割成标记的程序就是词法分析器 。

文章图片
由于我们的这个编程语言非常小 , 它只有两种类型的标记 , 每一种只有一个值:
1.keyword
2.string
我们可以使用正则表达式 , 从字符串codes中提取标记 , 但性能会非常慢 。 更好的方法是遍历字符串codes中的每个字符并提取标记 。 下面 , 我们在Magenta类中创建一个方法tokenize(这就是我们的词法分析器) 。
完整的代码如下:
classMagenta{constructor(codes){this.codes=codes}tokenize(){constlength=this.codes.length//poskeepstrackofcurrentposition/indexletpos=0lettokens=[]constBUILT_IN_KEYWORDS=["print"]//allowedcharactersforvariable/keywordconstvarChars='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_'while(pos在终端中运行nodeindex.js , 就会看到控制台中输出的标记列表 。

文章图片
定义规则和语法
我们想看看codes的顺序是否符合某种规则或语法 。 但首先我们需要定义这些规则和语法是什么 。 由于我们的这个编程语言非常小 , 它只有一种简单的语法 , 即关键字print后跟一个字符串 。
- iqoo|卡贴机大降价,iPhone13只要3000出头,网友都说“真香”
- 显卡|这就是RTX 4090 Ti显卡?又厚又重,超过三槽要1200W电源
- 土耳其发现四肢爬行人群,这是咋回事?科学家警告:人类要留心了
- 苹果要大涨价!iPhone 14量产工作就绪:四款齐发 供应商已出货
- ios16|一步到位能用5年,目前这3款手机能闭眼入,买手机不要太小气
- 创投圈|抖音小店无货源适合新手小白么?如何精细化运营?新手小白看来
- 土星环比恐龙还要年轻?这些宇宙冷知识很少有人知道
- 和真的几乎一样,这个仿生蜻蜓,要实现《沙丘》里的扑翼机了
- 宇宙中有多少维度,人类为何想要进入四维空间?科学家给出了解释
- 苹果|苹果要大涨价!iPhone 14量产工作就绪:四款齐发 供应商已出货
