def test_compile(): code = compile('x = raiz(0 ou 1)', '<string>', 'exec') D = {} exec(code, D) assert D['x'] == 1 D = {} exec(code, D) assert D['x'] == 1
def main(argv=None): """ Executes the main pytuga program in the console. """ if len(sys.argv) <= 1: return start_ipytuga() # Process arguments parser = argparse.ArgumentParser(description='Executa código Pytuguês') parser.add_argument( 'arquivo', help='nome do arquivo a ser executado') parser.add_argument( '--mostre-python', '-P', help='mostra conversão do arquivo para Python na tela', action='store_const', const=True) parser.add_argument( '--python', '-p', metavar='ARQUIVO', help='salva conversão para Python no caminho especificado') parser.add_argument( '--versão', '-v', help='mostra a versão do interpretador de pytuguês', action='version', version='Pytuga %s' % version) # parser.add_argument('--warning', '-w', action='store_const', # help='ativa avisos de compatibilidade com o python') args = parser.parse_args(argv) # Process errors if not os.path.exists(args.arquivo): raise SystemExit('O arquivo %s não existe!' % args.arquivo) if os.path.splitext(args.arquivo)[1] != '.pytg': print('Aviso: Pytuga deve processar apenas arquivos .pytg!') # Process file if args.mostre_python: with open(args.arquivo) as F: print(to_python(F.read())) elif args.python: with open(args.arquivo) as source: data = to_python(source.read()) with open(args.python, 'w') as dest: dest.write(data) else: with open(args.arquivo) as F: data = F.read() pytuga.init() code = pytuga.compile(data, args.arquivo, 'exec') pytuga.exec(code, {})
def syntax_check(self): pytuga.compile(self.source, 'main.pytg', 'exec')
def ast_parse(self, source, filename='<unknown>', symbol='exec'): flags = self.flags | PyCF_ONLY_AST return pytuga.compile(source, filename, symbol, flags, 1)