AULA Nº 4.3

(Download da Aula)

<< anterior próxima >>
menu de aulas dúvidas
 

ANALEX.L

Programa exemplo
D [0-9]
L [a-zA-Z]

%%


{D}+ return (NUM);

{L}+{D}*{L}* return (LIT);

[(] return (AP);

[)] return (FP);

" " ;
. |
\n returnc(yytext[1]);

Compile com o LEX
c> lex analex.l

ANASINT.Y

Programa exemplo
 
%{ uses YaccLib, LexLib, crt; %}

%token <Real> NUM
%token AP
%token FP
%token LIT

%type <Real> expr

%%

input :
| input '\n' { yyaccept; }
| input expr '\n'
| error '\n' { yyerrok;}
;

expr : AP { writeln ('Resultado: Abre Parentesis');}
| FP { writeln ('Resultado: Fecha Parentesis');}
| NUM { writeln ('Resultado: ATOMO NUMERICO');}
| LIT { writeln ('Resultado: ATOMO LITERAL');}
;

%%


{$I analex}
var c :char;
begin
c := readkey;

clrscr;
write ('Forneca o elemento: ');
if yyparse=0 then { done };

clrscr;
gotoXY(25,13);
textcolor (11);
write ('Encerrando Analisador Lexico');
delay(20000);
textcolor(7);
end.


Compile com o YACC
c> yacc anasint.y
Compile com o PASCAL o programa gerado pelo YACC
c> TPC anasint.pas
Agora pode executar o ANASINT.EXE