Compilador: diferenças entre revisões

Conteúdo apagado Conteúdo adicionado
Dpc01 (discussão | contribs)
m →‎Análise Sintática: botton->bottom
Dpc01 (discussão | contribs)
Linha 43:
{{main|Análise semântica}}
 
As análises léxica e sintática, não estão preocupadas com o significado ou semântica dos programas que elas processam. O papel do analisador semântico é prover métodos pelos quais as estruturas construídas pelo analisador sintático possam ser avaliadas ou executadas<ref name="watson">{{Referência a livro|autor=Watson, Des|título=High-Level Languages and Their Compilers|subtítulo=|idioma=|edição=|local=Wokingham, England|editora=Addison-Wesley|ano=1989|páginas=337|volumes=|volume=|id=ISBN 0-201-18489-3}}</ref>. As gramáticas livres de contexto não são suficientemente poderosas para descrever uma série de construções das linguagens de programação, como por exemplo regras de escopo, regras de visibilidade e consistência de tipos<ref name="wilhelm">{{Referência a livro|autor=Wilhelm, Reinhard; Maurer, Dieter|título=Compiler Design|subtítulo=|idioma=|edição=|local=Harlow, England|editora=Addison-Wesley|ano=1995|páginas=606|volumes=|volume=|id=ISBN 0-201-42290-5}}</ref>. É papel do analisador semântico assegurar que todas as regras sensíveis ao contexto da linguagem estejam analisadas e verificadas quanto à sua validade. Um exemplo de tarefa própria do analisador semântico é a checagem de tipos de variáveis em expressões<ref name="tremblay">{{Referência a livro|autor=Tremblay, Jean-Paul; Sorenson, Paul G.|título=The Theory and Practice of Compiler Writing|subtítulo=|idioma=|edição=|local=New York|editora=McGraw-Hill|ano=1989|páginas=796|volumes=|volume=|id=ISBN 0-07-065161-2}}</ref>. Um dos mecanismos comumente utilizados por implementadores de compiladores é a [[Gramática de Atributos]], que consiste em uma [[Gramática_formal|gramática]] livre de contexto acrescentada de um conjunto finito de atributos e um conjunto finito de predicados sobre estes atributos<ref name="pittman">{{Referência a livro|autor=Pittman, Thomas; Peters, James|título=The Art of Compiler Design|subtítulo=Theory and Practice|idioma=|edição=|local=Englewood Cliffs, New Jersey, EUA|editora=Prentice Hall|ano=1992|páginas=419|volumes=|volume=|id=ISBN 0-13-048190-4}}</ref>.
 
===Geração de Código Intermediário===