نمايش نتايج 1 تا 3 از 3

تاپیک: Lex & Yacc

  1. #1
    عضو فعال آواتار neda_eng
    رشته
    مهندسی فناوری اطلاعات
    تاريخ عضويت
    2008/7
    محل سكونت
    انسوی ابها جایی که خدا هست..
    امتیاز
    1731
    پست ها
    832

    Flower Lex & Yacc

    lex و yacc دو ابزار برای طراحی کامپایلر ها هستند . برنامهLex در حقیقت یک ابزار کمکی برای برنامه نویسی به شمار میرود و به شما امکان میدهد تا کدهای C لازم برای ایجاد یک تحلیلگر لغوی را بطور اتوماتیک ایجاد کنید.
    نحوه عمل هم بصورت کلی بدین حالت است که شما الگوهای مورد نیاز برای شناسایی توکن ها را مشخص میکنید و پس از تبدیل شدن این کد به کد زبان C میتوانید آن را در برنامه تان بکار گیرید.

    Lex
    – تولید کد C برای تحلیل گر لغوی
    Generates C code for the lexical analyzer (scanner)
    – تشخیص نقش نشانه ها با عبارات منظم
    Token patterns specified by regular expressions
    Yacc
    - تولید کد C برای تحلیل گر نحوی (LR(1
    Generates C code for a LR(1) syntax analyzer (parser)
    - قانون های BNF برای گرامر
    BNF rules for the grammar
    BNF :قرارداد ثبت شده اى که براى توضيح نحو يک زبان برنامه نويسى استفاده مى شود.
    Lex می تواند رشته ی دلخواهی از ورودی را بگیرد وهر قسمت از آن را تشخیص دهد ونشانه گذاری کند.واین دقیقا چیزی هست که برای ورودی Yacc لازم میباشد.
    تحلیل گر مانند تابعی هست که رشته ای از کاراکتر ها را به عنوان ورودی میگیرد که هر موقع کاراکتر های ورودی با کلید های تعریف شده در آن مطابقت داشته باشند عمل خاصی را انجام میدهد.
    فایل را در notepad با پسوند l. و با نام Example ذخیره می کنید و در فولدر برنامه lex قرار میدهید. فرض می کنیم که شما فولدر lex رو در درایو c قرار دادید. دستورات زیر رو در command prompt بنویسید:
    c:\lex> set rootdir=. c:\lex> lex -l -o Example.l Example.c
    حالا lex یک فایل با پسوند c تولید می کند که scanner هست. کد را با c اجرا کنید. در main برنامه یک فایل test را باز می کند که اگر مثلا در داخل فایل12 نوشته باشید در فایل ret_test که تولید می کند که NUMBER را بر می گرداند.
    Yacc می تواند رشته ای از نشانه ها را با مقدار های مشخص ترجمه کند.واین ارتباط بین Yacc وLex را به طور واضح نشان میدهد.
    به عنوان مثال اگه بخواهیم یک دستگاه تنظیم حرارت ساده (ترموستات) رو با یک زبان ساده کنترل کنیم به صورت زیر عمل می کنیم.

    نشانه های مورد نیاز برای lex file
    ,number, heat on/of(STATE),target , temperature

    Lex tokenizer
    %{
    #include
    #include "y.tab.h"
    %}
    %%
    ;[0-9]+ return NUMBER
    ;heat return TOKHEAT;
    ;on|off return STATE;
    ;target return TOKTARGET;
    ;temperature return TOKTEMPERATURE;
    \n /* ignore end of line */;
    [ \t]+ /* ignore whitespace */;
    %%

    Yacc File
    commands: /* empty */
    | commands command
    ;
    command:
    heat_switch
    |
    target_set
    ;
    heat_switch:
    TOKHEAT STATE
    {
    printf("\tHeat turned on or off\n");
    }
    ;
    target_set:
    TOKTARGET TOKTEMPERATURE NUMBER
    {
    printf("\tTemperature set\n");
    }
    ;
    نمونه ای از خروجی رو نشون میه که اگه کار بر heat on رو وارد کنه برنامه Heat turned on or off رو بر می گردونه.
    $ ./example4
    heat on
    Heat turned on or off
    heat off
    Heat turned on or off
    target temperature 10
    Temperature set
    target humidity 20
    error: parse error
    $
    برنامه lex یک مولد خودکار lexical analyser هست که تحت خانواده یونیکس کار میکند ولی واریانت های مختلفی تحت ویندوز نیز دارد.

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

  2. #2
    تازه وارد
    رشته
    مهندسی کامپیوتر
    تاريخ عضويت
    2009/10
    امتیاز
    10
    پست ها
    1

    پيش فرض

    ممنون
    اگه میشه لینک آخری رو دوباره بگذارید
    با تشکر

  3. #3
    تازه وارد
    رشته
    مهندسی کامپیوتر
    تاريخ عضويت
    2012/3
    امتیاز
    10
    پست ها
    1

    پيش فرض

    سلام
    لطفا" یه کتاب آموزش yacc اگر دارید برام بزارید

تاپیک های مشابه

  1. تحلیل op-amp
    توسط nadielectron در تالار الکترونیک
    پاسخ ها: 12
    آخرین ارسال: 2010/7/18, 10:10 AM
  2. op amp 741 ?!
    توسط vihara در تالار مهندسی برق
    پاسخ ها: 0
    آخرین ارسال: 2008/12/31, 04:04 AM
  3. op-amp
    توسط daneshbargh در تالار جزوات و مقالات مهندسی برق
    پاسخ ها: 2
    آخرین ارسال: 2008/9/24, 07:16 PM
  4. op-amp
    توسط darya.666 در تالار تاپیک های قدیمی
    پاسخ ها: 1
    آخرین ارسال: 2008/6/04, 12:50 PM

عبارت‌های مرتبط

آموزش yacc

آموزش lex

دانلود نرم افزار lex

نرم افزار lex

نحوه عملکرد bnf در گرامرهای زبان برنامه سازی

lex کامپایلر

دانلود پروژه کامپایلر با lex yacc

دانلود برنامه کامپایلر با lex yacc

ثبت اين صفحه

ثبت اين صفحه

قوانين ارسال

  • شما نمی‌توانيد تاپيک جديد ارسال كنيد
  • شما نمی‌توانيد پاسخ ارسال كنيد
  • شما نمی‌توانید فایل ضمیمه ارسال كنيد
  • شما نمی‌توانيدنوشته‌های خود را ويرايش كنيد
  •