o analisador léxico (scanning) identifica e classifica os tokens do programa e permite que o analisador sintatico verifica se o programa pertence à gramática, e se for ele monta sua estrutura. Uma cadeia de tokens produzida pelo analisador léxico é passada para o analisador sintático. utilizando o padrão visitor, o visitAssignCommand chama o visit de seus nós raizes (variable e expression ) que por sua vez, retornam os tipos. O visitAssignCommand entáo verifica a compatibilidade desses tipos. (2) 1) tipicamente, em um compilador possui as seguintes fases: analise sintatica, analise contextual e geração de codigo. Dependendo de como for estruturado o compilador (multipasso, um passo) as etapas podem se comunicar de forma diferente. Em um compilador multipasso, a analise sintatica tem como saída a AST que é a entrada da análise contextual. Por sua vez a análise contextual tem como saida a AST decorada que é a entrada para a etapa de geração de código. (...) 2) a) [a-zA-Z\_][a-zA-Z\_]* b) [0-9]+\.?[0-9]?[eE]?[\+\-]?[0-9]+ 3) através de uma gramática de exprossoes regulares. Podem estar na forma BNF ou EBNF 4) é a representação explícita da estrutura do programa usada como .. . As arvores sintaticas abstratas diferem das parse trees pois são independentes da linguagem fonte do progama (...) 5) o IDENTIFIER precisa estar declarado. [ EXPRESSION ] precisa ser um valor numérico para determinar a posição do array a ser atribuida. EXPRESSION precisa ser do mesmmo tipo de IDENTIFIER 6) polimorfismo é a representação unica para varios tipo diferentes, a nivel de . Overloading é a definicação de um mesmo nome para rotinas, porem com paramentros diferentes em numero ou em tipos. (4) 1)