Abrir menu principal

Alterações

wikificação
{{Ver desambig|este=o contexto em computação / linguística|o conceito gramatical|Sintaxe}}{{Sem fontes|data=5 de novembro de 2004‎|Subcategoria=tec}}[[Imagem:Parsing-example.png|thumb|direita|250px|Exemplo da '''análise sintática''' de uma [[expressão matemática]]. O resultado é uma [[árvore (estrutura de dados)|árvore]] da expressão]]{{Predefinição:Execução de Programa}}Em [[ciência da computação]] e [[linguística]], a '''análise sintática''' (do [[Língua inglesa|inglês]]: '''''parsing''''') é um processo de um [[compilador]] (de uma [[linguagem de programação]]), é a segunda fase da compilação onde se analisa uma sequência que foi dada entrada (via um [[arquivo de computador]] ou via [[teclado (computador)|teclado]], por exemplo) para verificar sua estrutura gramatical segundo uma determinada [[gramática formal]]. Este processo trabalha em conjunto com o a [[análise léxica|análise lexical]] (primeira etapa, onde se verifica-se de acordo com determinado [[alfabeto]]) e [[análise semântica]] (terceira etapa, onde verificam-se os erros semânticos).
Em [[ciência da computação]] e [[linguística]], '''análise sintática''' (também conhecida pelo termo em [[Língua inglesa|inglês]] '''''parsing''''') é o processo de analisar uma sequência de entrada (lida de um [[arquivo de computador]] ou do [[teclado (computador)|teclado]], por exemplo) para determinar sua estrutura gramatical segundo uma determinada [[gramática formal]]. Essa análise faz parte de um [[compilador]], junto com a [[análise léxica|análise lexical]] e [[análise semântica]].
 
A análise sintática transforma um texto na entrada em uma [[estrutura de dados]], em geral uma [[Árvore (estrutura de dados)|árvore]], o que é conveniente para processamento posterior e captura a hierarquia implícita desta entrada. Através da análise lexical é obtido um grupo de [[token]]s, para que o analisador sintático use um conjunto de regras para construir uma árvore sintática da estrutura.
 
== Analisador sintático ==
O "analisador sesintático" trata deé um software[[programa de computador]] que realiza a função de carregar os dados de entrada e constróiconstruir uma estrutura de dados com eles. Essa estrutura de dados pode se tratar de uma árvore de análise, árvore abstrata de sintaxe ou outras estruturas que dão ideia de hierarquia, para que resulte em uma representação estrutural da entrada que foi feita a análise. A análise pode proceder vários outros passos que são executados antes da própria análise, ou estes passos podem ser executados em um único passo, onde eles estarão combinados. Muitas vezes o processo realizado pelo analisador sintático é procedido pelo processo de análise lexical, já que esta análise gera como resultado uma tabela dos tokens dos dados de entrada analisados.  Os analisadores podem ser programados manualmente, ou podem ser gerados automaticamente por um gerador de analisador.   
 
A entrada de dados que é analisada pelo analisador é normalmente um código de uma linguagem de programação, mas podem ser também textos em linguagem natural, e nesse caso não é construída uma árvore de análise, mas só são extraídas algumas partes do texto. As funções dos analisadores variam desde analisar comandos simples de um código a programas muito complexos. Uma forma importante de realizar a análise é usando expressões regulares, onde uma expressão regular define uma linguagem regular e um mecanismo de expressão regular gerando automaticamente um analisador para a linguagem. Em alguns casos as expressões regulares são usadas antes da própria análise sintática, como etapa da análise lexical cuja saída será utilizada pelo analisador sintático.
 
== Visão geral do processo ==
[[Ficheiro:Nt-compilador.png|ligação=https://pt.wikipedia.org/wiki/Ficheiro:Nt-compilador.png|alt=|miniaturadaimagem|409x409px|O processo da compilação.]]
O caso comum de análise de uma linguagem de programação possui dois níveis de gramática: lexicais e sintáticas.
 
 
== Tipos de analisadores sintáticos ==
Existem dois tipos gerais de estratégias de analisador sintático (parsing) são elas: '''top-down''' e '''bottom-up.'''
 
=== Top-Down ===
== Lookahead ==
Lookahead nada mais é do que analisar um token e ao mesmo tempo olhar um token a frente para poder decidir qual regra deve ser utilizada. Por exemplo, ao analisar o delimitador ‘/’, é necessário olhar a frente para poder saber se ele será um comentário de linha ou de bloco. Com ele, é possível ajudar o analisador a tomar a decisão correta em caso de conflitos e eliminar os estados duplicados aliviando a carga de uma pilha extra.
 
{{Referências}}
 
== Ver também ==
*[[JIT|Compilador Just in Time (JIT)]]
* [[Interpretador]]es
* [[CompiladorInterpretador]]es
*[[Linguagens formais e compiladores|Linguagens formais]]
** [[Análise léxica|análise lexical]]
*[[Linker]]
** [[Análise semântica]]
{{Esboço-*[[Teoria da computação}}]]
 
== Ligações externas ==
{{Esboço-computação}}
 
* {{Link|en|http://www.thefreecountry.com/compilers/index.shtml|Compiladores livres|descr=por Free Country}}
{{Esboço-computação}}{{Portal3|ti}}
[[Categoria:Análise sintática (computação)| ]]
[[Categoria:Análise]]
5 730

edições