تحلیل واژگانی
توکن‌سازی (Tokenization)

توکن‌سازی، فرایند علامت‌گذاری و کلاس بندی بخش‌هایی از رشتهٔ کاراکترهای ورودی است. سپس توکن‌های حاصله به فرم‌های دیگر پردازش عبور می‌کنند. این فرایند می‌تواند به عنوان زیر وظیفهٔ ورودی parsing در نظر گرفته شود.
توکن‌سازی در رشتهٔ امنیت کامپیوتر معنای متفاوتی دارد.
به عنوان مثال، در یک رشتهٔ متنی:
The quick brown fox jumps over the lazy dog
این رشته به‌طور ضمنی بر روی فضاها بخش‌بندی نشده، همان کاری که یک گویندهٔ طبیعی زبان انجام می‌دهد. ورودی خام که ۴۳ کاراکتر است باید به‌طور ضمنی به وسیله جداکنندهٔ فاصله (فضای خالی یا " " یا عبارت منظم  /\s{1}/) به ۹ تا توکن تقسیم شود.
توکن‌ها می‌توانند در XML نمایش داده شوند،
<sentence>
  <word>The</word>
  <word>quick</word>
  <word>brown</word>
  <word>fox</word>
  <word>jumps</word>
  <word>over</word>
  <word>the</word>
  <word>lazy</word>
  <word>dog</word>
</sentence>
یا به صورت یک s-expression نمایش داده می‌شوند،
(sentence
   (word The)
   (word quick)
   (word brown)
   (word fox)
   (word jumps)
   (word over)
   (word the)
   (word lazy)
   (word dog))
وقتی یک کلاس توکن بیش از یک واژهٔ ممکن را نمایش می‌دهد، تحلیل گر لغوی غالباً اطلاعات کافی را ذخیره می‌کند تا بتواند وتژهٔ اصلی را از نو تولید کند، بنابراین می‌تواند در تحلیل معنایی مورد استفاده قرار گیرد. پارسر معمولاً این اطلاعات را از Lexer فراخوانی می‌کند و آن را در درخت نحو انتزاع ذخیره یم کند. این کار برای جلوگیری از، از دست رفتن اطلاعات در مورد اعدا و شناسه(identifier)ها الزامی است.
توکن‌ها براساس قوانین مشخصی از Lexer معرفی (شناسایی) می‌شوند. برخی از متدهایی که برای شناسایی توکن‌ها به کاربرده می‌شوند، شامل: عبارات منظم، توالی مشخصی از کاراکترها که flag نامیده می‌شوند، کاراکترهای جداکنندهٔ خاصی که جداکننده (delimiters) نامیده می‌شوند، و تعریف صریح به وسیلهٔ یک دیکشنری. کاراکترهای خاص مانند کاراکترهای علامت گذاری، به خاطر استفادهٔ طبیعی آن‌ها در نوشتن و زبان‌های برنامه‌سازی، معمولاً توسط lexer برای شناسایی توکن‌ها استفاده می‌شوند.
توکن‌ها معمولاً به وسیلهٔ محتوای کاراکتر یا محتویات درون یه جریان داده دسته‌بندی می‌شوند. این دسته‌ها به وسیلهٔ قوانین lexer تعریف می‌شوند. این دسته‌ها معمولاً شامل عناصر گرامر زبان استفاده شده در جریان داده می‌شوند. زبان‌های برنامه‌سازی غالباً توکن‌ها را به عنوان identifierها، عملگرها، گروه نمادها، یا به وسیلهٔ نوع دادهٔ آن‌ها، دسته‌بندی می‌کنند. زبان‌های نوشتاری معمولاً توکن‌ها را به عنوان اسم، فعل، صفت، یا علائم نشانه‌گذاری دسته‌بندی می‌کنند. دسته‌ها برای پس پردازش (post-processing) توکن‌ها چه توسط پارسر چه توسط توابع دیگر در برنامه، استفاده می‌شوند. تحلیلگر لغوی معمولاً کاری برای ترکیب توکن‌ها انجتم نمی‌دهد، این وظیفهٔ پارسر است. به عنوان مثال، یک تحلیل گر لغوی معمولی، پرانتزها را به عنوان توکن تشخیص می‌دهد، ولی کاری را برای اطمینان از اینکه هر پرانتز باز با یک پرانتز بسته تطابق داده شود انجام نمی‌دهد.
زمانی که یک lexer توکن‌ها را به parser می‌دهد، نمایشی که استفاده می‌شود، معمولاً لیستی از نمایش اعداد است. به عنوان مثال، "identifier" با عدد ۰ نمایش داده می‌شود، "عملگر انتساب" با عدد ۱ و "عملگر جمع" با عدد ۲ نمایش داده می‌شود و ….
توکن‌ها معمولاً با عبارات منظم تعریف می‌شوند، که توسط مولد تحلیلگر لغوی مانند lex فهمیده می‌شوند. تحلیگر لغوی (که به صوزت خودکار توسط ابزاری مانند lex یا به صورت دستی تولید می‌شوند) جریان کاراکترها را می‌خواند، واژه‌های این جراین را شناسایی می‌کند، و آن‌ها را به توکن‌هایی دسته‌بندی می‌کند. به این عمل توکن‌سازی می‌گویند. اگر lexer توکن نادرستی (invalid) بیابد، خطایی را گزارش می‌کند.
به دنبال عمل توکن‌سازی parsing می‌آید. از آنجا، دادهٔ تفسیر شده ممکن است، برای استفادهٔ عمومی، تفسیر، یا ترجمه (کامپایل) در ساختمان داده‌هایی بارگذاری شود.