لکس: تفاوت میان نسخه‌ها

محتوای حذف‌شده محتوای افزوده‌شده
Fatemibot (بحث | مشارکت‌ها)
خط ۶:
 
== ساختار یک فایل Lex ==
ساختار یک فایل Lex عمداعمداً شبیه به یک فایل Yacc است. فایلها به سه بخش تقسیم می‌شوند که هر بخش با %% از بخش دیگر جدا می‌شود:
 
''بخش تعریف''
خط ۱۳:
%%
''بخش کد زبان C''
 
* ''قسمت تعریف (definition section)''، جایی برای تعریف ماکروها و وارد کردن فایلهای سرآمدی (header) است که به زبان C نوشته شده‌اند. همچنین امکان اینکه هر کدی از زبان C را در اینجا بنویسید، وجود دارد، و این کد بصورت کلمه به کلمه، در کد اصلی تولید شده خواهد آمد.
* ''قسمت قواعد (rules section)''، مهم‌ترین بخش است که الگو ها (عبارات منظم ساده) را با استفاده از دستورات زبان C با هم مرتبط می‌سازد. زمانی که لکسر، متون را از ورودی می‌گیرد، الگوی معینی را برایشان مشخص می‌کند و کد (به زبان C) مرتبط با آن الگو را نیز اجرا می‌کند. و این چرخهٔ اصلی فعالیت Lex می‌باشد.
سطر ۶۹ ⟵ ۶۸:
 
== استفاده از Lex به همراه Yacc ==
عموماً Lex و Yacc(''تولید کنندهٔ Parser'') درکنار یکدیگر مورد استفاده قرار می‌گیرند. چون Lex به ماشینهای قطعی (DFA) محدود می‌شود بنابراین آن رشته‌های ورودی، که Lex با استفاده از عبارات منظم قادر به تجزیهٔ آنها نیست، Yacc با استفاده از یک گرامر رسمی، آنها را تجزیه می‌کند، با این حال، Yacc قادر به دریافت رشته از ورودی نمی‌باشد و به مجموعه‌ای از توکنها احتیاج دارد. غالباغالباً Lex برای تامین توکنهای مورد نیاز Yacc مورد استفاده قرار می‌گیرد.
 
== Lex و ساختن ==
سطر ۹۸ ⟵ ۹۷:
{{پایان چپ‌چین}}
 
این کار در اینجا بسیار سریع انجام شد اما اگر شما به ۱۰ فایل برای کامپایل، نیاز داشته باشید، آنگاه این روش واقعاواقعاً مفید خواهد بود.
 
== منابع ==
{{پانویس}}
۱. ^ "make", The Open Group Base Specifications Issue ۶,۶، IEEE Std ۱۰۰۳٫۱,۱۰۰۳٫۱، ۲۰۰۴ Edition (The IEEE and The
Open Group), ۲۰۰۴,۲۰۰۴، http://www.opengroup.org/onlinepubs/009695399/utilities/make.html
 
[[رده:ابزارهای برنامه‌نویسی یونیکس]]
[[رده:ابزارهای مرتبط با کامپایل کردن]]
برگرفته از «https://fa.wikipedia.org/wiki/لکس»