Análise léxica

Na Fase 1 pretende-se implementar um analisador léxico que separe a entrada em tokens. Cada token encontrado deverá ser escrito no ecrã. Ver este exercício

A linguagem LEI tem os seguintes tokens:

Palavras-chave

se    senao    para    ate    passo    fazer    enquanto    quebra    continua    inteiro    real    vector    classe    subclasse    funcao    construtor    destrutor

Operadores

Operadores aritméticos

*

produto

/

divisão

+

soma

-

subtracção

/q

quociente da divisão inteira

/r resto da divisão inteira

Operadores relacionais

<

menor

<=

menor ou igual

>

maior

>=

maior ou igual

=

igual
!= diferente

Operadores lógicos

_e

e lógico

_ou

ou lógico

_oux

ou exclusivo lógico

_nao

nao lógico

Operadores sobre bits

e

e

ou

ou

oux

ou exclusivo

nao

nao

dir

deslocamento à direita
esq deslocamento à esquerda

Vários

<-

atribuição

//

comentários (ignoram tudo até ao fim da linha)

\

continuação na próxima linha (desde que colocado antes do carácter de nova linha)

\t

tabulação

\n

nova linha
{ e } delimitadores de conjuntos de instruções
( e ) delimitadores de argumentos de funções
[ e ] delimitadores de índices de vectores
, separador de argumentos nas funções
. separador do nome da variável duma classe dum seu elemento

E ainda...

Os espaços em branco são os caracteres de espaço, tabulação e nova linha. Os espaços em branco são admitidos desde que dentro duma string. Neste caso, as tabulações e novas linhas serão, como já vimos acima, representadas por \n e \t.

Os números inteiros são representados por uma sequência de um ou mais dígitos ou por um carácter na forma 'c' (correspondente ao respectivo código). Exemplos:
    123    12    12    'a'    '='

Os números reais têm que ter obrigatoriamente um '.', podendo ter uma parte inteira composta por um ou mais dígitos, uma parte fraccionária da mesma forma, e uma parte exponencial composta pelo carácter 'E', um sinal '+' ou '-' opcional e uma outra sequência de um ou mais dígitos. A parte inteira ou a fraccionária (ou ambas) tem que estar presente. Exemplos:
    12.    .23    12.23    12.E12    12.23E-2    .12E+2

Os nomes das variáveis e funções têm que começar por uma letra ou pelo carácter '_', seguido de uma sequência de zero ou mais dígitos, letras ou '_'. Exemplos:
    x    x1    _x    var _x_y_z    X_Y    _123

As strings são vectores de inteiros (geralmente representados por caracteres) terminadas com o inteiro 0. Podem ser representados mais facilmente usando os caracteres entre um par de ".O inteiro 0 será sempre adicionado no fim. Exemplos:
    "string"    "isto é uma string"

Estão pré-definidas quatro funções de entrada/saída:
ler
escrever
ler_caracter
escrever_caracter

A entregar

Ficheiro com especificação do analisador léxico em lex/flex.


Voltar

Ultima alteração: quinta-feira, 16 de Novembro de 2000 às 15:39