b'\n_START_ARTICLE_\nAnalisador sint\xc3\xa1tico descendente recursivo\n_START_PARAGRAPH_\nUm analisador sint\xc3\xa1tico descendente recursivo \xc3\xa9 um analisador sint\xc3\xa1tico descendente constru\xc3\xaddo a partir de subrotinas mutualmente recursivas (ou qualquer equival\xc3\xaancia n\xc3\xa3o recursiva como uma pilha) em que cada subrotina geralmente implementa uma das regras de produ\xc3\xa7\xc3\xa3o da gram\xc3\xa1tica. Cada subrotina fica associada a um elemento n\xc3\xa3o-terminal da gram\xc3\xa1tica. Consequentemente, a estrutura do programa resultante se assemelha bastante \xc3\xa0 gram\xc3\xa1tica que ele reconhece._NEWLINE_Um analisador sint\xc3\xa1tico preditivo (ou analisador sint\xc3\xa1tico preditor) \xc3\xa9 um analisador sint\xc3\xa1tico descendente recursivo que n\xc3\xa3o requer backtracking. Ele s\xc3\xb3 \xc3\xa9 poss\xc3\xadvel para a classe de gram\xc3\xa1ticas LL(k), que s\xc3\xa3o gram\xc3\xa1ticas livres de contexto para as quais existem algum inteiro positivo k que permite um analisador sint\xc3\xa1tico descendente recursivo para decidir qual produ\xc3\xa7\xc3\xa3o usar analisando somente os k tokens seguintes na entrada de dados. (Portanto, as gram\xc3\xa1ticas LL(k) excluem todas as gram\xc3\xa1ticas amb\xc3\xadguas, assim como todas as gram\xc3\xa1ticas que cont\xc3\xaam recursividade \xc3\xa0 esquerda. O algoritmo entraria em la\xc3\xa7o infinito. Qualquer gram\xc3\xa1tica livre de contexto pode ser transformada numa gram\xc3\xa1tica equivalente que n\xc3\xa3o possui recursividade \xc3\xa0 esquerda, mas a remo\xc3\xa7\xc3\xa3o da recursividade a esquerda nem sempre resulta numa gram\xc3\xa1tica LL(k).) Um analisador sint\xc3\xa1tico preditivo possui complexidade linear._NEWLINE_Um analisador sint\xc3\xa1tico descendente com c\xc3\xb3pia determina qual produ\xc3\xa7\xc3\xa3o usar por tentativa e erro (por exemplo, diferentes regras com mesmo lado esquerdo, A\xc2\xa0::= aB | aC | cD). O algoritmo s\xc3\xb3 retorna ao consumir toda a entrada (sucesso) ou ao esgotar todas as possibilidades de produ\xc3\xa7\xc3\xa3o (falha). Ele n\xc3\xa3o \xc3\xa9 limitado \xc3\xa0s gram\xc3\xa1ticas LL(k), mas o t\xc3\xa9rmino n\xc3\xa3o \xc3\xa9 garantido a menos que a gram\xc3\xa1tica seja LL(k). Mesmo que termine, essa t\xc3\xa9cnica pode levar a complexidade exponencial, e geralmente consome muita mem\xc3\xb3ria, o que a torna praticamente inutilizada atualmente._NEWLINE_Apesar dos analisadores sint\xc3\xa1ticos preditivos serem bastante usados, os programadores geralmente preferem criar analisador LR ou LALR atrav\xc3\xa9s de geradores de analisador sint\xc3\xa1ticos sem a transforma\xc3\xa7\xc3\xa3o da gram\xc3\xa1tica numa forma LL(k)._NEWLINE_Geradores de analisadores sint\xc3\xa1ticos descendentes recursivos incluem JavaCC (para Java), Coco/R (C#, Java), ANTLR (C, C++, Java, Python, C#, Objective-C), pyparsing (Python) e Spirit (C++, parte da biblioteca Boost).'