Definição da Linguagem TIGER--

André Luiz Pires Guedes
2018/2

A linguagem Tiger-- é um subconjunto da linguagem Tiger, definida no livro Modern Compiler Implementation in C de Andrew W. Appel. Disponível em http://www.cs.princeton.edu/~appel/modern/.

A seguir apresentaremos a definição da linguagem.

Símbolos

Outros

:= ; , ( ) + - * / = <> > < >= <= & |

Palavras Reservadas

var function if then else while do let in end

Programa

Um programa em Tiger-- é uma expressão (exp).

Declarações

Uma declaração é uma declaração de variável ou de função. As declarações podem estar em seqüência, e não são usadas pontuações para separar.

Expressões

Uma expressão em Tiger-- pode ser:

Regras de Escopo

Precedência de Operadores

Associatividade

Os operadores *,/,+,- são associativos pela esquerda. Os demais não são associativos.

Funções Aninhadas

Podemos usar mais de um nível de funções, como em Pascal, assim como vários níveis de expressões.

Recursão

Não é permitido o uso de recursão.

Funções Pré-definidas

Temos duas funções pré-definidas em Tiger-- para entrada e saída.

Exemplo de Programa em Tiger--

Fatorial

    let
            var n := 0     /* o numero    */
            var f := 1     /* o fatorial  */
            var i := 2     /* um contador */
    in
            printf("Entre com o numero:");
            n := getint();
            while i <= n do
            (
                    f := f * i;
                    i := i + 1;
            )
            printf("\nfatorial de %d = %d\n", n, f)
    end

Outras referências: