24 мая 2011 г.

Lex (ինֆորմատիկա)

Lex — կոմպյուտերային ծրագիր է, որն օգտագործվում է լեքսիկական անալիզատորների կառուցման համար: Հիմնականում օգտագործվում է շարահյուսական անալիզատորներ գեներացնող YACC ծրագրի հետ: Lex-ի առաջին տարբերակը ստեղծել են Մայք Լեսկը (Mike Lesk) և Էրիկ Շմիդտը (Eric Schmidt): Այն UNIX համակարգերում լեքսիկական անալիզատորներ գեներացնող ստանդարտ ծրագիր է, ինչպես նաև ավելացված է POSIX ստանդարտին:
Lex-ը կարդում է կառուցվելիք լեքսիկական անալիզատորը նկարագրող մուտքային հոսքը և գեներացնում է լեքսիկական անալիզատորի կոդը` գրված C լեզվով:
Լեքսիկական անալիզատորը նկարագրող ֆայլը, որ ծառայում է որպես Lex ծրագրի մուտքային հոսք, բաղկացած է երեք մասերից, որոնք իրարից անջատված են %% նշաններով:
 
Սահմանումների բլոկ
%%
Կանոնների բլոկ
%%
C լեզվով գրված կոդի բլոկ
 
  • Սահմանումների բլոկ-ը նախատեսված է մակրոսների սահմանման և C լեզվի վերնագրային (header) ֆայլերի կցման համար: Այս բլոկում կարելի է գրել նաև C կոդի կտորներ, որոնք նույնությամբ կպատճենվեն ելքային ֆայլում:
  • Կանոնների բլոկ-ը Lex-ծրագրի հիմնական և կարևոր մասն է, որը շաբլոններին համապատասխանեցնում է C լեզվով գրված հրամաններ (ծրագրերի կտորներ): Շաբլոններն իրենցից ներկայացնում են կանոնավոր արտահայտություններ: Երբ լեքսիական անալիզատորը իր մուտքում տեսնում է շաբլոններից որևէ մեկին համապատասխանող տեքստ, այն գործարկում է տվյալ շաբլոնին համապատասխանեցրած C կոդը: Սա Lex-ի աշխատանքի հիմնական սկզբունքն է:
  • C լեզվով գրված կոդի բլոկ-ը պարունակում է C լեզվով գրված ծառայողական ֆունկցիաներ, որոնք նույնությամբ պատճենվում են ելքային ֆայլում:

Комментариев нет:

Отправить комментарий