
рд╣рдо рдкрд╛рдпрдерди 3 рдореЗрдВ рдЕрдкрдиреА "рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛" рд▓рд┐рдЦрддреЗ рд╣реИрдВ
1. рд▓реЗрдХреНрд╕рд░
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╣рдо рдХрд░реЗрдВрдЧреЗ, рдЗрд╕рд▓рд┐рдП рдмреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, python2, рдЪрд░ рдмрдирд╛рдПрдВ, рдЙрдиреНрд╣реЗрдВ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдХрд░реЗрдВ
рдЕрдЧрд░ рдпрд╣ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЖрддрд╛ рд╣реИ, рддреЛ рдореИрдВ рдкреЛрд╕реНрдЯ рдХрд╛ рднрд╛рдЧ 2: рдбреА
рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП,рдЖрдЗрдП рднрд╛рд╖рд╛ рдХрд╛ рдирд╛рдо рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "xnn"ред рдЕрдм xnn.py рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ рдФрд░ рд╡рд╣рд╛рдВ рдореБрдЦреНрдп рдХреЛрдб рд▓рд┐рдЦреЗрдВ: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)
рд╣рдо рдХреНрдпрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ:- рдУрдПрд╕ рдФрд░ рдПрд╕рдЖрдИрдПрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЖрдпрд╛рдд рдХрд░реЗрдВ
- рдУрдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рд╣рдо рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╕рдВрдХрд▓рдХ рдХрд╣рд╛рдВ рд╕реЗ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдХреНрдпреЛрдВ)
- рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдкрде рдмрдирд╛рдПрдВ + рдлрд╝рд╛рдЗрд▓ рдХреЛ рддрд░реНрдХ рд╕реЗ рд╕реНрд╡рдпрдВ рд▓реЗрдВ - рд╣рдо рдЗрд╕реЗ sys.argv рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ
- рдЕрдЧрд▓рд╛, рд╣рдо рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рд╕реНрд╡рдпрдВ рдкрде рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ (рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрд╕реЗ рд╣рдЯрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА)
- рд╣рдо рд╕рднреА рдЖрд░рдХреНрд╖рд┐рдд рд╢рдмреНрдж рдмрдирд╛рддреЗ рд╣реИрдВ - рдЕрднреА рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╣рдореЗрдВ рдпрд╣ рддреНрд░реБрдЯрд┐ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд▓рд┐рдП рдорд┐рд▓рд╛ рд╣реИ
- рд▓реАрдХрд░ рдФрд░ рдЪрд░ рдХреЗ рд▓рд┐рдП рд╕реВрдЪреА рдмрдирд╛рдПрдБ
- рд╣рдо рдЦреБрдж рд╣реА рд▓реЗрдХреНрд╕рд░ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо рдлрд╛рдЗрд▓ рдХреЛ рдЦреЛрд▓рддреЗ рд╣реИрдВ, рд░реАрдб рдореЛрдб рдореЗрдВ, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ
рдПрдиреНрдХреЛрдбрд┐рдВрдЧ = "UTF-8"
рдпрджрд┐ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд░реВрд╕реА рдкрддреНрд░реЛрдВ рдХреЗ рдмрдЬрд╛рдп, рдЪрд┐рддреНрд░рд▓рд┐рдкрд┐ рд╣реЛрдВрдЧреЗ! - рдкреВрд░реНрд╡ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ ()ред рд╡рд┐рднрд╛рдЬрди () рд╣рдо рд╕рднреА рдкрд╛рда рдХреЛ рд╢рдмреНрджреЛрдВ рдореЗрдВ рд╡рд┐рддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рд╢рдмреНрдж рдХреЛ рдЕрд▓рдЧ рд╕реЗ рдкреВрд░реНрд╡ рдореЗрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВ
- рдЕрдЧрд▓рд╛, рдкреНрд░рддреНрдпреЗрдХ рд╢рдмреНрдж рдХреЛ var рд╕реВрдЪреА рдореЗрдВ рд▓рд┐рдЦреЗрдВ
- рдФрд░ рд╣рдо рд╕реВрдЪреА рдХреЛ рд╕реНрд╡рдпрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВрдЧреЗ - рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛: /
.Xnn рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдирд╛
рдЕрдм рд╡рд╣ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ рдЬрд┐рд╕реЗ рд╣рдо рдкрд╛рд░реНрд╕ рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдЦреЛрд▓рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рднреА рдмрджрд▓ рджреЗрдВрдЧреЗред
рдЗрд╕реЗ рдЦреЛрд▓реЗрдВ рдФрд░ рд╡рд╣рд╛рдВ рд▓рд┐рдЦреЗрдВ:pr =
rprint pr
2. рдХрдВрдкрд╛рдЗрд▓рд░ рдмрдирд╛рдирд╛
рдЕрдм рдПрдХ рдХрдВрдкрд╛рдЗрд▓рд░ рдмрдирд╛рдПрдВ!рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЕрдкрдиреА рдлрд╝рд╛рдЗрд▓ рдХреЛ рдХреЛрдб рдХреЗ рд╕рд╛рде рдкреВрд░рдХ рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдпрд╣ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдирд┐рдХрд▓реЗ: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! !')
рд╣рдо рдХреНрдпрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?рд╣рдо var рдХреЗ рд╕рднреА рдореВрд▓реНрдпреЛрдВ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЬрдм рд╣рдо рдПрдХ рдпрд╛ рджреВрд╕рд░реЗ рдЖрд░рдХреНрд╖рд┐рдд рд╢рдмреНрдж рдХреЛ рдЦреЛрдЬрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдХреБрдЫ рдХреНрд░рд┐рдпрд╛рдПрдВ рдХрд░рддреЗ рд╣реИрдВрдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рдХрд╛рд░реНрдп
рдпрджрд┐ рдореИрдВ "=" рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реВрдВ , рддреЛ рдХреБрдВрдЬреА рдХреЗ рд░реВрдк рдореЗрдВ "=" рд╕реЗ рдкрд╣рд▓реЗ vars_ рд╕реВрдЪреА рдореЗрдВ рдПрдХ рдорд╛рди рдЬреЛрдбрд╝реЗрдВ , рдФрд░ "=" рдХреЗ рдмрд╛рдж рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдПрдХ рдЪрд░ рдХрд╛ рдЧрдардирдЪрд░ рдЙрддреНрдкрд╛рджрди
рдпрджрд┐ рдореИрдВ "rprint" рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЗрд╕ рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдореИрдЪ рдХреЗ рд▓рд┐рдП var__ рд╕реВрдЪреА рдореЗрдВ рджреЗрдЦрддреЗ рд╣реИрдВ , рдЬреЛ рд╣рдореЗрдВ рдЕрдкрдиреЗ рдорд┐рддреНрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдорд┐рд▓рддреА рд╣реИ, var рд╕реВрдЪреАредрдЦреЛрдЬрдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЪрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВредрдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ
рдлрд╝рд╛рдЗрд▓ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, cmd рдореЗрдВ рдХрдорд╛рдВрдб рдбреЗрдЯрд╛ рджрд░реНрдЬ рдХрд░реЗрдВ:cd path/to/files
python xnn.py prog.xnn
рдЖрдЙрдЯрдкреБрдЯ рд╣реИ:
C:\Users\Hoopengo\Desktop\xnn\prog.xnn
['pr', '=', '', 'rprint', 'pr']
3. рд╕рдВред рдореЗрдВ рд╕рдВрдХрд▓рди
рдлрд╝рд╛рдЗрд▓ рдлрд╝реЛрд▓реНрдбрд░ рдХреА рдПрдХ рдкреНрд░рддрд┐ рдмрдирд╛рдПрдБ рдФрд░ xnn.py рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВimport 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! !')
рдСрдЯреЛ-рдкреА-рдЯреВ-рдПрдЧреНрдЬрд╝ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВрдкреВрд░реНрдг рд╕реНрдерд╛рдкрдирд╛ рдЬрд╛рдирдХрд╛рд░реА рдЗрд╕ рд▓рд┐рдВрдХ рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ редрдЖрдЗрдП рдХрдВрд╕реЛрд▓ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░реЗрдВ:рдСрдЯреЛ py рдХрд░рдиреЗ рд╡рд╛рд▓реА exepip install auto-py-to-exe
auto-py-to-exe
рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рд╡рд╣рд╛рдБ рдлрд╝рд╛рдЗрд▓ рдФрд░ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдкрде рдЪреБрдиреЗрдВред
рдореЗрд░реЗ рдкреВрд░реНрд╡ рдирд┐рд░реНрдзрд╛рд░рд┐рдд 4. рдПрдХ рдЗрдВрд╕реНрдЯреЙрд▓рд░ рдмрдирд╛рдирд╛
рдХреЙрдкреА рдХрд┐рдП рдЧрдП рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ, рдмреИрдЯрдлреЙрдо рдлрд╛рдЗрд▓ рдмрдирд╛рдПрдВ:
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. рд╕реНрдерд╛рдкрдирд╛
рдЕрдм рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВредрдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЦреЛрд▓реЗрдВ ред.exe, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рд╕реНрдерд╛рдкрдирд╛ рд╣реЛ рдЬрд╛рдПрдЧреАредрдХрдВрд╕реЛрд▓ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░реЗрдВ рдФрд░ рджрд░реНрдЬ рдХрд░реЗрдВ:cd path/to/file
xnn prog.xnn
рдФрд░ рд╣рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:
рдпрджрд┐ рдпрд╣ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ "xnn рдПрдХ рдЖрдВрддрд░рд┐рдХ рдХрдорд╛рдВрдб рдирд╣реАрдВ рд╣реИ", рддреЛ xnn.exe рдлрд╝рд╛рдЗрд▓ рдХреЛ рдлрд╝реЛрд▓реНрдбрд░ "C: \ Windows \ System32 \" рдореЗрдВ рд╕реНрд╡рдпрдВ рдЬреЛрдбрд╝реЗрдВред