pascow

trovao@valhalla:~/Projetos/pascow$ ./pascow 

            (__)
            (oO)
      /------\\/
     / |    ||
    *  /\\---/\\
       ~~   ~~
"Have you mooed today?"
PASCOW(n): PAScalito Compiler Without (a Name)

PASCOW(n) versão 1.0
Rodando em python 2.4.1 (#1, Apr 10 2005, 22:30:36)
[GCC 3.3.5]

Digite 'ajuda' para mais informações.

> ajuda

Comandos válidos do PASCOW:

ajuda                           Imprime esta listagem
carrega <nome_do_arquivo.pas>   Carrega o arquivo nome_do_arquivo.pas
compila                         Compila todos os executáveis carregados
exibe <codigo>                  Exibe o código-fonte do programa com codigo
executavel <nome_do_programa>   Exibe o código executável do programa nome_do_programa
executa <nome_do_programa>      Executa o programa nome_do_programa
memoria <nome_do_programa>      Exibe o conteúdo da "memória" do programa
lista                           Exibe os programas/arquivos carregados
testes                          Realiza testes de compilação/execução nos arquivos de exemplo.
sair                            Sai do interpretador

> carrega exemplos/fibonacci.pas
> carrega exemplos/programa1.pas
> carrega programa1-e1.pas
Erro de E/S. Arquivo programa1-e1.pas não encontrado.
> carrega exemplos/programa1-e1.pas
> carrega exemplos/programa2.pas
> carrega exemplos/programa2-e1.pas
> lista
Tabela de Programas:

Codigo  Arquivo                 Nome            Compilado?

0       exemplos/fibonacci.pas                          False
1       exemplos/programa1.pas                          False
2       exemplos/programa1-e1.pas                       False
3       exemplos/programa2.pas                          False
4       exemplos/programa2-e1.pas                       False

> compila
Compilando exemplos/fibonacci.pas
Sucesso!

Compilando exemplos/programa1.pas
Sucesso!

Compilando exemplos/programa1-e1.pas
Erro Sintatico na linha 12.
Esperava:  *, div, mod, +, -, =, <, >, <>, <=, >=, ;
Encontrou:  imprima

Compilando exemplos/programa2.pas
Sucesso!

Compilando exemplos/programa2-e1.pas
Erro Semantico: linha 6: erro de aridade do procedimento "leia".
Esperava 1, recebeu 2 argumento(s).

> lista
Tabela de Programas:

Codigo  Arquivo                 Nome            Compilado?

0       exemplos/fibonacci.pas          fibonacci               True
1       exemplos/programa1.pas          programa1               True
2       exemplos/programa1-e1.pas                               False
3       exemplos/programa2.pas          programa2               True
4       exemplos/programa2-e1.pas                               False

> exibe 2
programa programa1;

var a, b, c: inteiro;

inicio
        a := 10;
        b := 0;
        leia(c);
        enquanto b < a faca
        inicio
                b := b+1
                imprima(b);
        fim;
        se a > c entao
        inicio
                b := c;
        fim
        senao
        inicio
                b := a;
        fim
fim.

> exibe 4
programa programa2;

var a, b: inteiro;

inicio
        leia(a, b);
        se (a < 6) entao
        inicio
                b := 3;
        fim;
fim.

> executa fibonacci
6

0
1
1
2
3
5
Programa executado com êxito.
Conteudo da "memória", variaveis:
Nome: x1, Programa: fibonacci, Tipo: inteiro, Valor: 3
Nome: x2, Programa: fibonacci, Tipo: inteiro, Valor: 5
Nome: num, Programa: fibonacci, Tipo: inteiro, Valor: 6
Nome: cont, Programa: fibonacci, Tipo: inteiro, Valor: 6
Nome: valor, Programa: fibonacci, Tipo: inteiro, Valor: 5 

> exibe 0
programa fibonacci;

/* Imprime a sequencia de fibonacci ateh o num-esimo elemento

var x1,x2,valor, cont, num: inteiro;

inicio
        x1 := -1;
        x2 := 1;
        cont := 0;
        leia(num);
        imprimalinha;
        enquanto num < 0 faca
                leia(num);
        enquanto cont < num faca
        inicio
                valor := x1 + x2;
                imprima(valor);
                x1 := x2;
                x2 := valor;
                cont := cont + 1;
        fim;
fim.
> executa programa1
5
1
2
3
4
5
6
7
8
9
10
Programa executado com êxito.
Conteudo da "memória", variaveis:
Nome: c, Programa: programa1, Tipo: inteiro, Valor: 5
Nome: a, Programa: programa1, Tipo: inteiro, Valor: 10
Nome: b, Programa: programa1, Tipo: inteiro, Valor: 5
> exibe 1
programa programa1;

var a, b, c: inteiro;

inicio
        a := 10;
        b := 0;
        leia(c);
        enquanto b < a faca
        inicio
                b := b+1;
                imprima(b);
        fim;
        se a > c entao
        inicio
                b := c;
        fim
        senao
        inicio
                b := a;
        fim
fim.
> lista
Tabela de Programas:

Codigo  Arquivo                 Nome            Compilado?

0       exemplos/fibonacci.pas          fibonacci               True
1       exemplos/programa1.pas          programa1               True
2       exemplos/programa1-e1.pas                               False
3       exemplos/programa2.pas          programa2               True
4       exemplos/programa2-e1.pas                               False

> executa programa2
5
Programa executado com êxito.
Conteudo da "memória", variaveis:
Nome: a, Programa: programa2, Tipo: inteiro, Valor: 5
Nome: b, Programa: programa2, Tipo: inteiro, Valor: 3 

> exibe 3
programa programa2;

var a, b: inteiro;

inicio
        leia(a);
        se (a < 6) entao
        inicio
                b := 3;
        fim;
fim.

> sair

Bad Behavior has blocked 145 access attempts in the last 7 days.