صفحه 6 از 9 اولاول ... 45678 ... آخرآخر
نمایش نتایج 201 تا 240 از 329

نام تاپیک: ساخت Compiler و یک زبان برنامه نویسی جدید

  1. #201
    کاربر دائمی
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    35°41′46″N 51°25′23″E
    سن
    28
    پست
    1,545

    نقل قول: ساخت Compiler و یک زبان برنامه نویسی جدید

    نقل قول نوشته شده توسط amin32 مشاهده تاپیک
    چرا؟؟؟
    این طوری فکر کنم مشکل حل می شه:

        Case Is = 20
    Select Case temp
    Case temp = vbCr Or temp = vbLf
    CurrentLetter = CurrentLetter + 2
    CreateNewWord NewLine, CurrentWord
    CurrentWord = ""
    state = 1
    Case " "
    CurrentLetter = CurrentLetter + 1
    CurrentWord = ""
    state = 1
    Case ""
    Exit Do
    Case Else
    CreateNewWord Error, temp
    CurrentLetter = CurrentLetter + 1
    CurrentWord = ""
    state = 1
    End Select

  2. #202
    کاربر دائمی
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    35°41′46″N 51°25′23″E
    سن
    28
    پست
    1,545

    نقل قول: ساخت Compiler و یک زبان برنامه نویسی جدید

    لینک اصلاح شد.
    یه مشکلی همچنان هست:
    اگه یه Symbol اشتباه بدیم تشخیص می ده و Error = 21 می ده ولی برای بعدی ها هم همین طور 21 رو می نویسه.

  3. #203
    کاربر دائمی آواتار amin32
    تاریخ عضویت
    شهریور 1389
    محل زندگی
    !SolarSystem>Earth>Persia>North
    پست
    304

    نقل قول: ساخت Compiler و یک زبان برنامه نویسی جدید

    نقل قول نوشته شده توسط IamOverlord مشاهده تاپیک
        Case Is = 20
    Select Case temp
    Case temp = vbCr Or temp = vbLf
    CurrentLetter = CurrentLetter + 2
    CreateNewWord NewLine, CurrentWord
    CurrentWord = ""
    state = 1
    Case " "
    CurrentLetter = CurrentLetter + 1
    CurrentWord = ""
    state = 1
    Case ""
    Exit Do
    Case Else
    CreateNewWord Error, temp
    CurrentLetter = CurrentLetter + 1
    CurrentWord = ""
    state = 1
    End Select
    ببخشید ولی من اصلآ متوجه منظورت نشدم! این کد چه قابلیتی رو اضافه میکنه؟

  4. #204
    کاربر دائمی
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    35°41′46″N 51°25′23″E
    سن
    28
    پست
    1,545

    نقل قول: ساخت Compiler و یک زبان برنامه نویسی جدید

    این رو به جای کد قبلی Case Is = 20 می ذاریم تا اون مشکل رو حل بشه. Symbol غلط رو همراه با Error 21 گزارش می ده و بعد به کارش ادامه می ده ...

  5. #205
    کاربر دائمی آواتار amin32
    تاریخ عضویت
    شهریور 1389
    محل زندگی
    !SolarSystem>Earth>Persia>North
    پست
    304

    نقل قول: ساخت Compiler و یک زبان برنامه نویسی جدید

    اینم حل شد. فقط یک خط کد کم نوشته بودم!!!!!!

    state=1

    این خط حالت فعلی dfa رو به حالت شروع میبره که یادم رفته بود بنویسم.

  6. #206
    کاربر دائمی
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    35°41′46″N 51°25′23″E
    سن
    28
    پست
    1,545

    نقل قول: ساخت Compiler و یک زبان برنامه نویسی جدید

    یه اشتباهی کردم؛ باید به جای

                Case temp = vbCr Or temp = vbLf
    CurrentLetter = CurrentLetter + 2
    CreateNewWord NewLine, CurrentWord
    CurrentWord = ""
    state = 1


    نوشت :

                Case vbCr
    CurrentLetter = CurrentLetter + 2
    CreateNewWord NewLine, CurrentWord
    CurrentWord = ""
    state = 1
    Case vbLf
    CurrentLetter = CurrentLetter + 2
    CreateNewWord NewLine, CurrentWord
    CurrentWord = ""
    state = 1

  7. #207
    کاربر دائمی آواتار amin32
    تاریخ عضویت
    شهریور 1389
    محل زندگی
    !SolarSystem>Earth>Persia>North
    پست
    304

    نقل قول: ساخت Compiler و یک زبان برنامه نویسی جدید

    نقل قول نوشته شده توسط IamOverlord مشاهده تاپیک
    ضمنا یه اشتباهی هم هست. باید به جای

                Case temp = vbCr Or temp = vbLf
    CurrentLetter = CurrentLetter + 2
    CreateNewWord NewLine, CurrentWord
    CurrentWord = ""
    state = 1


    نوشت :

                Case vbCr
    CurrentLetter = CurrentLetter + 2
    CreateNewWord NewLine, CurrentWord
    CurrentWord = ""
    state = 1
    Case vbLf
    CurrentLetter = CurrentLetter + 2
    CreateNewWord NewLine, CurrentWord
    CurrentWord = ""
    state = 1
    اشتباه میکنی! کاربر با زدن اینتر در واقع این دو کاراکتر رو ایجاد میکنه. ما هم با دیدن یکی از این دو کاراکتر دو کاراکتر رو رد میدیم. و در واقع فقط اون دو رو یک کاراکتر خط جدید تشخیص میدیم.

  8. #208
    کاربر دائمی
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    35°41′46″N 51°25′23″E
    سن
    28
    پست
    1,545

    نقل قول: ساخت Compiler و یک زبان برنامه نویسی جدید

    نقل قول نوشته شده توسط amin32 مشاهده تاپیک
    اشتباه میکنی! کاربر با زدن اینتر در واقع این دو کاراکتر رو ایجاد میکنه. ما هم با دیدن یکی از این دو کاراکتر دو کاراکتر رو رد میدیم. و در واقع فقط اون دو رو یک کاراکتر خط جدید تشخیص میدیم.
    فهمیدم منظورتون رو اشتباه از من بود که Case temp = vbCr Or temp = vbLf رو نوشتم چون اجرا نمی شه، باید به جاش یه چیز دیگه نوشته می شد که حل شد.

    بابت زحمتی که کشیدید ممنون!

    مرحله ی بعد چی هست؟

  9. #209
    کاربر دائمی آواتار amin32
    تاریخ عضویت
    شهریور 1389
    محل زندگی
    !SolarSystem>Earth>Persia>North
    پست
    304

    نقل قول: ساخت Compiler و یک زبان برنامه نویسی جدید

    مرحله بعد تحلیلگر نحوی ............

  10. #210

    نقل قول: ساخت Compiler و یک زبان برنامه نویسی جدید

    سلام
    تحلیلگر لغوی اینجا تموم شد؟
    من ویژوال بیسیک رو خیلی کم بلدم(در حد کار با بسکام) بنابراین نمی تونم اینجا اظهار نظری بکنم. اما قبلا قسمت ثابتهای عددی رو با سی نوشتم.
    کدش حدود 700 خط شد.
    دقت کنید فقط ثابتهای عددی. حتی ثابتهای رشته ای رو هم ننوشتم فقط ثابت های عددی.
    پیش بینی من برای کل تحلیلگر لغوی البته در زبان سی چیزی حدود 2000 خط کده.
    که البته با ترتیبی که بنده نوشتم باقی کار فقط اضافه کردن کیس های بیشتره.
    اما یه چیزی اینجا مشکل زا میشه و اونم شبیه بودن بعضی ساختارهاست. که باید شروط داخل هر case از پس تشخیصشون بربیاد.
    مثال واضحش تشخیص یک شناسه از مثلا کلمه کلیدیه while هستش. یا مثلا پیمایش دیاگرامهایی که بزرگتر هستن.
    اینا نکاتیه که جدا در پیاده سازی اذیت می کنه. شاید برای یک کیس که محل تقاطع چنتا دیاگرام هست 6 تا 7 شرط بررسی شباهت برای تعیین شروع از دیاگرام درست باشه.
    خروجی این مرحله باتوجه به منابعی که دیدم به این شکله:
    یک جدول که دارای یک فیلد id و یک فیلد برای خود شناسه و یک فیلد برای نوع شناسهو یک فیلد دیگه برای محتوای اونه. فیلد دیگه ای هم تعبیه میشه تا تعیین کنه این شناسه از کلمات کلیدیه زبانه یانه.
    وقتی این جدول که به اصطلاح symbol table می نامنش پر شد. از روی اون توکن ها رو می سازن. توکن مثلا برای عملگر = به این صورته:
    <OP,=>

    و برای یک شناسه مثل x25 که در ردیف مثلا هشتم ذخیره شده به این شکل:
    <id8,x25>

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

  11. #211
    کاربر دائمی
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    35°41′46″N 51°25′23″E
    سن
    28
    پست
    1,545

    نقل قول: ساخت Compiler و یک زبان برنامه نویسی جدید

    فعلا این تحلیلگر لغویمون کار داره...
    اگه یه رشته مثل "ABCDE" بدی بهش به صورت "abcde" تشخیص می ده، یعنی همه ی حروف رو کوچیک می کنه.

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

    نقل قول: ساخت Compiler و یک زبان برنامه نویسی جدید

    خوب پروژه به کجا رسید منم دارم پروژه مو شروع می کنم از زبان اسمبلی و ساختن سیستم عامل شروع می کنم

  13. #213
    کاربر دائمی آواتار Hossenbor
    تاریخ عضویت
    بهمن 1387
    محل زندگی
    پارس
    پست
    429

    نقل قول: ساخت Compiler و یک زبان برنامه نویسی جدید

    داداشمون راست میگه زمان اینجا خیلی ارزش داره اگه بجای نوشتن اینجا چت می کردیم بهتر بود زمان کمتری گرفته میشد به هر حال ایدی نیمبازم ...m.a.j.n.o.n... یاهو هم ایدی دارم اونم همین نام کاربریمه که زیاد باهاش ان نمیشم اگه تونستی بیایی نیمباز یک روم بساز اسمشم همینجا بذار تا که بیام همونجا مزاحمت میشم

  14. #214
    کاربر دائمی آواتار amin32
    تاریخ عضویت
    شهریور 1389
    محل زندگی
    !SolarSystem>Earth>Persia>North
    پست
    304

    نقل قول: ساخت Compiler و یک زبان برنامه نویسی جدید

    نقل قول نوشته شده توسط IamOverlord مشاهده تاپیک
    فعلا این تحلیلگر لغویمون کار داره...
    اگه یه رشته مثل "ABCDE" بدی بهش به صورت "abcde" تشخیص می ده، یعنی همه ی حروف رو کوچیک می کنه.
    چرا اینقدر سخت میگیری!!!
    اینو من عمدآ برای ساده شدن اینطور درنظر گرفته بودم.(البته موقتآ). چیز مهمی نیست. کافی بود lcase رو حذف کنی و "A" و "Z" رو هم با temp مقایسه کنی. هرچند خودم اینکارو کردم و لینک رو هم اصلاح کردم. میتونی دانلود کنی. من قصد داشتم این موارد رو یه دفعه تو مرحله Optimization انجام بدم.

  15. #215
    کاربر دائمی آواتار amin32
    تاریخ عضویت
    شهریور 1389
    محل زندگی
    !SolarSystem>Earth>Persia>North
    پست
    304

    نقل قول: ساخت Compiler و یک زبان برنامه نویسی جدید

    نقل قول نوشته شده توسط maktoom مشاهده تاپیک
    سلام
    تحلیلگر لغوی اینجا تموم شد؟
    من ویژوال بیسیک رو خیلی کم بلدم(در حد کار با بسکام) بنابراین نمی تونم اینجا اظهار نظری بکنم. اما قبلا قسمت ثابتهای عددی رو با سی نوشتم.
    کدش حدود 700 خط شد.
    دقت کنید فقط ثابتهای عددی. حتی ثابتهای رشته ای رو هم ننوشتم فقط ثابت های عددی.
    پیش بینی من برای کل تحلیلگر لغوی البته در زبان سی چیزی حدود 2000 خط کده.
    ببینید عبارت با قاعده ثوابت عددی اینه:

    *[9-0][9-0]

    درسته؟
    کاملآ مشخصه که dfa مربوطه باید دو حالت داشته باشه, یعنی دو تا case . شما برای ایجاد این دو حالت 700 خط کد نوشتید!!!!!
    در کل اصلآ متوجه منظورتون نشدم. الان به نظر شما عملکرد این تحلیلگر لغوی ناقصه؟ عیبی داره؟ اینکه با دستورات کمتر از انتظارتون نوشته شده رو نقصان میدونید؟
    آخرین ویرایش به وسیله amin32 : چهارشنبه 12 بهمن 1390 در 15:17 عصر

  16. #216
    کاربر دائمی آواتار amin32
    تاریخ عضویت
    شهریور 1389
    محل زندگی
    !SolarSystem>Earth>Persia>North
    پست
    304

    نقل قول: ساخت Compiler و یک زبان برنامه نویسی جدید

    باید زودتر تصمیم بگیریم که از چه روشی برای پیاده سازی تحلیلگر نحوی استفاده کنیم.در این تحلیلگر ما بحث تجزیه کننده رو داریم. .به نظر من ساده ترین نوعش تجزیه کننده پیشگو هست که واقعآ سادست. اما مشکل بزرگش اینه که بازگشتیه و در نتیجه اصلآ بهینه نیست.
    اگه تصمیم باشه از الگوریتمهای بهتر و پیچیده تر استفاده بشه, من ترجیه میدم بهترینش رو انتخاب کنیم. حتی اگه خیلی پیچیده باشه.

  17. #217
    کاربر دائمی
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    35°41′46″N 51°25′23″E
    سن
    28
    پست
    1,545

    نقل قول: ساخت Compiler و یک زبان برنامه نویسی جدید

    در کل کدهای C نسبتا حجیم هست، طبیعیه ...

  18. #218
    کاربر دائمی
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    35°41′46″N 51°25′23″E
    سن
    28
    پست
    1,545

    نقل قول: ساخت Compiler و یک زبان برنامه نویسی جدید

    چرا اینقدر سخت میگیری!!!
    سخت نمی گیرم آخه اگه رشته ی "Hello World" رو بدیم خروجی "hello world" می شه..

  19. #219
    کاربر دائمی آواتار amin32
    تاریخ عضویت
    شهریور 1389
    محل زندگی
    !SolarSystem>Earth>Persia>North
    پست
    304

    نقل قول: ساخت Compiler و یک زبان برنامه نویسی جدید

    نقل قول نوشته شده توسط IamOverlord مشاهده تاپیک
    در کل کدهای C نسبتا حجیم هست، طبیعیه ...
    در ساختار های اصلی , کدهای نوشته شده با C فرق آنچنانی با vb نداره (از نظر حجم کد) . فقط در مسائلی مثل کار با ورودی/خروجی کدها کمی اضافه میشن.

  20. #220
    کاربر دائمی آواتار amin32
    تاریخ عضویت
    شهریور 1389
    محل زندگی
    !SolarSystem>Earth>Persia>North
    پست
    304

    نقل قول: ساخت Compiler و یک زبان برنامه نویسی جدید

    نقل قول نوشته شده توسط IamOverlord مشاهده تاپیک
    سخت نمی گیرم آخه اگه رشته ی "Hello World" رو بدیم خروجی "hello world" می شه..
    الان مگه باز هم این مشکل وجود داره؟؟
    در کل من برنامه رو طوری نوشتم که بشه هر تغییری رو به راحتی ایجاد کرد. نگران این تحلیلگر نباش.
    همونطور که گفتم یه سری تغییرات رو باید بزاریم برای مرحله Optimization.مثلآ من از عمد فعلآ متغیر WordCount رو integer در نظر گرفتم. این یعنی تعداد لغت های کشف شده نمیتونن از 32767 بیشتر باشن! برای حلش کافیه نوع متغیر رو long در نظر بگیری. و من حتمآ دلیلی داشتم برای این کار.
    ولی باز میگم به این مسائل جزئی فکر نکن.

  21. #221
    کاربر دائمی
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    35°41′46″N 51°25′23″E
    سن
    28
    پست
    1,545

    نقل قول: ساخت Compiler و یک زبان برنامه نویسی جدید

    الان مگه باز هم این مشکل وجود داره؟؟
    دوباره دانلود کرذم.
    اینو ببینید:
    عکس های ضمیمه عکس های ضمیمه

  22. #222
    کاربر دائمی آواتار amin32
    تاریخ عضویت
    شهریور 1389
    محل زندگی
    !SolarSystem>Earth>Persia>North
    پست
    304

    نقل قول: ساخت Compiler و یک زبان برنامه نویسی جدید

    الان که یکم فکر کردم باید هر کلمه کلیدی رو هم یک نوع لغت در نظر بگیریم. این قابلیت رو هم اضافه کردم.

    Lexical Analyzer.zip
    آخرین ویرایش به وسیله amin32 : چهارشنبه 12 بهمن 1390 در 17:16 عصر

  23. #223
    کاربر دائمی آواتار amin32
    تاریخ عضویت
    شهریور 1389
    محل زندگی
    !SolarSystem>Earth>Persia>North
    پست
    304

    نقل قول: ساخت Compiler و یک زبان برنامه نویسی جدید

    نقل قول نوشته شده توسط IamOverlord مشاهده تاپیک
    دوباره دانلود کرذم.
    اینو ببینید:
    اون هم حل شد. یادم رفته بود lcase مربوط به لغت رشته ای رو پاک کنم. تمام مشکلات مربوط به کوچک شدن حروف حل شد. دوباره فایل رو از پست قبل دانلود کن.

  24. #224
    کاربر دائمی آواتار amin32
    تاریخ عضویت
    شهریور 1389
    محل زندگی
    !SolarSystem>Earth>Persia>North
    پست
    304

    نقل قول: ساخت Compiler و یک زبان برنامه نویسی جدید

    من هنوز فکر میکنم بهتر باشه دو تا دستور ساده برای خواندن و نوشتن در خط فرمان به ساختار زبان اضافه بشه.

  25. #225
    کاربر دائمی
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    35°41′46″N 51°25′23″E
    سن
    28
    پست
    1,545

    نقل قول: ساخت Compiler و یک زبان برنامه نویسی جدید

    چه دستوراتی؟
    ولی این طوری مجبور می شیم هزار تا دستور دیگه هم برای تغییر رنگ و پاک کردن صفحه و ... بنویسیم. من نمی دونم می خوایم تو مایه های BASIC عمل کنیم یا مثلا C. من که نظرم اینه تو فایل های سرآیند دستورات رو تعریف کنه.

  26. #226
    کاربر دائمی آواتار amin32
    تاریخ عضویت
    شهریور 1389
    محل زندگی
    !SolarSystem>Earth>Persia>North
    پست
    304

    نقل قول: ساخت Compiler و یک زبان برنامه نویسی جدید

    نه فقط منظورم در مورد ورودی خروجی بود. بعد میتونیم در مرحله توسعه همه موارد رو به شکل کتابخانه در بیاریم.

  27. #227
    کاربر دائمی آواتار amin32
    تاریخ عضویت
    شهریور 1389
    محل زندگی
    !SolarSystem>Earth>Persia>North
    پست
    304

    نقل قول: ساخت Compiler و یک زبان برنامه نویسی جدید

    ببین, من منظورم اینه که دو تا دستور مثلآ read و write داشته باشیم تا وقتی که هنوز برنامه رو توسعه ندادیم. برنامه نویس بتونه یه برنامه محاسباتی ساده مثل ماشین حساب بنویسه! حمایت کاپایلر از کتابخانه یکم کار ساختش رو پیچیده میکنه. به نظرم بهتره اون رو به مرحله توسعه موکول کنیم.

  28. #228

    نقل قول: ساخت Compiler و یک زبان برنامه نویسی جدید

    سلام دوستان

    من برنامم رو از روی این دیاگرام نوشتم.
    Loghavi.Adad.jpg

    توضیح برای other اینکه یعنی اسکنر یک کاراکتر اضافه خونده و باید برگرده و تا قبل از اون رو برای اون دیاگرام پذیرش کنه.

  29. #229

    نقل قول: ساخت Compiler و یک زبان برنامه نویسی جدید

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

  30. #230

    نقل قول: ساخت Compiler و یک زبان برنامه نویسی جدید

    راستی خیلی خوشحال کنندس با دو تا کیس ثابتهای عددی رو نوشتید. حالا اگه امکان داره 7-8 خط دیگه اضافه کنید تا دیگر ثابتهای عددی رو هم بپذیره.
    آخرین ویرایش به وسیله maktoom : پنج شنبه 13 بهمن 1390 در 16:33 عصر

  31. #231
    کاربر دائمی آواتار amin32
    تاریخ عضویت
    شهریور 1389
    محل زندگی
    !SolarSystem>Earth>Persia>North
    پست
    304

    نقل قول: ساخت Compiler و یک زبان برنامه نویسی جدید

    نقل قول نوشته شده توسط amin32 مشاهده تاپیک
    ببینید عبارت با قاعده ثوابت عددی اینه:

    *[9-0][9-0]

    درسته؟

    من منظورم از این فقط اعداد صحیح بود که به اشتباه ثوابت عددی رو بیان کردم. در ضمن حالتهای -/+ در dfa ای که قرار دادید باید حذف بشن. چون این کاملآ وظیفه تحلیلگر معناییه که تشخیص بده که علامت "-" برای تفریق به کار رفته یا نمایش منفی. برای تشخیص درستی ساختار هم باید گرامرهای تفریق و منفی کردن رو به تحلیلگر نحوی اضافه کنید. من خیلی علاقه دارم دوستان بیان اینجا و ایرادهای کار رو به ما بگن. اما لطفآ واضحتر بیان کنید دقیقآ چه لغتی رو باید تحلیلگر بشناسه ولی تحلیلگر ما نمیشناسه. متشکر

  32. #232

    نقل قول: ساخت Compiler و یک زبان برنامه نویسی جدید

    این دیاگرام و دیگر دیاگرام ها رو می تونید در کتاب اقای اهو به ترجمه دکتر دلداری ببینید. صفحه 108
    در اونجا مثبت و منفی ابتدای عدد رو در نظر نگرفته. اما برای توان ده در نماد علمی در نظر گرفته که اینهم دلیلش مشخصه.
    البته اونجا دیاگرام در پاسکال رو بیان کرده و مقدار کمی تفاوت داره.

    در صفحه 177 اشاره به درنظر گرفتن - قبل از id شده. (مربوط به تحلیلگر نحوی)

    درمورد اینکه چه چیزهایی رو نمی پذیره. فقط وقتی میشه کاملا درست بررسیش کرد که دیاگرامهایی روکه از روی اون برنامه رو نوشتید بیارید.
    ممکنه شما جور دیگه ای بخواید هرچیزی رو پیاده سازی کنید. بنابراین باید دیاگرام هر کدوم رو بیارید.
    تا بشه فهمید هرکدوم از کیسها برای کدوم وضعیت در نظر گرفته شدن و ورودی و خروجی های هر وضعیت هم درست درنظر گرفته شدن یا نه.

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

    آکادمیک کار کردن ، دیاگرام داشتن، سر حوصله کار کردن، با دقت فراوان کار کردن و... اینا باعث میشه نواقصی که قراره کس دیگه نشونمون بده خودمون همینجا پیداش کنیم و حلش کنیم.

    وقتی میگید بریم سراغ تحلیلگر نحوی یه لحظه این اومد تو ذهنم که همه دیاگرامهای ثابتهای عددی و غیر عددی(رشته ای) و علائم خاص زبان و کلمات کلیدی زبان و... رو دارید و پیاده سازیشون رو هم دارید.
    اما وقتی استناد به دو تا کیس کردید جدا تو فکر رفتم.

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

  33. #233
    کاربر دائمی آواتار amin32
    تاریخ عضویت
    شهریور 1389
    محل زندگی
    !SolarSystem>Earth>Persia>North
    پست
    304

    نقل قول: ساخت Compiler و یک زبان برنامه نویسی جدید

    نقل قول نوشته شده توسط maktoom مشاهده تاپیک
    اما برای توان ده در نماد علمی در نظر گرفته که اینهم دلیلش مشخصه.
    این رو نمیشه یک عیب دونست. این از مواردیه که من برای ساده تر شدن قضیه فعلآ ازش صرفه نظر کردم.

    نقل قول نوشته شده توسط maktoom مشاهده تاپیک
    آکادمیک کار کردن ، دیاگرام داشتن، سر حوصله کار کردن، با دقت فراوان کار کردن و... اینا باعث میشه نواقصی که قراره کس دیگه نشونمون بده خودمون همینجا پیداش کنیم و حلش کنیم.
    نمیدونم شاید حجم کم کدها باعث شده اینطور فکر کنید که من این موارد رو رعایت نکردم و به این اصول پایبند نبودم.
    سعی میکنم DFA زبان رو به شکل کامپیوتری رسم کنم.
    آخرین ویرایش به وسیله amin32 : پنج شنبه 13 بهمن 1390 در 18:34 عصر

  34. #234
    کاربر دائمی آواتار amin32
    تاریخ عضویت
    شهریور 1389
    محل زندگی
    !SolarSystem>Earth>Persia>North
    پست
    304

    نقل قول: ساخت Compiler و یک زبان برنامه نویسی جدید

    اینم از DFA اولیه لغات زبان که البته فکر میکنم بعدش خود برنامه یکی دو تا تغییر خیلی کوچیک داشت.
    یادآوری اینکه همونطور که میدونید نقطه های قسمت رشته , یعنی هر کاراکتری غیر از کاراکتر خط جدید.

    DFA.jpg

    فکر میکنم واقعآ کسی نباشه که بتونه همکاری کنه و علاقه چندانی به این موضوع جالب از کسی دیده نمیشه. یکم وضعیت اینجا ناامید کنندست.

  35. #235
    کاربر دائمی
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    35°41′46″N 51°25′23″E
    سن
    28
    پست
    1,545

    نقل قول: ساخت Compiler و یک زبان برنامه نویسی جدید

    فکر میکنم واقعآ کسی نباشه که بتونه همکاری کنه و علاقه چندانی از کسی دیده نمیشه. یکم وضعیت اینجا ناامید کنندست.
    سلام دوست عزیز
    متاسفانه در مسائل تئوریک شما از من بیش تر می دونید! :دی
    یه موقع فکر نکنید بحث رو ول کردم، اما مثل این که الان نوبت من نیست... در این تحلیلگر شما ها اطلاعات بیش تری فکر می کنم داشته باشید.
    اما در مورد کد زدن منتظرم تا مشخص بشه چی بنویسم.

    اما در کل حق دارید تاپیک خیلی خلوته با این که آمار بازدید کم نیست... امیدوارم بقیه ی دوستان در هر جا که ممکنه اظهار نظر کنند و کمک کنند در کدنویسی.

  36. #236

    نقل قول: ساخت Compiler و یک زبان برنامه نویسی جدید

    دیاگرام از سه جنبه ایراد داره(بریم به سمت همکاری):
    اول اینکه وضعیت other براش در نظر گرفته نشده. مشکلی بوجود میاد مثلا برای این عبارت :
    x=2;

    نمی تونه x رو بعنوان یه شناسه بشناسه.چون نشانگر انتهای توکن که other باشه در برنامه تعبیه نشده.(اسکنر با رسیدن به = نمی فهمه باید چکار کنه یعنی کار درست رو انجام نمیده. کار درست اینه که به مساوی دست نزنه اگه خونده برگرده تا در گام بعد بفهمه برای = از کدوم دیاگرامش باید استفاده کنه.) همچنین عدد 2 هم بخاطر قرار گرفتن ; قابل شناسایی نیست.(دلیل وجود other نامتنهای بودن طول رشته پذیرش اون دیاگرامه که با یه کاراکتر دیگه که مال یه توکن دیگس به اسکنر میفهمونیم که کار تو در این دیاگرام تموم شده و تا قبل از کاراکتر نامربوط رو پذیرش کن)
    برعکس اون برای عملگر بزرگتر مساوی یا کوچکتر مساوی یا ++ یا -- یا== بعد از آخرین توکن متوقع کاراکتر دیگه ای نیستیم پس چون یک رشته متناهی داریم که انتهاش معلومه به محض رسیدن به انتهای رشته پذیرش می کنیم و other اینجا نداریم.
    دوم اینکه بجهت سهولت کار و کم شدن حجم کد بهتره وضعیتهای مشابه رو در یک دیاگرام در نظر بگیریم:

    Scan0031.JPG

    ایراد سوم اینه که وضعیتها شماره گذاری نشدن. که به این معناست که اولویت بررسی وضعیتها در نظر گرفته نشده. در شرایطی که یک دیاگرام کم استفاده است یا طول کمتری داره اگه اولویت رو به اون بدیم تشخیص توکن ها قطعا اشتباه خواهد بود.
    از اینکه اینطور زحمت کشیدید و به مطالب گفته شده اهمیت دادید خوشحالم.
    بهرحال همه در حال یادگرفتن هستیم.
    از دوستانی که از این صفحه دیدن می کنن می خوام مطالب صفحات این تاپیک رو بخونن. مطالب با ارزشی گفته شده.
    همچنین کتب معرفی شده در این تاپیک از هرکدوم که شروع بشه راهی به سمت فهم بهتر مطالب این تاپیکه و شما هم مطمئنا می تونید مطلبی رو در همکاری با این کار مهم بیان کنید که سودمند باشه.

  37. #237
    کاربر دائمی آواتار amin32
    تاریخ عضویت
    شهریور 1389
    محل زندگی
    !SolarSystem>Earth>Persia>North
    پست
    304

    نقل قول: ساخت Compiler و یک زبان برنامه نویسی جدید

    نقل قول نوشته شده توسط maktoom مشاهده تاپیک
    دیاگرام از سه جنبه ایراد داره(بریم به سمت همکاری):
    اول اینکه وضعیت other براش در نظر گرفته نشده. مشکلی بوجود میاد مثلا برای این عبارت :
    x=2;

    نمی تونه x رو بعنوان یه شناسه بشناسه.چون نشانگر انتهای توکن که other باشه در برنامه تعبیه نشده.(اسکنر با رسیدن به = نمی فهمه باید چکار کنه یعنی کار درست رو انجام نمیده. کار درست اینه که به مساوی دست نزنه اگه خونده برگرده تا در گام بعد بفهمه برای = از کدوم دیاگرامش باید استفاده کنه.) همچنین عدد 2 هم بخاطر قرار گرفتن ; قابل شناسایی نیست.(دلیل وجود other نامتنهای بودن طول رشته پذیرش اون دیاگرامه که با یه کاراکتر دیگه که مال یه توکن دیگس به اسکنر میفهمونیم که کار تو در این دیاگرام تموم شده و تا قبل از کاراکتر نامربوط رو پذیرش کن)
    برعکس اون برای عملگر بزرگتر مساوی یا کوچکتر مساوی یا ++ یا -- یا== بعد از آخرین توکن متوقع کاراکتر دیگه ای نیستیم پس چون یک رشته متناهی داریم که انتهاش معلومه به محض رسیدن به انتهای رشته پذیرش می کنیم و other اینجا نداریم.
    دوم اینکه بجهت سهولت کار و کم شدن حجم کد بهتره وضعیتهای مشابه رو در یک دیاگرام در نظر بگیریم:

    Scan0031.JPG

    ایراد سوم اینه که وضعیتها شماره گذاری نشدن. که به این معناست که اولویت بررسی وضعیتها در نظر گرفته نشده. در شرایطی که یک دیاگرام کم استفاده است یا طول کمتری داره اگه اولویت رو به اون بدیم تشخیص توکن ها قطعا اشتباه خواهد بود.
    از اینکه اینطور زحمت کشیدید و به مطالب گفته شده اهمیت دادید خوشحالم.
    بهرحال همه در حال یادگرفتن هستیم.
    از دوستانی که از این صفحه دیدن می کنن می خوام مطالب صفحات این تاپیک رو بخونن. مطالب با ارزشی گفته شده.
    همچنین کتب معرفی شده در این تاپیک از هرکدوم که شروع بشه راهی به سمت فهم بهتر مطالب این تاپیکه و شما هم مطمئنا می تونید مطلبی رو در همکاری با این کار مهم بیان کنید که سودمند باشه.
    [_a-zA-Z0-9^] یعنی همون other و در زبانهای با قاعده یعنی هر لغتی غیر از _a-zA-Z0-9 . فکر میکردم اینو بدونید. من برای مشخص شدن کامل مساله از اون استفاده کردم.میتونید مراجع رو مطالعه کنید.

    در مورد ایراد دوم باید عرض کنم این همون قسمتی بود که در برنامه تغییر کرد. میتونید در کدش هم چک کنید. به همین خاطر بود که گفتم یک تغییر کوچیک داشته. در ضمن مشکلش زیاد شدن کد نبود. اگر خوب دقت کنید با این حالت به جای DFA ما یک NFA داشتیم! و به همین دلیل همونطور که گفتم این قسمت در برنامه تغییر کرد.

    در مورد شماره گذاری حالتهاهم فکر میکنم هر کسی بدونه که حالتهای DFA باید شماره گذاری بشه .و این DFA ای که روی کاغذ رسم شده و الان روبروی من قرار داره, شماره گذاری شده. من قصد داشتم در پایان رسم کامپیوتری DFA , شماره ها رو قرار بدم که فراموش کردم. فکر میکنم اینو هر کسی میتونست حدس بزنه. در کل رسم کامپیوتری DFA در برنامه کاری من قرار نداشت و قصد داشتم همون DFA روی کاغذ رو پیاده سازی کنم.

    به نظر من در حال حاضر بهترین راه برای عیب یابی تحلیلگر , تست خود برنامه هست . چون اگه DFA هم درست باشه , ممکنه برنامه اون رو خوب پیاده سازی نکرده باشه. به راحتی میتونید با دادن ورودی های مختلف خروجی تحلیلگر رو چک کنید. در ضمن همونطور که متوجه شدید پروتکلها هم تغییر کردند. میتونید پروتکلها رو در داده شمارشی WordType ببینید.
    آخرین ویرایش به وسیله amin32 : جمعه 14 بهمن 1390 در 08:55 صبح

  38. #238
    کاربر دائمی آواتار amin32
    تاریخ عضویت
    شهریور 1389
    محل زندگی
    !SolarSystem>Earth>Persia>North
    پست
    304

    نقل قول: ساخت Compiler و یک زبان برنامه نویسی جدید

    نقل قول نوشته شده توسط IamOverlord مشاهده تاپیک
    سلام دوست عزیز
    متاسفانه در مسائل تئوریک شما از من بیش تر می دونید! :دی
    یه موقع فکر نکنید بحث رو ول کردم، اما مثل این که الان نوبت من نیست... در این تحلیلگر شما ها اطلاعات بیش تری فکر می کنم داشته باشید.
    اما در مورد کد زدن منتظرم تا مشخص بشه چی بنویسم.

    اما در کل حق دارید تاپیک خیلی خلوته با این که آمار بازدید کم نیست... امیدوارم بقیه ی دوستان در هر جا که ممکنه اظهار نظر کنند و کمک کنند در کدنویسی.
    به خاطر اینکه گفتید به اسمبلر مسلط هستید , فکر میکنم قابلیت شما بیشتر در BackEnd باشه . و چون مسائل FrontEnd تئوریک تر هستند , باعث شده که زیاد به شکل عملی در موضوع شرکت نکنید. من اینو درک میکنم. اما فکر میکنم با محدودیت زمانی که من دارم, بهتر باشه دوستانی که هم با تحلیلگرها و هم با زبان پیاده ساز آشنایی دارن , بیشتر همکاری کنند. وگرنه باید منتظر یه وقفه طولانی باشیم ( شاید تا تعطیلات تابستان!! )

    ببینید الان به غیر از تحلیلگر لغوی , برای جلوبندی سه تا فاز مهم دیگه باقی مونده:

    1- تحلیلگر نحوی

    2- تحلیلگر معنایی

    3- تولید کننده کد میانی ( که توجه من روی کد سه آدرسه هست )
    آخرین ویرایش به وسیله amin32 : جمعه 14 بهمن 1390 در 09:30 صبح

  39. #239

    نقل قول: ساخت Compiler و یک زبان برنامه نویسی جدید

    وقتی در یک گفتگو و همکاری کار به چنین مقطعی میرسه... دقیقتر بگم به اصطکاک میرسه. و هر گونه نقد به غرضورزی تعبیر میشه. و تلاش گروه داره فدای این حرفای پوچ میشه. و اثبات درست بودن یه چیز غلط ... درصورتیکه میشه پذیرای اون بود و حتی کار رو تقسیم کرد. و این رو متوجه نشیم که کار گروهی هر نقدی بهش وارد بشه مسئولیتش به گردن تک تک اعضای اون پروژست و لزومی نداره کسی خودش رو بارکش این مسئولیت و هدف اون نقد بدونه. این نشون میده فرهنگ اپن سورس، فرهنگ کار تیمی هنوز در این تاپیک کمبود داره.
    من تمامی نقص هام و عیبهام و کمبودهام رو می پذیرم.
    و همچنین تمامی سوادم و تمامی دانشم رو و تمامی وقتم رو صرف این تاپیک کردم. تا در انتها پیش خودم شرمنده نباشم که تلاش یه عده رو تحت تاثیر مفاهیم غلط بیان شده توسط خودم بذرام. با وجدانم سعی کردم. نقد کردم و سعی در ایجاد یک معیار برای تشخیص میزان انحراف داشتم. هدفم براورده نشد.
    دیگه در این تاپیک پستی نخواهم گذاشت و دوستان می تونن به نحوی که پیش از این در حال حرکت بودن با سرعت و بدون اصطکاک بکارشون ادامه بدن.
    از خودم می پرسم چرا باید وقتم رو در مقطعی که درگیر چندین پروژه و کار هستم باید صرف اصطکاکی بکنم که نتیجش فقط اتلافه انرژیه؟ و وقتی دوستان به این حد از اعتماد بنفس در بیان نظر شخصیشون و اعمال اون برروی عملکرد گروه هستن چه احتیاجی به وقت شبانه ایه که در این وقت نداشته بذارم روی این پروژه؟
    بهرحال من هم مثه شما و حداقل اغلب شما موقعی که این درس رو گرفته بودم با نمره کامل گذروندم گرچه همون روز امتحان ریزپردازنده ها(8051) هم داشتم که اون رو هم با نمره کامل گذروندم. گفتم شاید سوادی که کسب کردم و عمقی که در این درس زدم و با تدریسی که در این درس برای کنکور برعهده گرفتم بتونم از طرق مختلف با افراد زبردست مرتبط بشم و از اونها در این پروژه یاری بگیرم. قصدی بجز یادگرفتن نداشتم و از اینکه به سرعت شما لطمه زدم متاسفم.
    دیگه به این تاپیک سر نخواهم زد و امیدوارم شما بتونید با سرعت پیشین و حتی سریعتر بکارتون ادامه بدید.
    منم با دیگر تاپیکها خودم رو مشغول می کنم و سعی به یادگرفتن مباحث طرح شده در اونجا خواهم کرد.
    موفق و پیروز باشید.

    خدانگهدار

  40. #240
    کاربر دائمی آواتار amin32
    تاریخ عضویت
    شهریور 1389
    محل زندگی
    !SolarSystem>Earth>Persia>North
    پست
    304

    نقل قول: ساخت Compiler و یک زبان برنامه نویسی جدید

    نقل قول نوشته شده توسط maktoom مشاهده تاپیک
    وقتی در یک گفتگو و همکاری کار به چنین مقطعی میرسه... دقیقتر بگم به اصطکاک میرسه. و هر گونه نقد به غرضورزی تعبیر میشه. و تلاش گروه داره فدای این حرفای پوچ میشه. و اثبات درست بودن یه چیز غلط ... درصورتیکه میشه پذیرای اون بود و حتی کار رو تقسیم کرد. و این رو متوجه نشیم که کار گروهی هر نقدی بهش وارد بشه مسئولیتش به گردن تک تک اعضای اون پروژست و لزومی نداره کسی خودش رو بارکش این مسئولیت و هدف اون نقد بدونه. این نشون میده فرهنگ اپن سورس، فرهنگ کار تیمی هنوز در این تاپیک کمبود داره.
    من تمامی نقص هام و عیبهام و کمبودهام رو می پذیرم.
    و همچنین تمامی سوادم و تمامی دانشم رو و تمامی وقتم رو صرف این تاپیک کردم. تا در انتها پیش خودم شرمنده نباشم که تلاش یه عده رو تحت تاثیر مفاهیم غلط بیان شده توسط خودم بذرام. با وجدانم سعی کردم. نقد کردم و سعی در ایجاد یک معیار برای تشخیص میزان انحراف داشتم. هدفم براورده نشد.
    دیگه در این تاپیک پستی نخواهم گذاشت و دوستان می تونن به نحوی که پیش از این در حال حرکت بودن با سرعت و بدون اصطکاک بکارشون ادامه بدن.
    از خودم می پرسم چرا باید وقتم رو در مقطعی که درگیر چندین پروژه و کار هستم باید صرف اصطکاکی بکنم که نتیجش فقط اتلافه انرژیه؟ و وقتی دوستان به این حد از اعتماد بنفس در بیان نظر شخصیشون و اعمال اون برروی عملکرد گروه هستن چه احتیاجی به وقت شبانه ایه که در این وقت نداشته بذارم روی این پروژه؟
    بهرحال من هم مثه شما و حداقل اغلب شما موقعی که این درس رو گرفته بودم با نمره کامل گذروندم گرچه همون روز امتحان ریزپردازنده ها(8051) هم داشتم که اون رو هم با نمره کامل گذروندم. گفتم شاید سوادی که کسب کردم و عمقی که در این درس زدم و با تدریسی که در این درس برای کنکور برعهده گرفتم بتونم از طرق مختلف با افراد زبردست مرتبط بشم و از اونها در این پروژه یاری بگیرم. قصدی بجز یادگرفتن نداشتم و از اینکه به سرعت شما لطمه زدم متاسفم.
    دیگه به این تاپیک سر نخواهم زد و امیدوارم شما بتونید با سرعت پیشین و حتی سریعتر بکارتون ادامه بدید.
    منم با دیگر تاپیکها خودم رو مشغول می کنم و سعی به یادگرفتن مباحث طرح شده در اونجا خواهم کرد.
    موفق و پیروز باشید.

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

صفحه 6 از 9 اولاول ... 45678 ... آخرآخر

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

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