Comment créer un langage de programmation Python?



Nous écrivons notre "langage de programmation" en Python3


1. Lexer


Dans cet article, nous allons, pour ainsi dire, python2, créer des variables, les afficher sur la console


Si cela vous vient, je ferai la partie 2 du message: D

Pour commencer, déterminons le nom de la langue - par exemple, "xnn".
Maintenant, créez le fichier xnn.py et écrivez-y le code principal:

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) # $   $

Qu'est-ce que nous faisons:

  1. Importer les bibliothèques os et sys
  2. En utilisant os, nous déterminons d'où le compilateur est lancé (à l'avenir, je vous dirai pourquoi)
  3. Créez le chemin d'accès au fichier + prenez le fichier lui-même à partir de l'argument - nous l'obtenons via sys.argv
  4. Ensuite, nous affichons le chemin lui-même, avec le fichier (à l'avenir, il devra être supprimé)
  5. Nous créons tous les mots réservés - pour l'instant, nous n'en avons pas besoin, mais à l'avenir, nous les aurons pour la sortie d'erreur
  6. Créer des listes pour lexer et variables
  7. Nous créons le lexer lui-même, pour cela nous ouvrons le fichier, en mode lecture, assurez-vous de
    encoding = "UTF-8"
    si cela n'est pas fait, alors au lieu des lettres russes, il y aura des hiéroglyphes!
  8. En utilisant pour ex dans read (). Split () nous distribuons tout le texte en mots et mettons chaque mot séparément dans ex
  9. Ensuite, écrivez chaque mot dans la liste var
  10. Et nous afficherons la liste elle-même - à l'avenir, il sera nécessaire de supprimer la sortie: /


Création d'un fichier .xnn


Maintenant, nous allons créer le fichier lui-même que nous analyserons, et changerons également la façon d'ouvrir.



Ouvrez-le et écrivez-le ici:

pr = 
rprint pr

2. Création d'un compilateur


Créez maintenant un compilateur!
Pour ce faire, nous complétons notre fichier avec du code afin qu'il se présente comme ceci:

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!   !')

Qu'est-ce que nous faisons?

On parcourt toutes les valeurs de var et quand on trouve l'un ou l'autre mot réservé, on fait certaines actions

Affectation variable


Si i correspond à "=", ajoutez une valeur à la liste vars_ , avant "=" comme clé et après "=" comme valeur, formant ainsi une variable

Sortie variable


Si i correspond à «rprint», nous recherchons dans la liste vars_ une correspondance pour cette variable, que nous obtenons par le biais de notre ami, la liste var .
Après avoir trouvé, afficher la valeur de la variable

Le travail en action


Afin de compiler le fichier, entrez les données de commande en cmd:

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

La sortie est:


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


3. Compilation en .exe


Créez une copie du dossier de fichiers et modifiez le fichier 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!   !')

Installer auto-py-to-exe
Les informations d'installation complètes sont disponibles sur ce lien.

Entrons dans la console:

auto-py-à-exe
pip install auto-py-to-exe
auto-py-to-exe


Le navigateur démarre. Choisissez le chemin d'accès au fichier et un fichier là-bas.


Mon préréglage


4. Création d'un installateur


Dans le dossier copié, créez le fichier 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)

Après cela, compilez-le en .exe et déposez-le dans le même répertoire, il devrait ressembler à ceci:


5. Installation


Maintenant, installez.
Pour ce faire, ouvrez le fichier bat.exe, après quoi l'installation se fera.
Redémarrez la console et entrez:

cd path/to/file
xnn prog.xnn

Et nous obtenons:



S'il indique que "xnn n'est pas une commande interne", ajoutez vous-même le fichier xnn.exe dans le dossier "C: \ Windows \ System32 \".

All Articles