рдкрд╛рдпрдерди рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреИрд╕реЗ рдмрдирд╛рдПрдВ?



рд╣рдо рдкрд╛рдпрдерди 3 рдореЗрдВ рдЕрдкрдиреА "рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛" рд▓рд┐рдЦрддреЗ рд╣реИрдВ


1. рд▓реЗрдХреНрд╕рд░


рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╣рдо рдХрд░реЗрдВрдЧреЗ, рдЗрд╕рд▓рд┐рдП рдмреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, python2, рдЪрд░ рдмрдирд╛рдПрдВ, рдЙрдиреНрд╣реЗрдВ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдХрд░реЗрдВ


рдЕрдЧрд░ рдпрд╣ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЖрддрд╛ рд╣реИ, рддреЛ рдореИрдВ рдкреЛрд╕реНрдЯ рдХрд╛ рднрд╛рдЧ 2: рдбреА

рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП,
рдЖрдЗрдП рднрд╛рд╖рд╛ рдХрд╛ рдирд╛рдо рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "xnn"ред рдЕрдм 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 
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) # $   $

рд╣рдо рдХреНрдпрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ:

  1. рдУрдПрд╕ рдФрд░ рдПрд╕рдЖрдИрдПрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЖрдпрд╛рдд рдХрд░реЗрдВ
  2. рдУрдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рд╣рдо рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╕рдВрдХрд▓рдХ рдХрд╣рд╛рдВ рд╕реЗ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдХреНрдпреЛрдВ)
  3. рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдкрде рдмрдирд╛рдПрдВ + рдлрд╝рд╛рдЗрд▓ рдХреЛ рддрд░реНрдХ рд╕реЗ рд╕реНрд╡рдпрдВ рд▓реЗрдВ - рд╣рдо рдЗрд╕реЗ sys.argv рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ
  4. рдЕрдЧрд▓рд╛, рд╣рдо рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рд╕реНрд╡рдпрдВ рдкрде рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ (рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрд╕реЗ рд╣рдЯрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА)
  5. рд╣рдо рд╕рднреА рдЖрд░рдХреНрд╖рд┐рдд рд╢рдмреНрдж рдмрдирд╛рддреЗ рд╣реИрдВ - рдЕрднреА рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╣рдореЗрдВ рдпрд╣ рддреНрд░реБрдЯрд┐ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд▓рд┐рдП рдорд┐рд▓рд╛ рд╣реИ
  6. рд▓реАрдХрд░ рдФрд░ рдЪрд░ рдХреЗ рд▓рд┐рдП рд╕реВрдЪреА рдмрдирд╛рдПрдБ
  7. рд╣рдо рдЦреБрдж рд╣реА рд▓реЗрдХреНрд╕рд░ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо рдлрд╛рдЗрд▓ рдХреЛ рдЦреЛрд▓рддреЗ рд╣реИрдВ, рд░реАрдб рдореЛрдб рдореЗрдВ, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ
    рдПрдиреНрдХреЛрдбрд┐рдВрдЧ = "UTF-8"
    рдпрджрд┐ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд░реВрд╕реА рдкрддреНрд░реЛрдВ рдХреЗ рдмрдЬрд╛рдп, рдЪрд┐рддреНрд░рд▓рд┐рдкрд┐ рд╣реЛрдВрдЧреЗ!
  8. рдкреВрд░реНрд╡ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ ()ред рд╡рд┐рднрд╛рдЬрди () рд╣рдо рд╕рднреА рдкрд╛рда рдХреЛ рд╢рдмреНрджреЛрдВ рдореЗрдВ рд╡рд┐рддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рд╢рдмреНрдж рдХреЛ рдЕрд▓рдЧ рд╕реЗ рдкреВрд░реНрд╡ рдореЗрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВ
  9. рдЕрдЧрд▓рд╛, рдкреНрд░рддреНрдпреЗрдХ рд╢рдмреНрдж рдХреЛ var рд╕реВрдЪреА рдореЗрдВ рд▓рд┐рдЦреЗрдВ
  10. рдФрд░ рд╣рдо рд╕реВрдЪреА рдХреЛ рд╕реНрд╡рдпрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВрдЧреЗ - рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛: /


.Xnn рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдирд╛


рдЕрдм рд╡рд╣ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ рдЬрд┐рд╕реЗ рд╣рдо рдкрд╛рд░реНрд╕ рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдЦреЛрд▓рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рднреА рдмрджрд▓ рджреЗрдВрдЧреЗред



рдЗрд╕реЗ рдЦреЛрд▓реЗрдВ рдФрд░ рд╡рд╣рд╛рдВ рд▓рд┐рдЦреЗрдВ:

pr = 
rprint pr

2. рдХрдВрдкрд╛рдЗрд▓рд░ рдмрдирд╛рдирд╛


рдЕрдм рдПрдХ рдХрдВрдкрд╛рдЗрд▓рд░ рдмрдирд╛рдПрдВ!
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЕрдкрдиреА рдлрд╝рд╛рдЗрд▓ рдХреЛ рдХреЛрдб рдХреЗ рд╕рд╛рде рдкреВрд░рдХ рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдпрд╣ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдирд┐рдХрд▓реЗ:

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

рд╣рдо рдХреНрдпрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

рд╣рдо 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 #  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!   !')

рдСрдЯреЛ-рдкреА-рдЯреВ-рдПрдЧреНрдЬрд╝ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
рдкреВрд░реНрдг рд╕реНрдерд╛рдкрдирд╛ рдЬрд╛рдирдХрд╛рд░реА рдЗрд╕ рд▓рд┐рдВрдХ рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ ред

рдЖрдЗрдП рдХрдВрд╕реЛрд▓ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░реЗрдВ:

рдСрдЯреЛ py рдХрд░рдиреЗ рд╡рд╛рд▓реА exe
pip 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 \" рдореЗрдВ рд╕реНрд╡рдпрдВ рдЬреЛрдбрд╝реЗрдВред

All Articles