如何创建Python编程语言?



我们用Python3编写“编程语言”


1. Lexer


可以说,在本文中,我们将使用python2创建变量并将其输出到控制台


如果涉及到您,那么我将做该帖子的第2部分:D

首先,
让我们确定语言的名称,例如“ xnn”,现在创建xnn.py文件并在其中编写主要代码:

import sys #  sys
import os #  os

dir = os.path.abspath(os.curdir) #   
p = str(dir) + '\\' + str(sys.argv[1]) #sys.argv[1] -  1 
print(p) #   +  
modules = ['if', 'else', 'while', 'for', '=', '==', '{', '}', '[', ']', '(', ')', '//'] #    
var = [] #   
vars_ = {} #   

with open(p, 'r', encoding="UTF-8") as f: #   
        for ex in f.read().split(): #  
            var.append(ex) #     var
    print(var) # $   $

我们在做什么:

  1. 导入操作系统和sys库
  2. 使用os,我们确定从何处启动编译器(以后我将告诉您原因)
  3. 创建文件的路径+从参数中获取文件本身-我们通过sys.argv获取文件
  4. 接下来,我们显示路径本身以及文件(以后将需要删除该路径)
  5. 我们创建了所有保留字-目前,我们不需要它,但是在将来,我们将其用于错误输出
  6. 创建词法分析器和变量的列表
  7. 我们创建了词法分析器本身,为此,我们以读取模式打开文件,请确保
    编码=“ UTF-8”
    如果不这样做,则会出现象形文字,而不是俄语字母!
  8. 在read()中使用ex进行拆分(),我们将所有文本分散成多个单词,并将每个单词分别放在ex
  9. 接下来,将每个单词写到var列表中
  10. 我们将显示列表本身-将来有必要删除输出:/


创建一个.xnn文件


现在,我们将创建要解析的文件本身,并更改



打开方式,将其打开并写入其中:

pr = 
rprint pr

2.创建一个编译器


现在创建一个编译器!
为此,我们用代码补充文件,以使结果如下所示:

import sys #  sys
import os #  os

dir = os.path.abspath(os.curdir) #   
p = str(dir) + '\\' + str(sys.argv[1]) #sys.argv[1] -  1 
print(p) #   +  
modules = ['if', 'else', 'while', 'for', '=', '==', '{', '}', '[', ']', '(', ')', '//'] #    
var = [] #   
vars_ = {} #   
try:
    with open(p, 'r', encoding="UTF-8") as f: #   
        for ex in f.read().split(): #  
            var.append(ex) #     var
    print(var) # $   $
    a = -1 #     var
    for i in var: #  
        a = a + 1 #    
        if i == '=': #    "="
            vars_[var[a-1]] = var[a+1] #  vars_      "="
        if i == 'rprint':
            let = var[a+1]
            for key, value in vars_.items():
                if key == let:
                    print(value)
except FileNotFoundError:
    print('Error!   !')

我们在做什么?

我们遍历var中的所有值,当找到一个或另一个保留字时,我们将执行某些操作

变量分配


如果我与“ =”一致,则将一个添加vars_ list中,在“ =”之前添加键,并在“ =”之后添加值-从而形成一个变量

可变输出


如果我匹配“ rprint”,我们在列表vars_中查找该变量的匹配项,这是通过我们的朋友var列表获得的。
找到后,显示该变量的值

行动中的工作


为了编译文件,请在cmd中输入命令数据:

cd path/to/files
python xnn.py prog.xnn

输出为:


C:\Users\Hoopengo\Desktop\xnn\prog.xnn
['pr', '=', '', 'rprint', 'pr']


3.在.exe中进行编译


创建文件夹的副本并编辑xnn.py文件

import sys #  sys
import os #  os

dir = os.path.abspath(os.curdir) #   
p = str(dir) + '\\' + str(sys.argv[1]) #sys.argv[1] -  1 
modules = ['if', 'else', 'while', 'for', '=', '==', '{', '}', '[', ']', '(', ')', '//'] #    
var = [] #   
vars_ = {} #   
try:
    with open(p, 'r', encoding="UTF-8") as f: #   
        for ex in f.read().split(): #  
            var.append(ex) #     var
    a = -1 #     var
    for i in var: #  
        a = a + 1 #    
        if i == '=': #    "="
            vars_[var[a-1]] = var[a+1] #  vars_      "="
        if i == 'rprint':
            let = var[a+1]
            for key, value in vars_.items():
                if key == let:
                    print(value)
except FileNotFoundError:
    print('Error!   !')

安装auto-py-to-exe
链接提供了完整的安装信息,

让我们进入控制台:

自动执行
pip install auto-py-to-exe
auto-py-to-exe


浏览器启动。选择文件的路径,然后选择一个文件。


我的预设


4.创建安装程序


在复制的文件夹中,创建bat.py文件:



import os

with open('path\\xnn.exe', 'r', encoding='UTF-8') as f:
	lean = f.read()

	directory_folder = r"C:\\Windows\\System32\\xnn.exe"
	folder_path = os.path.dirname(directory_folder) #     

	if not os.path.exists(folder_path): #     
	    os.makedirs(folder_path)

	with open(directory_folder, 'w', encoding='UTF-8') as file: #    
	    file.write(lean)

之后,将其编译为.exe并将其放入同一目录,它应如下所示:


5.安装


现在安装,
要执行此操作,请打开文件bat.exe,然后完成安装,请
重新启动控制台并输入:

cd path/to/file
xnn prog.xnn

我们得到:



如果显示“ xnn不是内部命令”,则将xnn.exe文件自己添加到“ C:\ Windows \ System32 \”文件夹中。

All Articles