نمایش نتایج 1 تا 15 از 15

نام تاپیک: طراحی یک شبهه کامپایلر

  1. #1
    کاربر دائمی آواتار asefy2008
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    تهران
    سن
    36
    پست
    729

    طراحی یک شبهه کامپایلر

    با سلام خدمت اساتید
    من کلا قصد نوشتن یک کامپایلر رو ندارم ولی تویه برنامه باید یک سری کد رو پردازش کنم و از داخلشون یک شکل بیرون بکشم(PDL منظورم هست تو کتاب جعفرنژاد خوب توضیح داده شد).حالا اگه دوستان کمک کنن بهم بگن چطور می تونم مثلا شرط های داخل یک if رو پردازش کنم یا این که کد یا منبعی بدن ممنون میشم.
    یک مقدار بیشتر توضیح میدم : مثلا من در یک قطعه کد به if می رسم حالا باید شرط داخل if رو بررسی کنم و ببینم در هر حالت به کجا میره
    if((a>c && (a==1 && c<10) || (a>c && b==c)) 
    مثلا در قطعه کد بالا a>c اول چک میشه اگر درست به داخل (a==1 && c<10) میره در غیر این صورت میره این قسمت (a>c && b==c)) . حالا من باید این روند رو به صورت شکل در بیارم.
    تعداد حالت های ممکن رو تونستم پیدا کنم ولی نمی دونم از هر حالت چطور به حالت بعد برم(خسته نباشم)(الان با توجه به این که تعداد حالت رو می دونم یک ماتریس از نوع بولین درست کردم تا بتون روابط رو پیاده سازی کنم .)
    نکته : می دونم با این همه کامپایلر و تازه اونم با سی شارپ، کار عاقلانه ای نیست که دنبال نوشتن یک کامپایلر یا همچین چیزی باشم ولی مجبورم پس خواهشا دوستان از دادن پست های حاشیه ای کلا خودداری کنن.
    با تشکر
    آخرین ویرایش به وسیله asefy2008 : پنج شنبه 17 تیر 1389 در 12:19 عصر

  2. #2
    کاربر دائمی آواتار BOB
    تاریخ عضویت
    خرداد 1383
    محل زندگی
    http://www.mshams.ir
    پست
    450

    نقل قول: صراحی یک شبهه کامپایلر

    سلام

    بهترین حالت برای انجام این کار استفاده از RegEx یا عبارات باقاعده است. برای تجزیه دقیق تمام حالات عبارت مورد بررسی، بهتر است از RegEx استفاده نمایید، اما بدون آن هم میتوان حالات مختلف تجزیه را به صورت بازگشتی طراحی نمود. (RegEx هم نوعی عملیات بازگشتی است)

    با انجام عملیات تجزیه، "درخت تجزیه" (parse tree) تهیه میشود که دقیقا مبدا و مقصد تمام حالات را با پیمایش آن می‌توان مشخص نمود. (مثلا این یه شبه کامپایلر بدون regex است)

  3. #3
    کاربر دائمی آواتار asefy2008
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    تهران
    سن
    36
    پست
    729

    نقل قول: صراحی یک شبهه کامپایلر

    یعنی کسی نمی دونه؟
    چطور میشه یک SCANNER با سی شارپ طراحی کرد؟(برای c می خوام)
    و همچنین یک parser ؟
    و یه سوال دیگه آیا میشه از lex و yacc در سی شارپ استفاده کرد ؟(منظورم ویندوزیشون هست)
    اگه کسی نمونه برنامه هم داره بزاره ممنون میشم.
    دوستان کمک کنن

  4. #4
    کاربر دائمی آواتار asefy2008
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    تهران
    سن
    36
    پست
    729

    نقل قول: طراحی یک شبهه کامپایلر

    کسی یه نمونه برنامه scanner وparser نداره؟
    دوستان کمک کنین

  5. #5
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    San Frabarnamenevisco
    پست
    691

    نقل قول: طراحی یک شبهه کامپایلر

    تو کتاب C نوشته Ditle&Ditle که جعفر نژاد ترجمه می کنه، نوشتن interpreter (مفسّر) رو توضیح داده. میتونید مطالعه بفرمایید.

  6. #6
    کاربر دائمی آواتار asefy2008
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    تهران
    سن
    36
    پست
    729

    نقل قول: طراحی یک شبهه کامپایلر

    در مورد lex و yacc هم توضیح داده؟

  7. #7
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    San Frabarnamenevisco
    پست
    691

    نقل قول: طراحی یک شبهه کامپایلر

    نقل قول نوشته شده توسط asefy2008 مشاهده تاپیک
    در مورد lex و yacc هم توضیح داده؟
    خیر، اون کتابی که من دارم فقط اومده نحوه نوشتن یک مفسر رو با خود C از بیس توضیح داده.

    در مورد اون دو تا هم میتونید به این وبسایت مراجعه کنید: http://dinosaur.compilertools.net

    موفق باشید

  8. #8
    کاربر دائمی آواتار asefy2008
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    تهران
    سن
    36
    پست
    729

    نقل قول: طراحی یک شبهه کامپایلر

    اونوقت اگر بخواهیم نحوه کار با نسخه های ویندوزی lex و yacc رو یاد بگیریم باید از کدوم کتاب استفاده کنیم.(به من گفتن این دوتا برای linux هست.)
    لطفا اگه می تونی یک لینک دانلود بده برای کتاب.
    ممنونم

  9. #9
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    San Frabarnamenevisco
    پست
    691

    نقل قول: طراحی یک شبهه کامپایلر

    نقل قول نوشته شده توسط asefy2008 مشاهده تاپیک
    اونوقت اگر بخواهیم نحوه کار با نسخه های ویندوزی lex و yacc رو یاد بگیریم باید از کدوم کتاب استفاده کنیم.(به من گفتن این دوتا برای linux هست.)
    لطفا اگه می تونی یک لینک دانلود بده برای کتاب.
    ممنونم
    توی همین سایتی که دادم Manual کاملشون هست:


    از طرف دیگه کتاب و مقاله هم زیاده، کافیه یک سرچ تو گوگل بکنید:


    http://tldp.org/HOWTO/pdf/Lex-YACC-HOWTO.pdf
    http://epaperpress.com/lexandyacc/download/lexyacc.pdf
    http://www.jus.uio.no/lm/intellectua...y/portrait.pdf
    http://www.jus.uio.no/lm/england.mar.../landscape.pdf
    http://www.lugbe.ch/action/reports/lex_yacc.pdf
    http://eur-lex.europa.eu/en/treaties.../12002E_EN.pdf
    http://www.cs.rug.nl/~jjan/vb/lextut.pdf
    ---------------------------------------
    http://www.gallois.com.br/comp/tutorial_lex_yacc.pdf
    http://www.musikwissenschaft.uni-mainz.de/~ag/tply/tply.pdf
    http://rogerprice.org/ug/ug.pdf
    http://www.icir.org/vern/papers/binpac.IMC06.pdf
    http://staff.science.uva.nl/~andy/compiler/yacc-intro.pdf
    http://www.cs.rug.nl/~jjan/vb/yacctut.pdf
    موفق باشید

  10. #10
    کاربر دائمی آواتار asefy2008
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    تهران
    سن
    36
    پست
    729

    نقل قول: طراحی یک شبهه کامپایلر

    token ها چی هستن؟(دقیقا یعنی چی مثلا int a=0 یک token هست یا مجموعه ای از token ها است.)
    چطور باید token ها رو در جدول نمادها(symbol table) ذخیره کرد؟
    آیا خود کامپایلر یک symbol table جداگانه داره؟(که کلمات کلیدی رو از توش پیدا کنیم.)
    ورودی scanner چی هست؟(می دونم lexeme هست ولی منظور از واژه مثلا if یا for یا a>10 هست)
    دوستان لطفا مفصل توضیح بدن اکثر مطالب فارسی در گوگل رو دیدم ولی هنوز برام سوالات بالا وجود داره.
    دوستان توجه داشته باشن که من می خوام برای کد سی شارپ یک درخت تجزیه درست کنم و اصلا خطا داشتن کدها برام اهمیت نداره.(با توجه به این راهنمایی کنید)
    ممنون

  11. #11
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    San Frabarnamenevisco
    پست
    691

    نقل قول: طراحی یک شبهه کامپایلر

    نقل قول نوشته شده توسط 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 و ... .

    موفق باشید

  12. #12
    کاربر دائمی آواتار asefy2008
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    تهران
    سن
    36
    پست
    729

    نقل قول: طراحی یک شبهه کامپایلر

    با استخراج آن ها توسط توابع رشته ای...
    لطفا بیشتر توضیح بدید.
    آیا همه token ها رو در یک جدول نگه داری می کنند؟( منظورم برای یک برنامه کامل است)

    فکر نکنم چنین چیزی وجود داشته باشه...
    پس کلمات کلیدی رو چطور باید پیدا کرد.

    سوال تون واضح نیست!!
    باید یک چیزی به scanner بدیم تا به ما token رو بده. اون چیزی که باید بدیم یک خط از کدمون هست یا یکسری واژه هست مثل if یا چیز دیگه؟

    معمولا از زبان های برنامه نویسی سطح سیستم برای نوشتن چنین چیزی استفاده می شود!! مثل C و ... .
    نگاه کن من قصدم نوشتن کامپایلر نیست فقط می خوام از دو قسمت اول کامپایلر برای کار اصلی خودم استفاده کنم.( می خوام کد رو به گراف جریان تبدیل کنم)

  13. #13
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    San Frabarnamenevisco
    پست
    691

    نقل قول: طراحی یک شبهه کامپایلر

    خلاصه بگم، بهتره به کمک YACC (یا Lex) این کار رو انجام بدهید. ضمن اینکه توجه داشته باشید که می توانید کد زبان هایی مثل #C را بصورت RealTime کامپایل و اجرا کنید (بسته به کارتون داره).

  14. #14

    نقل قول: طراحی یک شبهه کامپایلر

    سلام به همه

    من میخام یه شبه کامپایلر با ++C بنویسم ( واسه پروژه) دستوراتی مثل for، if و... رو بتونه کامپایل کنه .

    اما نمی دونم از کجا شروع کنم و چطور بنویسم
    لطفا راهنماییم کنید.
    ممنون

  15. #15

    نقل قول: طراحی یک شبهه کامپایلر

    نقل قول نوشته شده توسط gha310k مشاهده تاپیک
    سلام به همه

    من میخام یه شبه کامپایلر با ++C بنویسم ( واسه پروژه) دستوراتی مثل for، if و... رو بتونه کامپایل کنه .

    اما نمی دونم از کجا شروع کنم و چطور بنویسم
    لطفا راهنماییم کنید.
    ممنون

    کسی نیست منو راهنمایی کنه؟

    تابع یا تکه کدی که بتونم باهاش یه کلمه یا یه حرف رو تشخیص بدم چیه ؟ (مثلا بتونم if یا a رو تشخیص بدم و جدا کنم)

    کمک کنید

    ممنون

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •