
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
import os
dir = os.path.abspath(os.curdir)
p = str(dir) + '\\' + str(sys.argv[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)
print(var)
Qu'est-ce que nous faisons:- Importer les bibliothèques os et sys
- En utilisant os, nous déterminons d'où le compilateur est lancé (à l'avenir, je vous dirai pourquoi)
- 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
- Ensuite, nous affichons le chemin lui-même, avec le fichier (à l'avenir, il devra être supprimé)
- 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
- Créer des listes pour lexer et variables
- 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! - En utilisant pour ex dans read (). Split () nous distribuons tout le texte en mots et mettons chaque mot séparément dans ex
- Ensuite, écrivez chaque mot dans la liste var
- 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
import os
dir = os.path.abspath(os.curdir)
p = str(dir) + '\\' + str(sys.argv[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)
print(var)
a = -1
for i in var:
a = a + 1
if i == '=':
vars_[var[a-1]] = var[a+1]
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 actionsAffectation variable
Si i correspond à "=", ajoutez une valeur à la liste vars_ , avant "=" comme clé et après "=" comme valeur, formant ainsi une variableSortie 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 variableLe 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.pyimport sys
import os
dir = os.path.abspath(os.curdir)
p = str(dir) + '\\' + str(sys.argv[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)
a = -1
for i in var:
a = a + 1
if i == '=':
vars_[var[a-1]] = var[a+1]
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-exeLes informations d'installation complètes sont disponibles sur ce lien.Entrons dans la console:auto-py-à-exepip 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.
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 \".