def run(): '''Função principal de execução''' if len(sys.argv) <= 1: return start_interactive() # Processa argumentos 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() # Processa erros if os.path.splitext(args.arquivo)[1] != '.pytg': print('Aviso: Pytuga deve processar apenas arquivos .pytg!') if not os.path.exists(args.arquivo): raise SystemExit('O arquivo %s não existe!' % args.arquivo) # Processa arquivo if args.mostre_python: with open(args.arquivo) as F: print(transpile(F.read())) elif args.python: with open(args.arquivo) as source: with open(args.python, 'w') as dest: dest.write(transpile(source.read())) else: with open(args.arquivo) as F: console = PyTugaConsole(filename=args.arquivo) console.runcode(F.read())
def runsource(self, source, filename="<input>", symbol="single"): try: source = lexer.transpile(source) if source.endswith("\n"): source = source[:-1] code = self.compile(source, filename, symbol) except (OverflowError, SyntaxError, ValueError): # Case 1 print(source) self.showsyntaxerror(filename) return False if code is None: # Case 2 return True # Case 3 self.runcode(code) return False
def pytg(src): return [repr(x) for x in fromstring(transpile(src))]
def test_passthru(passtru): assert transpile(passtru) == passtru
def runcode(self, code): if isinstance(code, str): code = lexer.transpile(code) super(PyTugaConsole, self).runcode(code)