تحلیل واژگانی: تفاوت میان نسخهها
محتوای حذفشده محتوای افزودهشده
FreshmanBot (بحث | مشارکتها) جز ←مولد تحلیل گر لغوی (Lexer Generator): اصلاح فاصله مجازی با استفاده از AWB |
FreshmanBot (بحث | مشارکتها) جز اصلاح فاصله مجازی با استفاده از AWB |
||
خط ۱۰۹:
=== اسکنر ===
در مرحله اول، اسکنر، معمولاً مبتنی بر یک [[ماشینهای حالات متناهی|ماشین حالت متناهی]] است که با استفاده از اطلاعات کاراکترهایی با توالی ممکن کدگذاری شده است که این کاراکترها میتوانند هر یک از توکنها مورد استفاده باشد. به عنوان مثال، یک توکن عدد صحیح میتواند دارای هر توالی از ارقام باشد.در بسیاری از نمونه ها اولین کاراکتری که فضای خالی نباشد، می تواند برای استنباط نوع توکن بعدی مورداستفاده قرار گیرد و زیردنباله ی کارکترهای ورودی بعد از آن در یک زمان پردازش می شوند تاوقتی که به کاراکتری برسد که که در مجموعه ی کاراکترهای قابل قبول برای توکن ها نباشد (که اصطلاحا این عمل ، قانون حداکثر جویدن یا طولانی ترین تطبیق نامیده می شود). در بسیاری از
=== ارزیابی کننده ===
خط ۱۴۰:
* تمام رشته های به هم پیوسته کاراکترهای الفبا، بخشی از توکن هستند؛ به همین ترتیب اعداد.
* توکن ها با کاراکترهای فضای خالی جدا می شوند، مانند space یا line break ، یا کاراکترهای نشانه گذاری.
در زبان هایی که از space های بین کلمه ای استفاده می کنند(مانند بسیاری از
توکن سازی خصوصا برای زبان های نوشته شده در [[scriptio continua]] دشوار است ، که محدودیت های کلمه را نمایش نمی دهند، مانند یونانی باستان، چینی، یا تایلندی. زبان های ترکیبی مانند کره ای نیز توکن سازی را دشوار می کنند.
خط ۱۸۴:
=== درج نقطه ویرگول (Semicolon insertion) ===
بسیاری از
درج نقطه ویرگول یکی از خصوصیات BCPL و یکی از نسل های دور در Go می باشد. هر چند در B یا C وجود ندارد. درج نقطه ویرگول در JavaScript وجود دارد،اگر قوانین پیچیده و مورد انتقاد قرار بگیرند ، برای جلوگیری از مشکلات ، استفاده از نقطه ویرگول توصیه می شود، در حالی که دیگران نقطه ویرگول اولیه، نقطه ویرگول دفاعی، را عمدتا در عبارات مبهم به کار می برند.
|