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