AULA
Nº 4.3 |
(Download
da Aula) |
|
|
ANALEX.L
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
%{ 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