ساخت یک مفسر ساده در پایتون 🚀
مرحله ۱: تعریف زبان برنامهنویسی 📜
ابتدا باید قواعد و دستورات زبان برنامهنویسی خودتون رو تعریف کنید. برای این آموزش، ما یک زبان ساده به نام "MiniLang" با دستورات پایهای تعریف میکنیم:
1. دستور
2. دستور
3. دستور
مرحله ۲: نوشتن Lexer 🔍
Lexer یا تجزیهکننده لغوی، متن برنامه را به توکنها (قطعات کوچکتر) تقسیم میکند.
مرحله ۳: نوشتن Parser 🔍
Parser یا تجزیهکننده نحوی، توکنها را به دستورات قابل اجرا تبدیل میکند.
مرحله ۴: اجرای دستورات 🏃♂️
Interpreter یا مفسر، دستورات را اجرا میکند.
مرحله ۵: استفاده از مفسر 📟
حالا کد کامل برای مفسر خودمون رو داریم. میتونیم یک برنامه MiniLang رو اجرا کنیم.
این کد مقدار ۱۵ را چاپ خواهد کرد چون ابتدا مقدار ۵ به متغیر
[آموزش ساخت مفسر]
#Python #Programming #CodingTips #LearnPython #Interpreter #MiniLang
مرحله ۱: تعریف زبان برنامهنویسی 📜
ابتدا باید قواعد و دستورات زبان برنامهنویسی خودتون رو تعریف کنید. برای این آموزش، ما یک زبان ساده به نام "MiniLang" با دستورات پایهای تعریف میکنیم:
1. دستور
PRINT
برای چاپ متن.2. دستور
SET
برای تعریف متغیرها.3. دستور
ADD
برای جمع کردن مقادیر.مرحله ۲: نوشتن Lexer 🔍
Lexer یا تجزیهکننده لغوی، متن برنامه را به توکنها (قطعات کوچکتر) تقسیم میکند.
import re
def lexer(code):
tokens = []
for line in code.splitlines():
line = line.strip()
if line:
if line.startswith("PRINT"):
tokens.append(("PRINT", line[6:]))
elif line.startswith("SET"):
match = re.match(r"SET (\w+) (.+)", line)
if match:
tokens.append(("SET", match.group(1), match.group(2)))
elif line.startswith("ADD"):
match = re.match(r"ADD (\w+) (\w+)", line)
if match:
tokens.append(("ADD", match.group(1), match.group(2)))
return tokens
مرحله ۳: نوشتن Parser 🔍
Parser یا تجزیهکننده نحوی، توکنها را به دستورات قابل اجرا تبدیل میکند.
def parser(tokens):
commands = []
for token in tokens:
if token[0] == "PRINT":
commands.append(("PRINT", token[1]))
elif token[0] == "SET":
commands.append(("SET", token[1], token[2]))
elif token[0] == "ADD":
commands.append(("ADD", token[1], token[2]))
return commands
مرحله ۴: اجرای دستورات 🏃♂️
Interpreter یا مفسر، دستورات را اجرا میکند.
def interpreter(commands):
variables = {}
for command in commands:
if command[0] == "PRINT":
print(command[1])
elif command[0] == "SET":
variables[command[1]] = eval(command[2], {}, variables)
elif command[0] == "ADD":
if command[1] in variables and command[2] in variables:
variables[command[1]] += variables[command[2]]
return variables
مرحله ۵: استفاده از مفسر 📟
حالا کد کامل برای مفسر خودمون رو داریم. میتونیم یک برنامه MiniLang رو اجرا کنیم.
code = """
SET x 5
SET y 10
ADD x y
PRINT x
"""
tokens = lexer(code)
commands = parser(tokens)
interpreter(commands)
این کد مقدار ۱۵ را چاپ خواهد کرد چون ابتدا مقدار ۵ به متغیر
x
و مقدار ۱۰ به متغیر y
اختصاص داده شده و سپس این دو مقدار با هم جمع شده و نتیجه چاپ میشود.[آموزش ساخت مفسر]
#Python #Programming #CodingTips #LearnPython #Interpreter #MiniLang
Telegram
Python3
🎓 آموزش و پروژههای Python
آموزشهای کاربردی و پروژههای عملی Python برای همه سطوح. 🚀
آموزشهای کاربردی و پروژههای عملی Python برای همه سطوح. 🚀
👍2
👇نمونش کامل 👇
import re
# Lexer: تبدیل کد به توکنها
def lexer(code):
tokens = []
for line in code.splitlines():
line = line.strip()
if line:
if line.startswith("PRINT"):
tokens.append(("PRINT", line[6:]))
elif line.startswith("SET"):
match = re.match(r"SET (\w+) (.+)", line)
if match:
tokens.append(("SET", match.group(1), match.group(2)))
elif line.startswith("ADD"):
match = re.match(r"ADD (\w+) (\w+)", line)
if match:
tokens.append(("ADD", match.group(1), match.group(2)))
return tokens
# Parser: تبدیل توکنها به دستورات قابل اجرا
def parser(tokens):
commands = []
for token in tokens:
if token[0] == "PRINT":
commands.append(("PRINT", token[1]))
elif token[0] == "SET":
commands.append(("SET", token[1], token[2]))
elif token[0] == "ADD":
commands.append(("ADD", token[1], token[2]))
return commands
# Interpreter: اجرای دستورات
def interpreter(commands):
variables = {}
for command in commands:
if command[0] == "PRINT":
if command[1] in variables:
print(variables[command[1]])
else:
print(command[1])
elif command[0] == "SET":
variables[command[1]] = eval(command[2], {}, variables)
elif command[0] == "ADD":
if command[1] in variables and command[2] in variables:
variables[command[1]] += variables[command[2]]
return variables
# کد نمونه MiniLang
code = """
SET x 5
SET y 10
ADD x y
PRINT x
"""
# اجرای مراحل Lexer، Parser و Interpreter
tokens = lexer(code)
commands = parser(tokens)
interpreter(commands)
👍6
🔴اینو جواب بدید دیگه خدایش میخام برای منظم شدن چنل
Anonymous Poll
76%
تازه کار هستم 🥺
24%
کهنه کار و حرفه ای🤫😏
سلام دوستان ❤️
ادمین جدید هستم
امیدوارم از من خوشتون بیاد 😅
قراره چالش ها و دانستنی های زیادی درباره پایتون داشته باشیم✔️
ریاکشن بیشتر = حمایت از ما ❤️ 👇
ادمین جدید هستم
امیدوارم از من خوشتون بیاد 😅
قراره چالش ها و دانستنی های زیادی درباره پایتون داشته باشیم✔️
ریاکشن بیشتر = حمایت از ما ❤️ 👇
❤5👍2
Python3
🔴اینو جواب بدید دیگه خدایش میخام برای منظم شدن چنل
برای بهتر شدن پست های چنل ، لطفاً جواب این نظرسنجی رو بدید 🥰
👍6
🌟 ۷ خبر مهم امروز از دنیای پایتون 🌟
📰 #1: گوگل سرویس جدید Cloud AI Notebooks را با پشتیبانی از پایتون عرضه کرد ☁️🤖
امروز گوگل سرویس Cloud AI Notebooks را معرفی کرد. این سرویس به طور ویژه برای پروژههای هوش مصنوعی و یادگیری ماشین طراحی شده و از پایتون پشتیبانی میکند. گوگل اعلام کرده که این ابزار جدید به توسعهدهندگان کمک میکند تا سریعتر و کارآمدتر کار کنند.
📰 #2: انتشار نسخه جدید FastAPI 0.70 🚀
کتابخانه محبوب FastAPI نسخه 0.70 خود را منتشر کرد. این نسخه شامل بهبودهایی در مستندات و رفع برخی باگها است. توسعهدهندگان میتوانند از این بهروزرسانیها برای ساخت APIهای سریع و کارآمدتر بهره ببرند.
📰 #3: معرفی ابزار جدید Poetry برای مدیریت وابستگیها 📦
ابزار Poetry به عنوان یک ابزار قدرتمند برای مدیریت وابستگیها و بستهبندی پروژههای پایتون معرفی شده است. این ابزار با استفاده آسان و ویژگیهای متنوع خود، جایگزین مناسبی برای pip و virtualenv محسوب میشود.
📰 #4: پیشرفتهای جدید در Pandas 1.3.3 🧮
کتابخانه Pandas نسخه 1.3.3 خود را منتشر کرد. این نسخه شامل بهبودهایی در عملکرد و افزایش قابلیتهای جدید برای تجزیه و تحلیل دادهها میباشد. اگر با دادهها کار میکنید، حتماً به این بهروزرسانی نگاهی بیاندازید.
📰 #5: معرفی دوره جدید "Machine Learning with Python" توسط Coursera 📚
پلتفرم آموزشی Coursera دوره جدیدی با عنوان "Machine Learning with Python" را معرفی کرد. این دوره توسط متخصصان برجسته طراحی شده و برای تمامی سطوح مناسب است. اگر به یادگیری ماشین علاقه دارید، این دوره را از دست ندهید.
📰 #6: برگزاری کنفرانس PyCon 2024 در آمستردام 🇳🇱
خبر هیجانانگیز برای علاقهمندان به پایتون! کنفرانس سالانه PyCon 2024 در آمستردام برگزار خواهد شد. این رویداد فرصتی عالی برای شبکهسازی و آشنایی با آخرین پیشرفتها و ابزارهای پایتون فراهم میکند.
📰 #7: بهروزرسانی افزونه VSCode برای توسعهدهندگان پایتون 🛠️
افزونه VSCode برای توسعهدهندگان پایتون بهروز شده و امکانات جدیدی از جمله تکمیل خودکار کد و دیباگینگ پیشرفته به آن افزوده شده است. این بهروزرسانی تجربه توسعه با پایتون را بهبود میبخشد و کار را برای برنامهنویسان راحتتر میکند.
📢 با دنبال کردن کانال تلگرام ما، از آخرین اخبار و بهروزرسانیهای دنیای پایتون مطلع شوید!
(اینجا کلیک کن تا از اخبار مهم پایتون با خبر باشی)
#Python #Google #AI #FastAPI #Python #Poetry #DependencyManagement #MachineLearning #Python
#VSCode #IDE #Python
#PythonNews #TelegramChannel
📰 #1: گوگل سرویس جدید Cloud AI Notebooks را با پشتیبانی از پایتون عرضه کرد ☁️🤖
امروز گوگل سرویس Cloud AI Notebooks را معرفی کرد. این سرویس به طور ویژه برای پروژههای هوش مصنوعی و یادگیری ماشین طراحی شده و از پایتون پشتیبانی میکند. گوگل اعلام کرده که این ابزار جدید به توسعهدهندگان کمک میکند تا سریعتر و کارآمدتر کار کنند.
📰 #2: انتشار نسخه جدید FastAPI 0.70 🚀
کتابخانه محبوب FastAPI نسخه 0.70 خود را منتشر کرد. این نسخه شامل بهبودهایی در مستندات و رفع برخی باگها است. توسعهدهندگان میتوانند از این بهروزرسانیها برای ساخت APIهای سریع و کارآمدتر بهره ببرند.
📰 #3: معرفی ابزار جدید Poetry برای مدیریت وابستگیها 📦
ابزار Poetry به عنوان یک ابزار قدرتمند برای مدیریت وابستگیها و بستهبندی پروژههای پایتون معرفی شده است. این ابزار با استفاده آسان و ویژگیهای متنوع خود، جایگزین مناسبی برای pip و virtualenv محسوب میشود.
📰 #4: پیشرفتهای جدید در Pandas 1.3.3 🧮
کتابخانه Pandas نسخه 1.3.3 خود را منتشر کرد. این نسخه شامل بهبودهایی در عملکرد و افزایش قابلیتهای جدید برای تجزیه و تحلیل دادهها میباشد. اگر با دادهها کار میکنید، حتماً به این بهروزرسانی نگاهی بیاندازید.
📰 #5: معرفی دوره جدید "Machine Learning with Python" توسط Coursera 📚
پلتفرم آموزشی Coursera دوره جدیدی با عنوان "Machine Learning with Python" را معرفی کرد. این دوره توسط متخصصان برجسته طراحی شده و برای تمامی سطوح مناسب است. اگر به یادگیری ماشین علاقه دارید، این دوره را از دست ندهید.
📰 #6: برگزاری کنفرانس PyCon 2024 در آمستردام 🇳🇱
خبر هیجانانگیز برای علاقهمندان به پایتون! کنفرانس سالانه PyCon 2024 در آمستردام برگزار خواهد شد. این رویداد فرصتی عالی برای شبکهسازی و آشنایی با آخرین پیشرفتها و ابزارهای پایتون فراهم میکند.
📰 #7: بهروزرسانی افزونه VSCode برای توسعهدهندگان پایتون 🛠️
افزونه VSCode برای توسعهدهندگان پایتون بهروز شده و امکانات جدیدی از جمله تکمیل خودکار کد و دیباگینگ پیشرفته به آن افزوده شده است. این بهروزرسانی تجربه توسعه با پایتون را بهبود میبخشد و کار را برای برنامهنویسان راحتتر میکند.
📢 با دنبال کردن کانال تلگرام ما، از آخرین اخبار و بهروزرسانیهای دنیای پایتون مطلع شوید!
(اینجا کلیک کن تا از اخبار مهم پایتون با خبر باشی)
#Python #Google #AI #FastAPI #Python #Poetry #DependencyManagement #MachineLearning #Python
#VSCode #IDE #Python
#PythonNews #TelegramChannel
👍2
دانستی مخفی درباره پایتون 🐍
صبح بخیر دوستان! 🌞 آیا میدانستید که در پایتون، میتوانید از توابعی استفاده کنید که درون خودشان صدا زده میشوند، به این حالت توابع بازگشتی میگویند (Recursion)!؟ شاید این ویژگی برای بسیاری ناشناخته باشد، اما با استفاده از این روش، میتوانید مسائل پیچیده را به سادگی حل کنید.
یک مثال ساده از توابع بازگشتی، محاسبه فاکتوریل یک عدد است:
روز خوبی داشته باشید! ☀️
[اینم لینک کانال ما ]
#Python #Recursion #CodingTips #ProgrammingSecrets #صبح_بخیر #پایتون #نکته_پایتون
صبح بخیر دوستان! 🌞 آیا میدانستید که در پایتون، میتوانید از توابعی استفاده کنید که درون خودشان صدا زده میشوند، به این حالت توابع بازگشتی میگویند (Recursion)!؟ شاید این ویژگی برای بسیاری ناشناخته باشد، اما با استفاده از این روش، میتوانید مسائل پیچیده را به سادگی حل کنید.
یک مثال ساده از توابع بازگشتی، محاسبه فاکتوریل یک عدد است:
def factorial(n):در این مثال، تابع factorial خودش را برای مقدارهای کوچکتر از n صدا میزند تا به مقدار نهایی برسد. این نکته کوچک میتواند برای بسیاری از مسائل ریاضی و الگوریتمی، کد شما را بسیار کوتاهتر و کارآمدتر کند. 🌟
if n == 1:
return 1
else:
return n * factorial(n - 1)
print(factorial(5)) # خروجی: 120
روز خوبی داشته باشید! ☀️
[اینم لینک کانال ما ]
#Python #Recursion #CodingTips #ProgrammingSecrets #صبح_بخیر #پایتون #نکته_پایتون
👍1
نظرتون چیه یه چالش یهویی برگذار کنیم😅🏆
توجه : چالش جایزه خاصی نداره فقط برای اندازه گیری توان شما در کدنویسی هست ❗️
توجه : چالش جایزه خاصی نداره فقط برای اندازه گیری توان شما در کدنویسی هست ❗️
👍5