
Nós escrevemos nossa "linguagem de programação" em Python3
1. Lexer
Neste artigo, vamos fazer, por assim dizer, python2, criar variáveis, enviá-las para o console
Se vier a você, eu farei a parte 2 do post: D
Para começar,vamos determinar o nome do idioma - por exemplo, "xnn". Agora crie o arquivo xnn.py e escreva o código 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)
O que estamos fazendo:- Importar as bibliotecas os e sys
- Usando o os, determinamos de onde o compilador é iniciado (no futuro, vou lhe dizer por que)
- Crie o caminho para o arquivo + retire o próprio arquivo do argumento - nós o obtemos através do sys.argv
- Em seguida, exibimos o próprio caminho, com o arquivo (no futuro, ele precisará ser excluído)
- Criamos todas as palavras reservadas - por enquanto, não precisamos delas, mas, no futuro, obteremos a saída de erro
- Crie listas para lexer e variáveis
- Criamos o próprio lexer, para isso, abrimos o arquivo, no modo de leitura, certifique-se de
codificação = "UTF-8"
se isso não for feito, em vez de letras russas, haverá hieróglifos! - Usando for ex em read (). Split (), distribuímos todo o texto em palavras e colocamos cada palavra separadamente em ex
- Em seguida, escreva cada palavra na lista var
- E exibiremos a lista em si - no futuro será necessário remover a saída: /
Criando um arquivo .xnn
Agora vamos criar o próprio arquivo que iremos analisar e também mudar a maneira de abrir,
abra-o e escreva-o:pr =
rprint pr
2. Criando um compilador
Agora crie um compilador!Para fazer isso, complementamos nosso arquivo com código para que fique assim: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! !')
O que estamos fazendo?Nós iteramos sobre todos os valores em var e, quando encontramos uma ou outra palavra reservada, realizamos determinadas açõesAtribuição variável
Se i corresponder "=", adicione um valor à lista vars_ , antes de "=" como chave e depois de "=" como valor, formando assim uma variávelSaída variável
Se eu corresponder a "rprint", procuramos na lista vars_ uma correspondência para essa variável, que obtemos através do nosso amigo, a lista var .Depois de encontrar, mostre o valor da variávelTrabalho em ação
Para compilar o arquivo, insira os dados do comando no cmd:cd path/to/files
python xnn.py prog.xnn
A saída é:
C:\Users\Hoopengo\Desktop\xnn\prog.xnn
['pr', '=', '', 'rprint', 'pr']
3. Compilação em .exe
Crie uma cópia da pasta do arquivo e edite o arquivo 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-exeInformações completas sobre instalação estão disponíveis neste link.Entreno console:auto-py-to-exepip install auto-py-to-exe
auto-py-to-exe
O navegador inicia. Escolha o caminho para o arquivo e um arquivo lá.
4. Criando um instalador
Na pasta copiada, crie o arquivo 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)
Depois disso, compile-o em .exe e solte-o no mesmo diretório, deve ficar assim:
5. Instalação
Agorainstale.Para fazer isso, abra o arquivo bat.exe, após o qual a instalação será concluída.Reinicie o console e digite:cd path/to/file
xnn prog.xnn
E temos:
Se aparecer "xnn não é um comando interno", adicione o arquivo xnn.exe à pasta "C: \ Windows \ System32 \".