Podczas analizy rozumiemy najczęściej analizę języków bezkontekstowych. Język bezkontekstowy ma większą moc niż zwykły, dlatego parser może (najczęściej) natychmiast wykonać zadanie analizatora leksykalnego.
Ale jest to a) dość nienaturalne b) często nieefektywne.
Dla a), jeśli myślę o tym, jak na przykład if
wygląd ekspresyjnych, myślę, że jeśli wyrażenie TO wyrażenie ELSE wyrażenie a nie „i” „f”, być może niektóre przestrzenie, a następnie dowolny znak wyrazem może zacząć itp Państwo uzyskać pomysł.
Dla b) istnieją potężne narzędzia, które wykonują doskonałą pracę rozpoznając byty leksykalne, takie jak identyfikatory, literały, nawiasy wszelkiego rodzaju itp. Wykonają swoją pracę praktycznie w krótkim czasie i zapewnią ci ładny interfejs: listę tokenów. Nie musisz się już martwić o pomijanie spacji w parserze, twój parser będzie znacznie bardziej abstrakcyjny, gdy będzie zajmował się tokenami, a nie postaciami.
W końcu, jeśli uważasz, że parser powinien być zajęty niskopoziomowymi rzeczami, to po co w ogóle przetwarzać znaki? Można to również napisać na poziomie bitów! Widzisz, taki parser działający na poziomie bitów byłby prawie niezrozumiały. To samo dotyczy postaci i żetonów.
Tylko moje 2 centy.