نقل قول: صراحی یک شبهه کامپایلر
سلام
بهترین حالت برای انجام این کار استفاده از RegEx یا عبارات باقاعده است. برای تجزیه دقیق تمام حالات عبارت مورد بررسی، بهتر است از RegEx استفاده نمایید، اما بدون آن هم میتوان حالات مختلف تجزیه را به صورت بازگشتی طراحی نمود. (RegEx هم نوعی عملیات بازگشتی است)
با انجام عملیات تجزیه، "درخت تجزیه" (parse tree) تهیه میشود که دقیقا مبدا و مقصد تمام حالات را با پیمایش آن میتوان مشخص نمود. (مثلا این یه شبه کامپایلر بدون regex است)
نقل قول: صراحی یک شبهه کامپایلر
یعنی کسی نمی دونه؟
چطور میشه یک SCANNER با سی شارپ طراحی کرد؟(برای c می خوام)
و همچنین یک parser ؟
و یه سوال دیگه آیا میشه از lex و yacc در سی شارپ استفاده کرد ؟(منظورم ویندوزیشون هست)
اگه کسی نمونه برنامه هم داره بزاره ممنون میشم.
دوستان کمک کنن
نقل قول: طراحی یک شبهه کامپایلر
کسی یه نمونه برنامه scanner وparser نداره؟
دوستان کمک کنین
نقل قول: طراحی یک شبهه کامپایلر
تو کتاب C نوشته Ditle&Ditle که جعفر نژاد ترجمه می کنه، نوشتن interpreter (مفسّر) رو توضیح داده. میتونید مطالعه بفرمایید. :چشمک:
نقل قول: طراحی یک شبهه کامپایلر
در مورد lex و yacc هم توضیح داده؟
نقل قول: طراحی یک شبهه کامپایلر
نقل قول:
نوشته شده توسط
asefy2008
در مورد lex و yacc هم توضیح داده؟
خیر، اون کتابی که من دارم فقط اومده نحوه نوشتن یک مفسر رو با خود C از بیس توضیح داده.
در مورد اون دو تا هم میتونید به این وبسایت مراجعه کنید: http://dinosaur.compilertools.net
موفق باشید :قلب:
نقل قول: طراحی یک شبهه کامپایلر
اونوقت اگر بخواهیم نحوه کار با نسخه های ویندوزی lex و yacc رو یاد بگیریم باید از کدوم کتاب استفاده کنیم.(به من گفتن این دوتا برای linux هست.)
لطفا اگه می تونی یک لینک دانلود بده برای کتاب.
ممنونم
نقل قول: طراحی یک شبهه کامپایلر
نقل قول: طراحی یک شبهه کامپایلر
token ها چی هستن؟(دقیقا یعنی چی مثلا int a=0 یک token هست یا مجموعه ای از token ها است.)
چطور باید token ها رو در جدول نمادها(symbol table) ذخیره کرد؟
آیا خود کامپایلر یک symbol table جداگانه داره؟(که کلمات کلیدی رو از توش پیدا کنیم.)
ورودی scanner چی هست؟(می دونم lexeme هست ولی منظور از واژه مثلا if یا for یا a>10 هست)
دوستان لطفا مفصل توضیح بدن اکثر مطالب فارسی در گوگل رو دیدم ولی هنوز برام سوالات بالا وجود داره.
دوستان توجه داشته باشن که من می خوام برای کد سی شارپ یک درخت تجزیه درست کنم و اصلا خطا داشتن کدها برام اهمیت نداره.(با توجه به این راهنمایی کنید)
ممنون
نقل قول: طراحی یک شبهه کامپایلر
نقل قول:
نوشته شده توسط
asefy2008
token ها چی هستن؟(دقیقا یعنی چی مثلا int a=0 یک token هست یا مجموعه ای از token ها است.)
مجموعه ای از token (نشانه) ها است... int یک نشانه، a یک نشانه و = و 0 نیز هر کدام یک نشانه محسوب می شوند.
نقل قول:
نوشته شده توسط
asefy2008
چطور باید token ها رو در جدول نمادها(symbol table) ذخیره کرد؟
با استخراج آن ها توسط توابع رشته ای...
نقل قول:
نوشته شده توسط
asefy2008
آیا خود کامپایلر یک symbol table جداگانه داره؟(که کلمات کلیدی رو از توش پیدا کنیم.)
فکر نکنم چنین چیزی وجود داشته باشه...
نقل قول:
نوشته شده توسط
asefy2008
ورودی scanner چی هست؟(می دونم lexeme هست ولی منظور از واژه مثلا if یا for یا a>10 هست)
سوال تون واضح نیست!!
نقل قول:
نوشته شده توسط
asefy2008
دوستان توجه داشته باشن که من می خوام برای کد سی شارپ یه ...
معمولا از زبان های برنامه نویسی سطح سیستم برای نوشتن چنین چیزی استفاده می شود!! مثل C و ... .
موفق باشید :چشمک:
نقل قول: طراحی یک شبهه کامپایلر
نقل قول:
با استخراج آن ها توسط توابع رشته ای...
لطفا بیشتر توضیح بدید.
آیا همه token ها رو در یک جدول نگه داری می کنند؟( منظورم برای یک برنامه کامل است)
نقل قول:
فکر نکنم چنین چیزی وجود داشته باشه...
پس کلمات کلیدی رو چطور باید پیدا کرد.
نقل قول:
سوال تون واضح نیست!!
باید یک چیزی به scanner بدیم تا به ما token رو بده. اون چیزی که باید بدیم یک خط از کدمون هست یا یکسری واژه هست مثل if یا چیز دیگه؟
نقل قول:
معمولا از زبان های برنامه نویسی سطح سیستم برای نوشتن چنین چیزی استفاده می شود!! مثل C و ... .
نگاه کن من قصدم نوشتن کامپایلر نیست فقط می خوام از دو قسمت اول کامپایلر برای کار اصلی خودم استفاده کنم.( می خوام کد رو به گراف جریان تبدیل کنم)
نقل قول: طراحی یک شبهه کامپایلر
خلاصه بگم، بهتره به کمک YACC (یا Lex) این کار رو انجام بدهید. ضمن اینکه توجه داشته باشید که می توانید کد زبان هایی مثل #C را بصورت RealTime کامپایل و اجرا کنید (بسته به کارتون داره).
نقل قول: طراحی یک شبهه کامپایلر
سلام به همه
من میخام یه شبه کامپایلر با ++C بنویسم ( واسه پروژه) دستوراتی مثل for، if و... رو بتونه کامپایل کنه .
اما نمی دونم از کجا شروع کنم و چطور بنویسم
لطفا راهنماییم کنید.
ممنون
نقل قول: طراحی یک شبهه کامپایلر
نقل قول:
نوشته شده توسط
gha310k
سلام به همه
من میخام یه شبه کامپایلر با ++C بنویسم ( واسه پروژه) دستوراتی مثل for، if و... رو بتونه کامپایل کنه .
اما نمی دونم از کجا شروع کنم و چطور بنویسم
لطفا راهنماییم کنید.
ممنون
کسی نیست منو راهنمایی کنه؟
تابع یا تکه کدی که بتونم باهاش یه کلمه یا یه حرف رو تشخیص بدم چیه ؟ (مثلا بتونم if یا a رو تشخیص بدم و جدا کنم)
کمک کنید
ممنون