12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- def semantico(token, args):
- Avariaveis(token, args)
- def divisao(token, args, lista):
- linha = []
- if args.lse:
- print("Verificando Divisão por Zero.")
-
- def verificando(lista):
- for exp in lista.values():
- if 'î' not in exp:
- try:
- eval(''.join(exp))
- except ZeroDivisionError:
- from colorama import Style
- Color()
- print (f' Divisão por Zero {exp} '+ Style.RESET_ALL)
- def trocandoValores(lista,a,key):
- import re
- for exp in lista.keys():
- if exp in a:
- a=re.sub(r''+exp, (''.join(lista[exp])),''.join(a))
- lista[key] = ''.join(a)
-
- def Avariaveis(token, args):
- variaveis = {}
- if args.lse:
- print ('#' * 80)
- print('Carregando Tabela de Variveis.')
- print("Verificando Variaveis Duplicadas.")
- for var in token:
- if 'id' in var and var[2] == 2:
- if var[1] not in variaveis:
- variaveis[var[1]] = 'î'
- else:
- Color()
- print(f'\'{var[1]}\' declaração duplicada: ' + reset(var))
-
- if args.lse:
- print("Variaveis declaradas: ")
- for var in variaveis.items():
- print(var[0])
- print("Verificando Variaveis não declaradas.")
-
- for code in token:
- if 'id' in code:
- if not (code[1] in variaveis):
- Color();
- print(f'Variavel \'{code[1]}\' não declarado: ' + reset(code))
- divisao(token, args, variaveis)
-
- def Color():
- from colorama import Fore, Back
- print(Fore.CYAN + 'Erro semantico:')
-
-
- def reset(linha):
- from colorama import Style
- return f'linha{linha[2]} : coluna{linha[3]}' + Style.RESET_ALL
|