Ejemplo n.º 1
0
 def expressao_soma(self, noh):
     if (self.peek_token() is not None):
         noh1 = Noh(noh, False, 'termo')
         noh.addFilho(noh1)
         self.termo(noh1)
         noh2 = Noh(noh, False, 'expressao_soma\'')
         noh.addFilho(noh2)
         self.expressao_soma1(noh2)
Ejemplo n.º 2
0
 def declaracao_lista(self, noh):
     if (self.peek_token() is not None):
         noh1 = Noh(noh, False, 'declaracao')
         noh.addFilho(noh1)
         self.declaracao(noh1)
         noh2 = Noh(noh, False, 'declaracao_lista\'')
         noh.addFilho(noh2)
         self.declaracao_lista1(noh2)
Ejemplo n.º 3
0
 def expressao_simples(self, noh):
     if (self.peek_token() is not None):
         noh1 = Noh(noh, False, 'expressao_soma')
         noh.addFilho(noh1)
         self.expressao_soma(noh1)
         noh2 = Noh(noh, False, 'expressao_simples\'')
         noh.addFilho(noh2)
         self.expressao_simples1(noh2)
Ejemplo n.º 4
0
 def termo(self, noh):
     if (self.peek_token() is not None):
         noh1 = Noh(noh, False, 'fator')
         noh.addFilho(noh1)
         self.fator(noh1)
         noh2 = Noh(noh, False, 'termo\'')
         noh.addFilho(noh2)
         self.termo1(noh2)
Ejemplo n.º 5
0
 def param(self, noh):
     if (self.peek_token() is not None):
         noh2 = Noh(noh, False, 'tipo_especificador')
         noh.addFilho(noh2)
         self.tipo_especificador(noh2)
         self.match(noh, "ID")
         noh1 = Noh(noh, False, 'param\'')
         noh.addFilho(noh1)
         self.param1(noh1)
Ejemplo n.º 6
0
 def declaracao1(self, noh):
     if (self.peek_token() is not None):
         if (self.peek_token().lexeme == '('):
             noh1 = Noh(noh, False, 'fun_declaracao')
             noh.addFilho(noh1)
             self.fun_declaracao(noh1)
         else:
             noh1 = Noh(noh, False, 'var_declaracao')
             noh.addFilho(noh1)
             self.var_declaracao(noh1)
Ejemplo n.º 7
0
 def declaracao_lista1(self, noh):
     if (self.peek_token() is not None):
         primeiros_declaracao = ['int', 'float', 'char', 'void', 'struct']
         if (self.peek_token().lexeme in primeiros_declaracao):
             noh1 = Noh(noh, False, 'declaracao')
             noh.addFilho(noh1)
             self.declaracao(noh1)
             noh2 = Noh(noh, False, 'declaracao_lista\'')
             noh.addFilho(noh2)
             self.declaracao_lista1(noh2)
Ejemplo n.º 8
0
 def fun_declaracao(self, noh):
     if (self.peek_token() is not None):
         self.match(noh, '(')
         noh1 = Noh(noh, False, 'params')
         noh.addFilho(noh1)
         self.params(noh1)
         self.match(noh, ')')
         noh2 = Noh(noh, False, 'composto_decl')
         noh.addFilho(noh2)
         self.composto_decl(noh2)
Ejemplo n.º 9
0
 def expressao_simples1(self, noh):
     if (self.peek_token() is not None):
         primeiros_relacional = ['<', '>', '==', '!=', '<=', '>=']
         if (self.peek_token().lexeme in primeiros_relacional):
             noh1 = Noh(noh, False, 'relacional')
             noh.addFilho(noh1)
             self.relacional(noh1)
             noh2 = Noh(noh, False, 'expressao_soma')
             noh.addFilho(noh2)
             self.expressao_soma(noh2)
Ejemplo n.º 10
0
 def iteracao_decl(self, noh):
     if (self.peek_token() is not None):
         self.match(noh, "while")
         self.match(noh, "(")
         noh1 = Noh(noh, False, 'expressao')
         noh.addFilho(noh1)
         self.expressao(noh1)
         self.match(noh, ")")
         noh2 = Noh(noh, False, 'comando')
         noh.addFilho(noh2)
         self.comando(noh2)
Ejemplo n.º 11
0
 def var1(self, noh):
     if (self.peek_token() is not None):
         if (self.peek_token().lexemeType == self.lexemes['[']):
             self.match(noh, '[')
             noh2 = Noh(noh, False, 'expressao')
             noh.addFilho(noh2)
             self.expressao(noh2)
             self.match(noh, ']')
             noh1 = Noh(noh, False, 'var\'')
             noh.addFilho(noh1)
             self.var1(noh1)
Ejemplo n.º 12
0
 def expressao_soma1(self, noh):
     if (self.peek_token() is not None):
         primeiros_soma = ['+', '-']
         if (self.peek_token().lexeme in primeiros_soma):
             noh1 = Noh(noh, False, 'soma')
             noh.addFilho(noh1)
             self.soma(noh1)
             noh2 = Noh(noh, False, 'termo')
             noh.addFilho(noh2)
             self.termo(noh2)
             noh3 = Noh(noh, False, 'expressao_soma\'')
             noh.addFilho(noh3)
             self.expressao_soma1(noh3)
Ejemplo n.º 13
0
 def termo1(self, noh):
     if (self.peek_token() is not None):
         primeiros_mult = ['*', '/']
         if (self.peek_token().lexeme in primeiros_mult):
             noh1 = Noh(noh, False, 'mult')
             noh.addFilho(noh1)
             self.mult(noh1)
             noh2 = Noh(noh, False, 'fator')
             noh.addFilho(noh2)
             self.fator(noh2)
             noh3 = Noh(noh, False, 'termo\'')
             noh.addFilho(noh3)
             self.termo1(noh3)
Ejemplo n.º 14
0
 def comando_lista(self, noh):
     if (self.peek_token() is not None):
         primeiros_comando = [
             '{', 'if', 'while', 'return', '(', 'ID', 'CONSTANTE NUMERICA'
         ]
         if (self.peek_token().lexeme in primeiros_comando
                 or self.peek_token().lexemeType in primeiros_comando):
             noh1 = Noh(noh, False, 'comando')
             noh.addFilho(noh1)
             self.comando(noh1)
             noh2 = Noh(noh, False, 'comando_lista')
             noh.addFilho(noh2)
             self.comando_lista(noh2)
Ejemplo n.º 15
0
 def selecao_decl(self, noh):
     if (self.peek_token() is not None):
         self.match(noh, "if")
         self.match(noh, "(")
         noh1 = Noh(noh, False, 'expressao')
         noh.addFilho(noh1)
         self.expressao(noh1)
         self.match(noh, ")")
         noh2 = Noh(noh, False, 'comando')
         noh.addFilho(noh2)
         self.comando(noh2)
         noh3 = Noh(noh, False, 'else_decl')
         noh.addFilho(noh3)
         self.else_decl(noh3)
Ejemplo n.º 16
0
 def declaracao(self, noh):
     if (self.peek_token() is not None):
         primeiros_tipo_especificador = ['int', 'float', 'char', 'void']
         if (self.peek_token().lexeme in primeiros_tipo_especificador):
             noh1 = Noh(noh, False, 'tipo_especificador')
             noh.addFilho(noh1)
             self.tipo_especificador(noh1)
             self.match(noh, "ID")
             noh2 = Noh(noh, False, 'declaracao\'')
             noh.addFilho(noh2)
             self.declaracao1(noh2)
         else:
             noh1 = Noh(noh, False, 'estrutura')
             noh.addFilho(noh1)
             self.estrutura(noh1)
Ejemplo n.º 17
0
 def retorno_decl(self, noh):
     if (self.peek_token() is not None):
         self.match(noh, "return")
         noh2 = Noh(noh, False, 'retorno_decl\'')
         noh.addFilho(noh2)
         self.retorno_decl1(noh2)
         self.match(noh, ";")
Ejemplo n.º 18
0
 def else_decl(self, noh):
     if (self.peek_token() is not None):
         if (self.peek_token().lexeme == "else"):
             self.match(noh, "else")
             noh2 = Noh(noh, False, 'comando')
             noh.addFilho(noh2)
             self.comando(noh2)
Ejemplo n.º 19
0
 def composto_decl(self, noh):
     if (self.peek_token() is not None):
         self.match(noh, "{")
         noh1 = Noh(noh, False, 'instrucoes')
         noh.addFilho(noh1)
         self.instrucoes(noh1)
         self.match(noh, "}")
Ejemplo n.º 20
0
 def ativacao(self, noh):
     if (self.peek_token() is not None):
         self.match(noh, 'ID')
         self.match(noh, '(')
         noh1 = Noh(noh, False, 'args')
         noh.addFilho(noh1)
         self.args(noh1)
         self.match(noh, ')')
Ejemplo n.º 21
0
 def params(self, noh):
     if (self.peek_token() is not None):
         if (self.peek_token().lexeme == 'void'):
             self.match(noh, 'void')
         else:
             noh1 = Noh(noh, False, 'param_lista')
             noh.addFilho(noh1)
             self.param_lista(noh1)
Ejemplo n.º 22
0
 def param1(self, noh):
     if (self.peek_token() is not None):
         if (self.peek_token().lexemeType == self.lexemes['[']):
             self.match(noh, '[')
             self.match(noh, ']')
             noh1 = Noh(noh, False, 'param\'')
             noh.addFilho(noh1)
             self.param1(noh1)
Ejemplo n.º 23
0
 def estrutura(self, noh):
     if (self.peek_token() is not None):
         self.match(noh, 'struct')
         self.match(noh, 'ID')
         self.match(noh, '{')
         noh1 = Noh(noh, False, 'atributos_declaracao')
         noh.addFilho(noh1)
         self.atributos_declaracao(noh1)
         self.match(noh, '}')
Ejemplo n.º 24
0
 def param_lista(self, noh):
     if (self.peek_token() is not None):
         primeiros_tipo_especificador = ['int', 'float', 'char', 'void']
         if (self.peek_token().lexeme in primeiros_tipo_especificador):
             noh1 = Noh(noh, False, 'param')
             noh.addFilho(noh1)
             self.param(noh1)
             noh2 = Noh(noh, False, 'param_lista')
             noh.addFilho(noh2)
             self.param_lista(noh2)
         elif (self.peek_token().lexeme == ','):
             self.match(noh, ',')
             noh1 = Noh(noh, False, 'param')
             noh.addFilho(noh1)
             self.param(noh1)
             noh2 = Noh(noh, False, 'param_lista')
             noh.addFilho(noh2)
             self.param_lista(noh2)
Ejemplo n.º 25
0
 def expressao_decl(self, noh):
     if (self.peek_token() is not None):
         if (self.peek_token().lexeme == ';'):
             self.match(noh, ';')
         else:
             noh1 = Noh(noh, False, 'expressao')
             noh.addFilho(noh1)
             self.expressao(noh1)
             self.match(noh, ";")
Ejemplo n.º 26
0
 def fator(self, noh):
     if (self.peek_token() is not None):
         if (self.peek_token().lexemeType == self.lexemes['(']):
             self.match(noh, '(')
             noh1 = Noh(noh, False, 'expressao')
             noh.addFilho(noh1)
             self.expressao(noh1)
             self.match(noh, ')')
         elif (self.peek_token().lexemeType == 'CONSTANTE NUMERICA'):
             self.match(noh, 'CONSTANTE NUMERICA')
         elif (self.peek_second_token().lexemeType == self.lexemes['(']):
             noh1 = Noh(noh, False, 'ativacao')
             noh.addFilho(noh1)
             self.ativacao(noh1)
         else:
             noh1 = Noh(noh, False, 'var')
             noh.addFilho(noh1)
             self.var(noh1)
Ejemplo n.º 27
0
 def var_declaracao1(self, noh):
     if (self.peek_token() is not None):
         if (self.peek_token().lexemeType == self.lexemes['[']):
             self.match(noh, '[')
             self.match(noh, 'CONSTANTE NUMERICA')
             self.match(noh, ']')
             noh1 = Noh(noh, False, 'var_declaracao\'')
             noh.addFilho(noh1)
             self.var_declaracao1(noh1)
         elif (self.peek_token().lexemeType == self.lexemes['=']):
             self.match(noh, '=')
             noh1 = Noh(noh, False, 'expressao')
             noh.addFilho(noh1)
             self.expressao(noh1)
             noh2 = Noh(noh, False, 'var_declaracao\'')
             noh.addFilho(noh2)
             self.var_declaracao1(noh2)
         else:
             self.match(noh, ';')
Ejemplo n.º 28
0
 def arg_lista(self, noh):
     if (self.peek_token() is not None):
         primeiros_expressao = [
             'ID', 'CONSTANTE NUMERICA', self.lexemes['(']
         ]
         if (self.peek_token().lexemeType in primeiros_expressao):
             noh1 = Noh(noh, False, 'expressao')
             noh.addFilho(noh1)
             self.expressao(noh1)
             noh2 = Noh(noh, False, 'arg_lista')
             noh.addFilho(noh2)
             self.arg_lista(noh2)
         elif (self.peek_token().lexeme == ','):
             self.match(noh, ',')
             noh1 = Noh(noh, False, 'expressao')
             noh.addFilho(noh1)
             self.expressao(noh1)
             noh2 = Noh(noh, False, 'arg_lista')
             noh.addFilho(noh2)
             self.arg_lista(noh2)
Ejemplo n.º 29
0
 def instrucoes(self, noh):
     if (self.peek_token() is not None):
         primeiros_comando = [
             '{', 'if', 'while', 'return', '(', 'ID', 'CONSTANTE NUMERICA'
         ]
         primeiros_local_declaracoes = ["int", "char", "float", "void"]
         if (self.peek_token().lexeme in primeiros_comando
                 or self.peek_token().lexemeType in primeiros_comando):
             noh2 = Noh(noh, False, 'comando_lista')
             noh.addFilho(noh2)
             self.comando_lista(noh2)
             noh1 = Noh(noh, False, 'instrucoes')
             noh.addFilho(noh1)
             self.instrucoes(noh1)
         elif (self.peek_token().lexeme in primeiros_local_declaracoes):
             noh2 = Noh(noh, False, 'local_declaracoes')
             noh.addFilho(noh2)
             self.local_declaracoes(noh2)
             noh1 = Noh(noh, False, 'instrucoes')
             noh.addFilho(noh1)
             self.instrucoes(noh1)
Ejemplo n.º 30
0
 def local_declaracoes(self, noh):
     if (self.peek_token() is not None):
         primeiros_tipo_especificador = ["int", "char", "float", "void"]
         if (self.peek_token().lexeme in primeiros_tipo_especificador):
             noh1 = Noh(noh, False, 'tipo_especificador')
             noh.addFilho(noh1)
             self.tipo_especificador(noh1)
             self.match(noh, 'ID')
             noh3 = Noh(noh, False, 'var_declaracao')
             noh.addFilho(noh3)
             self.var_declaracao(noh3)
             noh2 = Noh(noh, False, 'local_declaracoes')
             noh.addFilho(noh2)
             self.local_declaracoes(noh2)
         elif (self.peek_token().lexeme == 'struct'):
             noh1 = Noh(noh, False, 'estrutura')
             noh.addFilho(noh1)
             self.estrutura(noh1)
             noh2 = Noh(noh, False, 'local_declaracoes')
             noh.addFilho(noh2)
             self.local_declaracoes(noh2)