/* lex [-[drcyvntf]] [file] ... [file] */
/* Copyright 1976, Bell Telephone Laboratories, Inc.,
written by Eric Schmidt, August 27, 1976 */
while (argc
> 1 && argv
[1][0] == '-' ){
case 'd': debug
++; break;
case 'y': yydebug
= TRUE
; break;
warning("Unknown option %c",argv
[1][i
]);
fin
= fopen(argv
[++fptr
], "r"); /* open argv[1] */
error ("Can't read input file %s",argc
>1?argv
[1]:"standard input");
/* may be gotten: def, subs, sname, schar, ccl, dchar */
/* may be gotten: name, left, right, nullstr, parent */
sp
+= slength("INITIAL") + 1;
if(yyparse(0)) exit(1); /* error return code */
/* may be disposed of: def, subs, dchar */
/* may be gotten: tmpstat, foll, positions, gotof, nexts, nchar, state, atable, sfall, cpackflg */
printf("Print %d states:\n",stnum
+1);
for(i
=0;i
<=stnum
;i
++)stprt(i
);
/* may be disposed of: positions, tmpstat, foll, state, name, left, right, parent, ccl, schar, sname */
/* may be gotten: verify, advance, stoff */
/* may be disposed of: verify, advance, stoff, nexts, nchar,
gotof, atable, ccpackflg, sfall */
if (ZCH
>NCH
) cname
="/usr/lib/lex/ebcform";
fother
= fopen(ratfor
?ratname
:cname
,"r");
error("Lex driver missing, file %s",ratfor
?ratname
:cname
);
while ( (i
=getc(fother
)) != EOF
)
report
== 1)statistics();
exit(0); /* success return code */
ccptr
= ccl
= myalloc(CCLSIZE
,sizeof(*ccl
));
pcptr
= pchar
= myalloc(pchlen
, sizeof(*pchar
));
def
= myalloc(DEFSIZE
,sizeof(*def
));
subs
= myalloc(DEFSIZE
,sizeof(*subs
));
dp
= dchar
= myalloc(DEFCHAR
,sizeof(*dchar
));
sname
= myalloc(STARTSIZE
,sizeof(*sname
));
sp
= schar
= myalloc(STARTCHAR
,sizeof(*schar
));
if(ccl
== 0 || def
== 0 || subs
== 0 || dchar
== 0 || sname
== 0 || schar
== 0)
error("Too little core to begin");
cfree(def
,DEFSIZE
,sizeof(*def
));
cfree(subs
,DEFSIZE
,sizeof(*subs
));
cfree(dchar
,DEFCHAR
,sizeof(*dchar
));
gotof
= myalloc(nstates
,sizeof(*gotof
));
nexts
= myalloc(ntrans
,sizeof(*nexts
));
nchar
= myalloc(ntrans
,sizeof(*nchar
));
state
= myalloc(nstates
,sizeof(*state
));
atable
= myalloc(nstates
,sizeof(*atable
));
sfall
= myalloc(nstates
,sizeof(*sfall
));
cpackflg
= myalloc(nstates
,sizeof(*cpackflg
));
tmpstat
= myalloc(tptr
+1,sizeof(*tmpstat
));
foll
= myalloc(tptr
+1,sizeof(*foll
));
nxtpos
= positions
= myalloc(maxpos
,sizeof(*positions
));
if(tmpstat
== 0 || foll
== 0 || positions
== 0 ||
gotof
== 0 || nexts
== 0 || nchar
== 0 || state
== 0 || atable
== 0 || sfall
== 0 || cpackflg
== 0 )
error("Too little core for state generation");
for(i
=0;i
<=tptr
;i
++)foll
[i
] = 0;
cfree(positions
,maxpos
,sizeof(*positions
));
cfree(tmpstat
,tptr
+1,sizeof(*tmpstat
));
cfree(foll
,tptr
+1,sizeof(*foll
));
cfree(name
,treesize
,sizeof(*name
));
cfree(left
,treesize
,sizeof(*left
));
cfree(right
,treesize
,sizeof(*right
));
cfree(parent
,treesize
,sizeof(*parent
));
cfree(nullstr
,treesize
,sizeof(*nullstr
));
cfree(state
,nstates
,sizeof(*state
));
cfree(sname
,STARTSIZE
,sizeof(*sname
));
cfree(schar
,STARTCHAR
,sizeof(*schar
));
cfree(ccl
,CCLSIZE
,sizeof(*ccl
));
verify
= myalloc(outsize
,sizeof(*verify
));
advance
= myalloc(outsize
,sizeof(*advance
));
stoff
= myalloc(stnum
+2,sizeof(*stoff
));
if(verify
== 0 || advance
== 0 || stoff
== 0)
error("Too little core for final packing");
cfree(advance
,outsize
,sizeof(*advance
));
cfree(verify
,outsize
,sizeof(*verify
));
cfree(stoff
,stnum
+1,sizeof(*stoff
));
cfree(gotof
,nstates
,sizeof(*gotof
));
cfree(nexts
,ntrans
,sizeof(*nexts
));
cfree(nchar
,ntrans
,sizeof(*nchar
));
cfree(atable
,nstates
,sizeof(*atable
));
cfree(sfall
,nstates
,sizeof(*sfall
));
cfree(cpackflg
,nstates
,sizeof(*cpackflg
));
warning("OOPS - calloc returns a 0");
warning("calloc returns a -1");
fprintf(errorf
,"Bus error\n");
if(report
== 1)statistics();
fprintf(errorf
,"Segmentation violation\n");
if(report
== 1)statistics();
fprintf(stderr
, "%s\n", s
);