program arbolM23;
{$APPTYPE CONSOLE}
uses
SysUtils,
Comprobar,
Lista,
Fichero,
Palabras;
Var
fiche,fichs,fichp:tFichero;
list:tListaPI;
listPal:tListaPal;
listSal:tListaSal;
cont:tCont;
err,es,novacio:tBool;
name1,name2,name3:String;
BEGIN
cont:=0;
If paramcount<>3 then writeln ('Parametros Incorrectos') // Hay que cotrolar que el nmero de parametros sea correcto
Else
begin
novacio:=false;
name1:=paramstr (1);
assign (fiche,name1);
If existeFichero (fiche) then
begin
reset (fiche);
name3:=paramstr (3);
assign (fichs,name3);
rewrite (fichs);
es:=false;
Repeat
inc (cont);
Linea (fiche,fichs,list,err,cont,es,novacio);
Until eof (fiche) or err;
If novacio then
begin
If not err then
begin
If es then
begin
name2:=paramstr (2);
assign (fichp,name2);
If palabra (fichp,fichs,listPal) then
begin
arbolDerivacion (list);
If comprob (list,listPal,listSal) then
begin
writeln;
writeln ('SI.');
writeln (fichs,'SI.');
writeln (fichs);
grabarListaSal (listSal,fichs);
end
Else
begin
writeln;
writeln ('NO.');
writeln (fichs,'NO.');
end;
end;
end
Else
begin
writeln (fichs,'<ERROR>');
writeln (fichs,'No existe ninguna produccin con axioma en parte izquierda.');
writeln;
writeln ('<ERROR>');
writeln ('No existe ninguna produccion con axioma en parte izquierda.');
end;
end;
end
Else
begin
writeln (fichs,'<ERROR>');
writeln (fichs,'El fichero est vaco.');
writeln ('<ERROR>');
writeln ('El fichero esta vacio.');
end;
close (fiche);
close (fichs);
end
Else writeln ('El fichero de gramtica no existe.');
end;
END.