تحلیل واژگانی

از ویکی‌پدیا، دانشنامهٔ آزاد
پرش به: ناوبری، جستجو

تحلیل‌گر واژگانی(لغوی)، یا اسکنر فاز اول کامپایل کردن یک برنامه می‌باشد.

گرامر مورد استفاده در این بخش گرامر منظم (Regular) می‌باشد.

در این مرحله برنامهٔ ورودی نویسه به نویسه خوانده شده و توکن بندی می‌شود. این توکن‌ها (Token) در جدول نمادها (Symbol Table) به شکل خاصی ذخیره می‌شوند تا در مراحل بعدی مورد استفاده قرار گیردند.

این مرحله از کامپایل به نسبت تحلیل‌گر نحوی کندتر می‌باشد، زیرا همواره با جریانی از کاراکترها سرورکار دارد.

در علم رایانه، تحلیل واژگانی پروسه‌ای است که مجموعه‌ای از کاراکترها را به مجموعه‌ای از tokenها تبدیل می‌کند. برنامه‌ای که تحلیل واژه‌ای را انجام می‌دهد lexical analyzer یا lexers (تحلیلگر واژه)خوانده می‌شود. تحلیل گر واژه شامل scanner و tokenizer است.

گرامر واژه‌ای[ویرایش]

هر زبان برنامه نویسی شامل مجموعه‌ای از قوانین خواهد بود که به صورت مجموعه‌ای از کاراکترهای ترتیبی که می‌توانند یک token یا lexeme را مشخص کنند، تشکیل می‌شود. کاراکترهای جاخالی معمولاً توسط تحلیلگر واژه‌ای نادیده گرفته می‌شود.

توکن[ویرایش]

یک توکن دسته‌ای از متن هستند که به اسم lexemes شناخته می‌شوند.تحلیلگر واژه‌ای lexemsها را پردازش می‌کند تا آنها را با توجه به کاربردشان دسته بندی کنند و به آنها معنا دهند. این انتساب معنا tokenization نامیده می‌شود. به این خط دستور در زبان C توجه کنید: ;sum=3+2 که به این صورت توکن بندی شده است:

lexeme token type
sum IDENT
= ASSIGN_OP
3 NUMBER
+ ADD_OP
2 NUMBER
; SEMICOLON

توکن‌ها معمولاً توسط عبارات با قاعده تعریف می‌شوند، که توسط تحلیلگر واژه‌ای به lex شناخته می‌شوند. تحلیلگر واژه‌ای جریانی از lexemها را می خواند و آنها را به توکنهایی دسته بندی می‌کند. این کار tokenization خوانده می‌شود. در ادامه tokenizing، تجزیه قرار دارد. اطلاعات تفسیر شده ممکن است در ساختمانهای داده به منظور استفاده کلی، تفسیر یا کامپایل، قرار بگیرند.

اسکنر[ویرایش]

در مرحله اول، اسکنر، معمولاً مبتنی بر یک ماشین حالت متناهی است که با استفاده از اطلاعات کاراکترهایی با توالی ممکن کدگذاری شده است که این کاراکترها می توانند هر یک از توکن ها مورد استفاده باشد. به عنوان مثال، یک توکن عدد صحیح می تواند دارای هر توالی از عداد باشد.