كيفية إنشاء لغة برمجة Python؟



نكتب "لغة البرمجة" في Python3


1. Lexer


في هذه المقالة سنفعل ، إذا جاز التعبير ، 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. نقوم بإنشاء lexer نفسه ، لذلك نفتح الملف ، في وضع القراءة ، تأكد من ذلك
    ترميز = "UTF-8"
    إذا لم يتم ذلك ، فبدلاً من الحروف الروسية ، سيكون هناك حروف هيروغليفية!
  8. باستخدام ex في القراءة (). Split () نوزع كل النص إلى كلمات ونضع كل كلمة على حدة في ex
  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" ، فإننا نبحث في vars_ في القائمة عن تطابق لهذا المتغير ، والذي نحصل عليه من خلال صديقنا ، 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!   !')

تثبيت auto-py-to-ex
معلومات التثبيت الكاملة متاحة على هذا الرابط.

دعنا ندخل إلى وحدة التحكم:

التلقائي من py إلى exe
pip install auto-py-to-exe
auto-py-to-exe


يبدأ المتصفح. اختر المسار إلى الملف وملف واحد هناك.


إعداداتي المسبقة


4. إنشاء المثبت


في المجلد المنسوخ ، قم بإنشاء ملف 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)

بعد ذلك ، قم بتجميعها في .exe وإسقاطها في نفس الدليل ، يجب أن تبدو كما يلي:


5. التثبيت


قم بالتثبيت الآن.
للقيام بذلك ، افتح الملف bat.exe ، وبعد ذلك سيتم التثبيت.
أعد تشغيل وحدة التحكم وأدخل:

cd path/to/file
xnn prog.xnn

ونحصل على:



إذا كانت تقول "xnn ليس أمرًا داخليًا" ، فقم بإضافة ملف xnn.exe إلى المجلد "C: \ Windows \ System32 \" بنفسك.

All Articles