سرشار از زندگی

طبقه بندی موضوعی
پیوندهای روزانه

نرم افزار flex و نحوه ی استفاده از آن

يكشنبه, ۲۵ اسفند ۱۳۹۲، ۰۷:۴۳ ب.ظ

نرم افزار flex برای ایجاد تحلیلگر از فایل نوشته شده به زبان flex استفاده می شود. در این فرایند، شما ابتدا فایل نوشته شده با زبان flex را به این نرم افزار می دهید و در خروجی یک فایل به زبان c ) c.*) تولید می کند که با کامپایل آن، scanner شما آماده استفاده خواهد بود!

حال به نحوه ی انجام این فرایند  با یک مثال می پردازم:

ایجاد تحلیلگر با flex

  • ابتدا فایل اجرایی flex را از اینجا دریافت کنید (200KB) و از حالت فشرده خارج کنید.
  • فایل با پسوند l  را در محلی که flex را از حالت فشرده خارج کردید (مثلا درایو F)، داخل پوشه ی زیر  قرار دهید.  (برای نوشتن فایل l ، این پست را ببینید)
F:\flex-2.5.4a-1-bin\bin
  • command ویندوز را باز کرده و با استفاده از دستور زیر به دایرکتوری مورد نظر بروید:
cd /d F:\flex-2.5.4a-1-bin\bin
  • حال با استفاده از دستور زیر فایل majidr.l را به flex بدهید:
flex majidr.l
  •  حالا اگه مشکلی نباشد، فایلی با نام lex.yy.c در همان محل تولید می شود. 

کامپایل کردن فایل تولید شده

  • برای کامپایل این کد، هر نسخه ای از Visual Studio را که دارید، باز کنید و از منوی Tools، گزینه ی Visual Studio Command Prompt را بزنید تا پنجره ی command باز شود. حال دستور زیر را وارد کنید تا به دایرکتوری مورد نظر بروید:
cd /d F:\flex-2.5.4a-1-bin\bin 
  • برای کامپایل دستور زیر را وارد نمایید:
cl lex.yy.c
  • با این کار فایل اجرایی در کنار فایل c ایجاد می شود.

استفاده از تحلیلگر کامپایل شده

  • برای استفاده از تحلیلگر،  مانند دستور زیر عمل کنید:
lex.yy <majidCodes.txt> majidOut.txt

که در آن  majidCodes.txt، فایل حاوی کد برای تحلیلگر  و  majidOut.txt ، فایل خروجی تحلیلگر است.


اگر ایرادی توی این پست بود یا ... ، در نظرات اعلام کنید!

موافقین ۰ مخالفین ۰ ۹۲/۱۲/۲۵
مجید رحیمی

کامپایلر

flex

l.*

compiler

نظرات  (۱۷)

bison مناسب این نوع flex رو از کجا میشه پیدا کرد؟
من هر چی میگردم نیست
پاسخ:
bison و flex عملکرد متفاوتی دارند.
.Lex and Flex are tools for generating scanners: programs which recognize lexical patterns in text. Flex is a faster version of Lex

.Yacc and Bison are tools for generating parsers: programs which recognize the structure grammatical structure of programs. Bison is a faster version of Yacc

سلام
ببخشید میشه توضیح در مورد bison هم بدین؟
ممنون 
پاسخ:
فایلی خوب درباره ی bison در اینجا موجود است.
سلام 
موقع کامپایل این ارور رو میده
error LNK1120: 2 unresolved externals 
پاسخ:
احتمالا یکی از include ها جا افتاده، اطلاعات بیشتر در اینجا و اینجا.
واسه jflex  چه دستوری باید تو command prompt  بنویسیم؟؟؟
پاسخ:
این را ببینید.
سلام آقا من فایل lex.yy.c رو با هرچی کامپایل میکنم خطا میگیره از چیه ؟

پاسخ:
خطاشو نگی، من از کجا بفهمم مشکل از چیه؟
:D
مسیر فایل من درسته ولی  تو cmd میگه که cl رو نمیشناسه.
پاسخ:
اول باید مطمئن بشید که دایرکتوری فعلیتون روی F:\flex-2.5.4a-1-bin\bin قرار داره.(دستور قبلی درست اجرا نشده)
واسه من میگه:
flex:cant open pp.l
پاسخ:

اگر مطمئنید که مسیر فایل درسته، یک بار هم با / امتحان کنید.

مثلا:

x/y.l

بعد از وارد کردن cl lex.yy.cاین پیغام رو میده:
compiling desktop applications for the ARM for the platform is not supported
چیکار باید بکنم؟
پاسخ:

طبق این عمل کنید:

http://stackoverflow.com/a/12347035/2040375

سلام ...
چرا بعد از وارد کردن cl lex.yy.c ، پیغام زیر رو میده ؟ باید چیکارش کنم؟
cl is not recognized as an internal or external command operable program or batch file.
ممنون .
    پاسخ:

    همون طور که گفتم؛ باید اول به دایرکتوری ای که flex وجود داره cd کنید:

    cd /d F:\flex-2.5.4a-1-bin\bin 


    سلام چرا من توی tool اون گزینه رو ندارم ؟؟؟؟
    پاسخ:

    این را ببینید.

    :)

    واقعا ممنوووووووووووووووووووووووووونم ازتون ....
    پاسخ:
    :)

    ممنون خوب بود

    پاسخ:
    :)
    منظورم از مثال، با یه گرامر یا کد بود.
    ولی خیلی خوب بود توضیحتون .ممنون.
    پاسخ:
    به نظرم در فایل آموزشی، نمونه ی گرامر موجود باشد.
    خیلی ممنونم
    میشه قسمت آخرو بیشتر توضیح بدید. کد زیرو کجا وارد کنیم؟؟؟؟؟
    lex.yy <majidCodes.txt> majidOut
    پاسخ:

    باید در Command line ای که به محل فایل کامپایل شده cd شده، وارد نمایید.

    سلام
    خوب بود ولی کاش این کار با ی مثال ارائه میشد.

    پاسخ:
    من که مثال زدم!
    سلام.من میخواستم یک تحلیلگر لغوی برای زبان جاوا با استفاده از jflex بنویسم لطف میکنید راهنماییم کنید.
    پاسخ:

    سلام

    متاسفانه بنده از این زمینه اطلاع کافی ندارم.

    با درود فراوان خدمت شما
    بسیار از شما سپاس گزارم بابت پست و کمکی که من از وبلاگ شما گرفتم
    خیلی خیلی ممنونم
    پاسخ:

    لطف دارید.

    خوشحالم مفید بوده.

    :)

    ارسال نظر

    ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
    شما میتوانید از این تگهای html استفاده کنید:
    <b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
    تجدید کد امنیتی