
Escribimos nuestro "lenguaje de programación" en Python3
1. Lexer
En este artículo haremos, por así decirlo, python2, crearemos variables, las enviaremos a la consola
Si se trata de ti, entonces haré la parte 2 de la publicación: D
Para empezar, determinemos el nombre del idioma, por ejemplo, "xnn".Ahora cree el archivo xnn.py y escriba el código principal allí: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)
Que estamos haciendo:- Importar las bibliotecas os y sys
- Usando os, determinamos desde dónde se inicia el compilador (en el futuro le diré por qué)
- Cree la ruta al archivo + tome el archivo del argumento; lo obtenemos a través de sys.argv
- A continuación, mostramos la ruta en sí, con el archivo (en el futuro será necesario eliminarlo)
- Creamos todas las palabras reservadas; por ahora, no lo necesitamos, pero en el futuro lo tenemos para generar errores
- Crear listas para lexer y variables
- Creamos el lexer en sí, para esto abrimos el archivo, en modo de lectura, asegúrese de
codificación = "UTF-8"
Si esto no se hace, ¡en lugar de letras rusas, habrá jeroglíficos! - Usando for ex en read (). Split () distribuimos todo el texto en palabras y colocamos cada palabra por separado en ex
- Luego, escribe cada palabra en la lista var
- Y mostraremos la lista en sí; en el futuro será necesario eliminar la salida: /
Crear un archivo .xnn
Ahora cree el archivo que analizaremos, y también cambie la forma de abrirlo.
Ábralo y escríbalo allí:pr =
rprint pr
2. Crear un compilador
¡Ahora crea un compilador!Para hacer esto, complementamos nuestro archivo con código para que resulte así: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! !')
¿Que estamos haciendo?Repetimos todos los valores en var y cuando encontramos una u otra palabra reservada, realizamos ciertas accionesAsignación variable
Si coincide con "=", agregue un valor a la lista vars_ , antes de "=" como clave y después de "=" como valor, formando así una variableSalida variable
Si coincido con "rprint", buscamos en la lista vars_ una coincidencia para esta variable, que obtenemos a través de nuestro amigo, la lista var .Después de buscar, muestra el valor de la variableTrabajo en acción
Para compilar el archivo, ingrese los datos del comando en cmd:cd path/to/files
python xnn.py prog.xnn
El resultado es:
C:\Users\Hoopengo\Desktop\xnn\prog.xnn
['pr', '=', '', 'rprint', 'pr']
3. Compilación en .exe
Cree una copia de la carpeta de archivos y edite el archivo 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! !')
Instalar auto-py-to-exeLa información de instalación completa está disponible en este enlace.Ingresemos a la consola:auto-py-to-exepip install auto-py-to-exe
auto-py-to-exe
El navegador se inicia. Elija la ruta al archivo y One File allí.
4. Crear un instalador
En la carpeta copiada, cree el archivo 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)
Después de eso, compílelo en .exe y suéltelo en el mismo directorio, debería verse así:
5. Instalación
Ahora instale.Para hacer esto, abra el archivo bat.exe, después de lo cual se realizará la instalación.Reinicie la consola e ingrese:cd path/to/file
xnn prog.xnn
Y obtenemos:
Si dice que "xnn no es un comando interno", agregue el archivo xnn.exe a la carpeta "C: \ Windows \ System32 \" usted mismo.