لکس: تفاوت میان نسخهها
محتوای حذفشده محتوای افزودهشده
جز ربات: اصلاح فاصله مجازی: "ای" بعد از "ه" |
جز ربات: ویرایش جزئی |
||
خط ۱:
{{ویکیسازی}}
در علوم رایانه,'''Lex'''
Lex در اصل، توسط Eric Schmidt و Mike Lesk طراحی و نوشته شد و این تحلیلگر لغوی، بطور استاندارد تحت سیستمهای یونیکس است و یک ابزار برای نمایش رفتار(که برگرفته از استاندارد Posix) دارد.
Lex یک رشته را از ورودی می خواند و تحلیلگر لغوی را مشخص میکند و خروجی ، سورس کد یک Lexer به زبان برنامه نویسی C است.
بهرحال، نسخههای اختصاصی سنتی Lex ، همچون OpenSolaris وPlan 9
== ساختار یک فایل Lex ==
ساختار یک فایل Lex عمدا شبیه به یک فایل Yacc است. فایلها به سه بخش تقسیم میشوند که هر بخش با %%
</br>
''بخش تعریف''</br>
خط ۲۲:
** ''قسمت کد زبان C (C code section)''، شامل دستورات و توابع کد زبان C است که کلمه به کلمه به فایل سورس تولید شده، اضافه میشود. احتمالاً این دستورات حاوی کدهایی هستند که در قسمت قواعد، توسط قواعد مختلف، فراخوانی میگردند. بهتر است که در برنامههای بزرگ، این بخش بطور جداگانه در یک فایل دیگر قرار بگیرد و در زمان کامپایل، به فایل اصلی اضافه شود.
== مثالی از فایل Flex ==
در ادامه یک فایل Lex از ویرایش Flex میآید. که یک رشتهای از اعداد صحیح را از ورودی، تشخیص داده و در خروجی نمایشش میدهد:
<code>
خط ۷۴:
Saw an integer: 6
== استفاده از Lex به همراه Yacc ==
عموماً Lex و Yacc(''تولید کنندهٔ Parser'') درکنار یکدیگر مورد استفاده قرار میگیرند. چون Lex به ماشینهای قطعی(DFA) محدود میشود بنابراین آن رشتههای ورودی، که Lex با استفاده از عبارات منظم قادر به تجزیهٔ آنها نیست، Yacc با استفاده از یک گرامر رسمی، آنها را
== Lex و ساختن ==
مزیت ساختن، برای حفظ و نگهداری برنامههایی است که شامل Lex هستند. سازنده هر فایلی را که دارای پسوند
بطور مثال اجازه دهید تا فایلی با نام ex.l و فایل قابل اجرای EXE را در خروجی داشته باشیم . روش معمول بصورت زیر است:
$>lex ex.l <return>
خط ۹۵:
$> make <return>
</br>
این کار در اینجا بسیار سریع انجام شد
== منابع ==
1. ^ "make", The Open Group Base Specifications Issue 6, IEEE Std 1003.1, 2004 Edition (The IEEE and The
Open Group), 2004, http://www.opengroup.org/onlinepubs/009695399/utilities/make.html
|