Пример #1
0
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())
Пример #2
0
    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
Пример #3
0
def pytg(src):
    return [repr(x) for x in fromstring(transpile(src))]
Пример #4
0
def test_passthru(passtru):
    assert transpile(passtru) == passtru
Пример #5
0
 def runcode(self, code):
     if isinstance(code, str):
         code = lexer.transpile(code)
     super(PyTugaConsole, self).runcode(code)