سلام.
فرض کنید میشد اینکارو کرد، اونوقت چطوری باید
- اعداد Hex رو نشون میدادیم؟ (مثل 0x100 که میشه 256 دسیمال)
- اعداد Oct رو نشون میدادیم؟ (مثل 0144U که میشه 100 دسیمال)
- اعداد Dec رو مشخص میکردیم؟ (مثل 300U که میشه 300 دسیمال)
- اعداد Float رو نشون میدادیم؟ (مثل 12.85f)
- و ...
این خط کد رو بطور نمونه در نظر بگیرید:
const float pi = 3.14f;
اینجا، ما یه سری Token داریم، یه سری Pattern داریم و یک سری Lexeme. در مثال فوق، Token ما id هستش (از دید Lexical Analyzer در Compiler ها)، pi یک Lexeme محسوب میشه و pattern مربوطه نیز میگه که این identifier باید "با حرف شروع بشه و پشتش حرف یا عدد بیاد". این مساله باعث ساده تر شدن کار پردازش Token ها بطرز چشمگیری میشه، علاوه بر اینکه در بسیاری از موراد نیز باعث ابهام زدایی میشه. اگر Lexeme میتونست با عدد شروع بشه، اونوقت نوشتن یک (یا چند) Regular Expression برای پردازش Token ها با دردسرهای عجیب و غریبی روبرو میشد، AST پیچیده میشد و Symbol Table ها باید اطلاعات فربه تری رو در خودشون نگه میداشتن. برای اینکه متوجه جزییات مساله بشه، لطفا به کتابی در مورد Compiler ها و طرز کار اونها رجوع کنید.
موفق باشید.