Ferramenta LEX

 

  1. Escreva a expressão regular que identifica o literal do número real em Pascal.
  2. Identificação de referências em  html. Realize um programa que permita extrair, imprimindo no terminal, as referências de um ficheiro em  html para outros ficheiros. Estas referências existem dentro de acções  html. As acções  html são delimitadas pelos caracteres menor (<) e maior (>). As referências são cadeias de caracteres delimitadas por aspas ("), precedidas da palavra chave  HREF e do sinal de igualdade (=). Por exemplo, <A HREF="file:/etc/passwd"> 
    Podem existir zero ou mais caracteres brancos - espaços ( ), tabulações (\t) ou mudanças de linha (\n). As referências são impressas incluindo as aspas que as delimitam e, por simplificação, considere que não existem aspas dentro da cadeia de caracteres. A linguagem  html não distingue maiúsculas de minúsculas, pelo que hrefHrefhREF, e outras combinações são também válidas. Não devem ser impressas as referências que se encontram dentro da zona de comentário. Em  html as zonas de comentário são aninhadas (  nested) e delimitadas pelas sequências <!-- e -->.
  3. Identificação de literais em Pascal. Realize um programa que identifique as constantes literais de um programa em Pascal: identificadores, números inteiros, números reais em vírgula flutuante de precisão simples e cadeias de caracteres. ( ignore a possibilidade de a cadeia de caracteres conter a sequência \") Para tal assuma que o ficheiro  yacc inclui as seguintes instruções:
        %union{ int i; float r; char *s; }
        %token<s> ID STR
        %token<i> INT
        %token<r> REAL
        %token ASSIGN LE GE NE DIV MOD AND NIL NOT BEGin END
        %token IF THEN ELSE WHILE DO REPEAT UNTIL FOR TO DOWNTO
        %token PROGRAM LABEL CONST TYPE VAR PROCEDURE FUNCTION
        %token PACKED ARRAY RECORD OF SET FILe CASE WITH GOTO
       
     
      
  4. Identificação de cadeias de caracteres. Realize um programa que permita extrair, imprimindo no terminal, as cadeias de caracteres em programas nas linguagens: Smalltalk, C e PostScript.

    Em  Smalltalk uma cadeia de caracteres é delimitada pelo carácter pelica ('), podendo o caracter pelica ser introduzido no texto através da sua duplicação.

    Em  C uma cadeia de caracteres é delimitada pelo carácter aspa ("), podendo o caracter aspa ser introduzido no texto através da sequência (\").

    Em  PostScript uma cadeia de caracteres é delimitada por parenteses curvos, podendo os parenteses ser introduzidos livremente no texto se estiverem emparelhados. Parenteses não emparelhados podem também ser introduzidos se precedidos do carácter (\).