Кіріспе

Токендеу мен синтаксистік талдауды бір қадамда орындайтын алгоритм. Компьютер ғылымында сканерсіз синтаксистік талдау (кейде тексерсіз синтаксистік талдау деп те аталады) символдар ағынын токендерге (сөздерге) бөлу және осы токендерді сөз тіркестеріне құрастыру процестерін бірдей қадамда, жеке-жеке лексикалық талдаушы мен синтаксистік талдаушыдан тұратын конвейерге бөлудің орнына, бір уақытта жүзеге асырады. Тілдің грамматикасы, егер ол тілдің лексикалық (сөздік) және синтаксистік (сөз тіркестері) құрылымын сипаттау үшін бір арнаулы жүйені қолданса, сканерсіз болып саналады. Өңдеуді лексикалық талдаушыға, содан кейін синтаксистік талдаушыға бөлу көбірек модулділік береді; сканерсіз синтаксистік талдау көбінесе лексикалық және синтаксистік талдау арасында нақты шекара қажет болмаған немесе қажетсіз жағдайларда қолданылады. Мұндай жағдайларға TeX, көптеген вики грамматикалары, makefiles, қарапайым қолданбаға арналған сценарий тілдері және Raku жатады.

Кемшіліктер

Лексикалық сканерлеу және синтаксистік талдау біріктірілгендіктен, нәтижедегі талдаушы күрделірек болады, демек оны түсіну және қателерді жою қиынға соғады. Егер талдаушыны жасау үшін грамматика қолданылса, осыған байланысты грамматикаға да қатысты болады. Нәтижедегі талдаушы, уақыт және жад тұрғысынан, лексикалық талдаушы мен синтаксистік талдаушыдан тұратын тізбекке қарағанда айтарлықтай аз тиімді болады.

Қолданылу

SGLR – модульдік Синтаксис Анықтама Формализмінің (SDF) талдаушысы болып табылады және ASF+SDF мета ортасының және Stratego/XT бағдарламалық түрлендіру жүйесінің құрамына кіреді. JSGLR – SGLR-дің таза Java тіліндегі нұсқасы, сондай-ақ SDF-ке негізделген. TXL таңбалық деңгейде талдауды қолдайды. dparser сканерсіз GLR талдаушылары үшін ANSI C кодын жасайды. Spirit сканерсіз және сканерлік талдауды қолдайды. SBP – Бульдік грамматикаларға арналған сканерсіз талдаушы (контекстсіз грамматикалардың кеңейтілген жиыны), Java тілінде жазылған. Laja – екі кезеңді сканерсіз талдау генераторы, грамматикалық ережелерді нысандарға бейімдеуді қолдайды, Java тілінде жазылған. Raku грамматикасы – Raku жалпы мақсаттағы бағдарламалау тілінің мүмкіндігі. PyParsing – таза Python тілінде жазылған сканерсіз талдаушы. META II токендік талдау функцияларына ие. TREE META, META II сияқты, сканерсіз және құрамында лексикалық функциялары бар. CWIC – компиляторларды жазу және іске асыруға арналған компилятор. Оның тілінің бөлігі ретінде белгілер ережелері бар. CWIC-тегі ережелер сәттілік немесе сәтсіздікті қайтаратын Бульдік функцияларға компиляцияланды.