Questionário linguagens formais
Cada linguagem de programação possui regras que descrevem a estrutura sintática dos programas. Desta forma o análisador sintático cuida exclusivamente da forma das sentenças da linguagem, baseandose na gramática que define a linguagem. O analisador sintático obtém uma cadeia de tonkens provenientes do analisador léxico e verifica se a mesma pode ser gerada pela gramática da linguagem fonte. Geralmente as construções sintáticas são definidas através de gramáticas livres de contexto. Uma gramática deriva cadeias começando pelo símbolo de partida e substituindo repetidamente um nãoterminal pelo lado direito de uma produção para aquele nãoterminal. As cadeias de tokens que podem ser derivadas a partir do símbolo de partida forma a linguagem definida pela gramática. Uma cadeia de linguagem, gerada por uma gramática livre de contexto, pode ser exibida através de uma árvore gramatical ou árvore sintática.
2. Como códigos auxiliares podem ser associados a definição de gramáticas
usando a ferramenta JavaCC. Como isto é usado na geração da árvore sintática. Códigos auxiliares são implementados de duas maneiras, uma delas se define em programas em um arquivo separado .jj ao qual se define funções e procedimentos, podendo ser incluso no início do arquivo a ser compilado, podendo fazer chamada das funções e procedimentos como se fizesse parte do próprio programa. A segunda maneira é adicionando código antes ou depois de cada codigo do javaCC, isso faz com que o código ocorra antes, durante ou depois da cração do nó, permitindo ações específicas a serem executadas em tempos específicos dependendo da aplicação.
3. Descreva a classe GeneralNode.
General Node é a superclasse dos diferentes tipos de nós da árvore sintática. Tem como