شکس لکس مرد دشوار خوی سرکش نافرمان بر .
لکس
فرهنگ فارسی
لغت نامه دهخدا
لکس. [ ل َ ک ِ ] ( ع ص ) شَکِس ٌ لَکِس ٌ؛ مرد دشوارخوی سرکش نافرمان بر. ( منتهی الارب ).
دانشنامه عمومی
لکس (به انگلیسی: Lex) در علوم کامپیوتر برنامه ای است که تحلیلگرهای لغوی را (اسکنرها یا لکسرها) تولید می کند. Lex معمولاً با یک)تولید کنندهٔ پارسر) استفاده می شود.Lex در اصل، توسط Eric Schmidt و Mike Lesk طراحی و نوشته شد و این تحلیلگر لغوی، به طور استاندارد تحت سیستم های یونیکس است و یک ابزار برای نمایش رفتار (که برگرفته از استاندارد پازیکس است) دارد.Lex یک رشته را از ورودی می خواند و تحلیلگر لغوی را مشخص می کند و خروجی، سورس کد یک Lexer به زبان برنامه نویسی سی است.بهرحال، نسخه های اختصاصی سنتی Lex، همچون اوپن سولاریس و پلان ۹ برپایهٔ کد AT&T به صورت متن باز و جزئی از این سیستم ها موجود می باشند. همچنین نسخهٔ دیگری از Lex نیز به صورت متن باز و با نام تحلیل گر واژگانی فلکس رایج است.
قسمت تعریف (definition section)، جایی برای تعریف ماکروها و وارد کردن فایل های سرآمدی (header) است که به زبان C نوشته شده اند. همچنین امکان اینکه هر کدی از زبان C را در اینجا بنویسید، وجود دارد، و این کد به صورت کلمه به کلمه، در کد اصلی تولید شده خواهد آمد.
قسمت قواعد (rules section)، مهم ترین بخش است که الگوها (عبارات منظم ساده) را با استفاده از دستورهای زبان C با هم مرتبط می سازد. زمانی که لکسر، متون را از ورودی می گیرد، الگوی معینی را برایشان مشخص می کند و کد (به زبان C) مرتبط با آن الگو را نیز اجرا می کند. و این چرخهٔ اصلی فعالیت Lex است.
قسمت کد زبان C (C code section)، شامل دستورهای و توابع کد زبان C است که کلمه به کلمه به فایل سورس تولید شده، اضافه می شود. احتمالاً این دستورهای حاوی کدهایی هستند که در قسمت قواعد، توسط قواعد مختلف، فراخوانی می گردند. بهتر است که در برنامه های بزرگ، این بخش به طور جداگانه در یک فایل دیگر قرار بگیرد و در زمان کامپایل، به فایل اصلی اضافه شود.
ساختار یک فایل Lex عمداً شبیه به یک فایل Yacc است. فایل ها به سه بخش تقسیم می شوند که هر بخش با %% از بخش دیگر جدا می شود:
بخش تعریف%%بخش قواعد%%بخش کد زبان Cقسمت تعریف (definition section)، جایی برای تعریف ماکروها و وارد کردن فایل های سرآمدی (header) است که به زبان C نوشته شده اند. همچنین امکان اینکه هر کدی از زبان C را در اینجا بنویسید، وجود دارد، و این کد به صورت کلمه به کلمه، در کد اصلی تولید شده خواهد آمد.قسمت قواعد (rules section)، مهم ترین بخش است که الگوها (عبارات منظم ساده) را با استفاده از دستورهای زبان C با هم مرتبط می سازد. زمانی که لکسر، متون را از ورودی می گیرد، الگوی معینی را برایشان مشخص می کند و کد (به زبان C) مرتبط با آن الگو را نیز اجرا می کند. و این چرخهٔ اصلی فعالیت Lex است.قسمت کد زبان C (C code section)، شامل دستورهای و توابع کد زبان C است که کلمه به کلمه به فایل سورس تولید شده، اضافه می شود. احتمالاً این دستورهای حاوی کدهایی هستند که در قسمت قواعد، توسط قواعد مختلف، فراخوانی می گردند. بهتر است که در برنامه های بزرگ، این بخش به طور جداگانه در یک فایل دیگر قرار بگیرد و در زمان کامپایل، به فایل اصلی اضافه شود.مثالی از فایل Flexویرایشدر ادامه یک فایل Lex از ویرایش Flex می آید. که یک رشته ای از اعداد صحیح را از ورودی، تشخیص داده و در خروجی نمایشش می دهد:
/*** Definition section ***/%{/* C code to be copied verbatim */#include <stdio.h>%}/* This tells flex to read only one input file */%option noyywrap%% /*** Rules section ***/ /* + matches a string of one or more digits */+ { /* yytext is a string containing the matched text. */ printf("Saw an integer: %s\n", yytext); }.|\n { /* Ignore all other characters. */ }%%/*** C Code section ***/int main(void){ /* Call the lexer, then quit. */ yylex(); return 0;}اگر رشته ورودی به Flex ارسال شود، آن را به فایل C (lex.yy.c) تبدیل می کند. و به فایل قابل اجرا، کامپایل می شود که رشته ای از اعداد صحیح را تشخیص داده و در خروجی نمایش می دهد. به عنوان مثال اگر رشتهٔ زیر را به عنوان ورودی بدهیم:
قسمت تعریف (definition section)، جایی برای تعریف ماکروها و وارد کردن فایل های سرآمدی (header) است که به زبان C نوشته شده اند. همچنین امکان اینکه هر کدی از زبان C را در اینجا بنویسید، وجود دارد، و این کد به صورت کلمه به کلمه، در کد اصلی تولید شده خواهد آمد.
قسمت قواعد (rules section)، مهم ترین بخش است که الگوها (عبارات منظم ساده) را با استفاده از دستورهای زبان C با هم مرتبط می سازد. زمانی که لکسر، متون را از ورودی می گیرد، الگوی معینی را برایشان مشخص می کند و کد (به زبان C) مرتبط با آن الگو را نیز اجرا می کند. و این چرخهٔ اصلی فعالیت Lex است.
قسمت کد زبان C (C code section)، شامل دستورهای و توابع کد زبان C است که کلمه به کلمه به فایل سورس تولید شده، اضافه می شود. احتمالاً این دستورهای حاوی کدهایی هستند که در قسمت قواعد، توسط قواعد مختلف، فراخوانی می گردند. بهتر است که در برنامه های بزرگ، این بخش به طور جداگانه در یک فایل دیگر قرار بگیرد و در زمان کامپایل، به فایل اصلی اضافه شود.
ساختار یک فایل Lex عمداً شبیه به یک فایل Yacc است. فایل ها به سه بخش تقسیم می شوند که هر بخش با %% از بخش دیگر جدا می شود:
بخش تعریف%%بخش قواعد%%بخش کد زبان Cقسمت تعریف (definition section)، جایی برای تعریف ماکروها و وارد کردن فایل های سرآمدی (header) است که به زبان C نوشته شده اند. همچنین امکان اینکه هر کدی از زبان C را در اینجا بنویسید، وجود دارد، و این کد به صورت کلمه به کلمه، در کد اصلی تولید شده خواهد آمد.قسمت قواعد (rules section)، مهم ترین بخش است که الگوها (عبارات منظم ساده) را با استفاده از دستورهای زبان C با هم مرتبط می سازد. زمانی که لکسر، متون را از ورودی می گیرد، الگوی معینی را برایشان مشخص می کند و کد (به زبان C) مرتبط با آن الگو را نیز اجرا می کند. و این چرخهٔ اصلی فعالیت Lex است.قسمت کد زبان C (C code section)، شامل دستورهای و توابع کد زبان C است که کلمه به کلمه به فایل سورس تولید شده، اضافه می شود. احتمالاً این دستورهای حاوی کدهایی هستند که در قسمت قواعد، توسط قواعد مختلف، فراخوانی می گردند. بهتر است که در برنامه های بزرگ، این بخش به طور جداگانه در یک فایل دیگر قرار بگیرد و در زمان کامپایل، به فایل اصلی اضافه شود.مثالی از فایل Flexویرایشدر ادامه یک فایل Lex از ویرایش Flex می آید. که یک رشته ای از اعداد صحیح را از ورودی، تشخیص داده و در خروجی نمایشش می دهد:
/*** Definition section ***/%{/* C code to be copied verbatim */#include <stdio.h>%}/* This tells flex to read only one input file */%option noyywrap%% /*** Rules section ***/ /* + matches a string of one or more digits */+ { /* yytext is a string containing the matched text. */ printf("Saw an integer: %s\n", yytext); }.|\n { /* Ignore all other characters. */ }%%/*** C Code section ***/int main(void){ /* Call the lexer, then quit. */ yylex(); return 0;}اگر رشته ورودی به Flex ارسال شود، آن را به فایل C (lex.yy.c) تبدیل می کند. و به فایل قابل اجرا، کامپایل می شود که رشته ای از اعداد صحیح را تشخیص داده و در خروجی نمایش می دهد. به عنوان مثال اگر رشتهٔ زیر را به عنوان ورودی بدهیم:
wiki: لکس
گویش مازنی
/leks/ نوزاد نارس – نوزادی که پیش از وقت مقرر به دنیا آمده - پافشاری ۳لاغر و مردنی
۱نوزاد نارس – نوزادی که پیش از وقت مقرر به دنیا آمده ۲پافشاری ...
کلمات دیگر: