1*357f1050SThomas Veerman /*
2*357f1050SThomas Veerman * j2t.lex : An example of the use (possibly abuse!)
3*357f1050SThomas Veerman * of start states.
4*357f1050SThomas Veerman */
5*357f1050SThomas Veerman
6*357f1050SThomas Veerman %{
7*357f1050SThomas Veerman #define MAX_STATES 1024
8*357f1050SThomas Veerman #define TRUE 1
9*357f1050SThomas Veerman #define FALSE 0
10*357f1050SThomas Veerman
11*357f1050SThomas Veerman #define CHAPTER "@chapter"
12*357f1050SThomas Veerman #define SECTION "@section"
13*357f1050SThomas Veerman #define SSECTION "@subsection"
14*357f1050SThomas Veerman #define SSSECTION "@subsubsection"
15*357f1050SThomas Veerman
16*357f1050SThomas Veerman int states[MAX_STATES];
17*357f1050SThomas Veerman int statep = 0;
18*357f1050SThomas Veerman
19*357f1050SThomas Veerman int need_closing = FALSE;
20*357f1050SThomas Veerman
21*357f1050SThomas Veerman char buffer[YY_BUF_SIZE];
22*357f1050SThomas Veerman
23*357f1050SThomas Veerman extern char *yytext;
24*357f1050SThomas Veerman
25*357f1050SThomas Veerman /*
26*357f1050SThomas Veerman * set up the head of the *.texinfo file the program
27*357f1050SThomas Veerman * will produce. This is a standard texinfo header.
28*357f1050SThomas Veerman */
29*357f1050SThomas Veerman
print_header(void)30*357f1050SThomas Veerman void print_header(void)
31*357f1050SThomas Veerman {
32*357f1050SThomas Veerman printf("\\input texinfo @c -*-texinfo-*-\n");
33*357f1050SThomas Veerman printf("@c %c**start of header\n",'%');
34*357f1050SThomas Veerman printf("@setfilename jargon.info\n");
35*357f1050SThomas Veerman printf("@settitle The New Hackers Dictionary\n");
36*357f1050SThomas Veerman printf("@synindex fn cp\n");
37*357f1050SThomas Veerman printf("@synindex vr cp\n");
38*357f1050SThomas Veerman printf("@c %c**end of header\n",'%');
39*357f1050SThomas Veerman printf("@setchapternewpage odd\n");
40*357f1050SThomas Veerman printf("@finalout\n");
41*357f1050SThomas Veerman printf("@c @smallbook\n");
42*357f1050SThomas Veerman printf("\n");
43*357f1050SThomas Veerman printf("@c ==========================================================\n\n");
44*357f1050SThomas Veerman printf("@c This file was produced by j2t. Any mistakes are *not* the\n");
45*357f1050SThomas Veerman printf("@c fault of the jargon file editors. \n");
46*357f1050SThomas Veerman printf("@c ==========================================================\n\n");
47*357f1050SThomas Veerman printf("@titlepage\n");
48*357f1050SThomas Veerman printf("@title The New Hackers Dictionary\n");
49*357f1050SThomas Veerman printf("@subtitle Version 2.9.10\n");
50*357f1050SThomas Veerman printf("@subtitle Generated by j2t\n");
51*357f1050SThomas Veerman printf("@author Eric S. Raymond, Guy L. Steel, Mark Crispin et al.\n");
52*357f1050SThomas Veerman printf("@end titlepage\n");
53*357f1050SThomas Veerman printf("@page\n");
54*357f1050SThomas Veerman printf("\n@c ==========================================================\n");
55*357f1050SThomas Veerman printf("\n\n");
56*357f1050SThomas Veerman printf("@unnumbered Preface\n");
57*357f1050SThomas Veerman printf("@c *******\n");
58*357f1050SThomas Veerman }
59*357f1050SThomas Veerman
60*357f1050SThomas Veerman /*
61*357f1050SThomas Veerman * create the tail of the texinfo file produced.
62*357f1050SThomas Veerman */
63*357f1050SThomas Veerman
print_trailer(void)64*357f1050SThomas Veerman void print_trailer(void)
65*357f1050SThomas Veerman {
66*357f1050SThomas Veerman printf("\n@c ==========================================================\n");
67*357f1050SThomas Veerman printf("@contents\n"); /* print the table of contents */
68*357f1050SThomas Veerman printf("@bye\n\n");
69*357f1050SThomas Veerman }
70*357f1050SThomas Veerman
71*357f1050SThomas Veerman /*
72*357f1050SThomas Veerman * write an underline under a section
73*357f1050SThomas Veerman * or chapter so we can find it later.
74*357f1050SThomas Veerman */
75*357f1050SThomas Veerman
write_underline(int len,int space,char ch)76*357f1050SThomas Veerman void write_underline(int len, int space, char ch)
77*357f1050SThomas Veerman {
78*357f1050SThomas Veerman int loop;
79*357f1050SThomas Veerman
80*357f1050SThomas Veerman printf("@c ");
81*357f1050SThomas Veerman
82*357f1050SThomas Veerman for(loop=3; loop<space; loop++){
83*357f1050SThomas Veerman printf(" ");
84*357f1050SThomas Veerman }
85*357f1050SThomas Veerman
86*357f1050SThomas Veerman while(len--){
87*357f1050SThomas Veerman printf("%c",ch);
88*357f1050SThomas Veerman }
89*357f1050SThomas Veerman printf("\n\n");
90*357f1050SThomas Veerman }
91*357f1050SThomas Veerman
92*357f1050SThomas Veerman /*
93*357f1050SThomas Veerman * check for texinfo special characters
94*357f1050SThomas Veerman * and escape them
95*357f1050SThomas Veerman */
96*357f1050SThomas Veerman
check_and_convert(char * string)97*357f1050SThomas Veerman char *check_and_convert(char *string)
98*357f1050SThomas Veerman {
99*357f1050SThomas Veerman int buffpos = 0;
100*357f1050SThomas Veerman int len,loop;
101*357f1050SThomas Veerman
102*357f1050SThomas Veerman len = strlen(string);
103*357f1050SThomas Veerman for(loop=0; loop<len; loop++){
104*357f1050SThomas Veerman if(string[loop] == '@' || string[loop] == '{' || string[loop] == '}'){
105*357f1050SThomas Veerman buffer[buffpos++] = '@';
106*357f1050SThomas Veerman buffer[buffpos++] = string[loop];
107*357f1050SThomas Veerman } else {
108*357f1050SThomas Veerman buffer[buffpos++] = string[loop];
109*357f1050SThomas Veerman }
110*357f1050SThomas Veerman }
111*357f1050SThomas Veerman buffer[buffpos] = '\0';
112*357f1050SThomas Veerman return(buffer);
113*357f1050SThomas Veerman }
114*357f1050SThomas Veerman
115*357f1050SThomas Veerman /*
116*357f1050SThomas Veerman * write out a chapter,section, or subsection
117*357f1050SThomas Veerman * header
118*357f1050SThomas Veerman */
119*357f1050SThomas Veerman
write_block_header(char * type)120*357f1050SThomas Veerman void write_block_header(char *type)
121*357f1050SThomas Veerman {
122*357f1050SThomas Veerman int loop;
123*357f1050SThomas Veerman int len;
124*357f1050SThomas Veerman
125*357f1050SThomas Veerman (void)check_and_convert(yytext);
126*357f1050SThomas Veerman len = strlen(buffer);
127*357f1050SThomas Veerman for(loop=0; buffer[loop] != '\n';loop++)
128*357f1050SThomas Veerman ;
129*357f1050SThomas Veerman buffer[loop] = '\0';
130*357f1050SThomas Veerman printf("%s %s\n",type,buffer);
131*357f1050SThomas Veerman write_underline(strlen(buffer),strlen(type)+1,'*');
132*357f1050SThomas Veerman }
133*357f1050SThomas Veerman
134*357f1050SThomas Veerman %}
135*357f1050SThomas Veerman
136*357f1050SThomas Veerman /*
137*357f1050SThomas Veerman * the flex description starts here
138*357f1050SThomas Veerman */
139*357f1050SThomas Veerman
140*357f1050SThomas Veerman %x HEADING EXAMPLE ENUM EXAMPLE2
141*357f1050SThomas Veerman %x BITEM BITEM_ITEM
142*357f1050SThomas Veerman %s LITEM LITEM2
143*357f1050SThomas Veerman
144*357f1050SThomas Veerman %%
145*357f1050SThomas Veerman
146*357f1050SThomas Veerman ^#[^#]*"#" /* skip the header & trailer */
147*357f1050SThomas Veerman /* chapters have asterisks under them
148*357f1050SThomas Veerman * and are terminated by a colon
149*357f1050SThomas Veerman */
150*357f1050SThomas Veerman ^[^\n:]+\n[*]+\n write_block_header(CHAPTER);
151*357f1050SThomas Veerman
152*357f1050SThomas Veerman ^"= "[A-Z]" ="\n"="* { /* we create a seciton for each category */
153*357f1050SThomas Veerman if(need_closing == TRUE){
154*357f1050SThomas Veerman printf("@end table\n\n\n");
155*357f1050SThomas Veerman }
156*357f1050SThomas Veerman need_closing = TRUE;
157*357f1050SThomas Veerman write_block_header(SECTION);
158*357f1050SThomas Veerman printf("\n\n@table @b\n");
159*357f1050SThomas Veerman }
160*357f1050SThomas Veerman
161*357f1050SThomas Veerman "Examples:"[^\.]+ ECHO;
162*357f1050SThomas Veerman
163*357f1050SThomas Veerman "*"[^*\n]+"*" { /* @emph{}(emphasized) text */
164*357f1050SThomas Veerman yytext[yyleng-1] = '\0';
165*357f1050SThomas Veerman (void)check_and_convert(&yytext[1]);
166*357f1050SThomas Veerman printf("@i{%s}",buffer);
167*357f1050SThomas Veerman }
168*357f1050SThomas Veerman
169*357f1050SThomas Veerman "{{"[^}]+"}}" { /* special emphasis */
170*357f1050SThomas Veerman yytext[yyleng-2] = '\0';
171*357f1050SThomas Veerman (void)check_and_convert(&yytext[2]);
172*357f1050SThomas Veerman printf("@b{%s}",buffer);
173*357f1050SThomas Veerman }
174*357f1050SThomas Veerman
175*357f1050SThomas Veerman "{"[^}]+"}" { /* special emphasis */
176*357f1050SThomas Veerman yytext[yyleng-1] = '\0';
177*357f1050SThomas Veerman (void)check_and_convert(&yytext[1]);
178*357f1050SThomas Veerman printf("@b{%s}",buffer);
179*357f1050SThomas Veerman }
180*357f1050SThomas Veerman
181*357f1050SThomas Veerman /* escape some special texinfo characters */
182*357f1050SThomas Veerman <INITIAL,LITEM,LITEM2,BITEM,ENUM,EXAMPLE,EXAMPLE2>"@" printf("@@");
183*357f1050SThomas Veerman <INITIAL,LITEM,LITEM2,BITEM,ENUM,EXAMPLE,EXAMPLE2>"{" printf("@{");
184*357f1050SThomas Veerman <INITIAL,LITEM,LITEM2,BITEM,ENUM,EXAMPLE,EXAMPLE2>"}" printf("@}");
185*357f1050SThomas Veerman
186*357f1050SThomas Veerman /*
187*357f1050SThomas Veerman * reproduce @example code
188*357f1050SThomas Veerman */
189*357f1050SThomas Veerman
190*357f1050SThomas Veerman ":"\n+[^\n0-9*]+\n" "[^ ] {
191*357f1050SThomas Veerman int loop;
192*357f1050SThomas Veerman int len;
193*357f1050SThomas Veerman int cnt;
194*357f1050SThomas Veerman
195*357f1050SThomas Veerman printf(":\n\n@example \n");
196*357f1050SThomas Veerman strcpy(buffer,yytext);
197*357f1050SThomas Veerman len = strlen(buffer);
198*357f1050SThomas Veerman cnt = 0;
199*357f1050SThomas Veerman for(loop=len; loop > 0;loop--){
200*357f1050SThomas Veerman if(buffer[loop] == '\n')
201*357f1050SThomas Veerman cnt++;
202*357f1050SThomas Veerman if(cnt == 2)
203*357f1050SThomas Veerman break;
204*357f1050SThomas Veerman }
205*357f1050SThomas Veerman yyless(loop+1);
206*357f1050SThomas Veerman statep++;
207*357f1050SThomas Veerman states[statep] = EXAMPLE2;
208*357f1050SThomas Veerman BEGIN(EXAMPLE2);
209*357f1050SThomas Veerman }
210*357f1050SThomas Veerman <EXAMPLE,EXAMPLE2>^\n {
211*357f1050SThomas Veerman printf("@end example\n\n");
212*357f1050SThomas Veerman statep--;
213*357f1050SThomas Veerman BEGIN(states[statep]);
214*357f1050SThomas Veerman }
215*357f1050SThomas Veerman
216*357f1050SThomas Veerman /*
217*357f1050SThomas Veerman * repoduce @enumerate lists
218*357f1050SThomas Veerman */
219*357f1050SThomas Veerman
220*357f1050SThomas Veerman ":"\n+[ \t]*[0-9]+"." {
221*357f1050SThomas Veerman int loop;
222*357f1050SThomas Veerman int len;
223*357f1050SThomas Veerman
224*357f1050SThomas Veerman printf(":\n\n@enumerate \n");
225*357f1050SThomas Veerman strcpy(buffer,yytext);
226*357f1050SThomas Veerman len = strlen(buffer);
227*357f1050SThomas Veerman for(loop=len; loop > 0;loop--){
228*357f1050SThomas Veerman if(buffer[loop] == '\n')
229*357f1050SThomas Veerman break;
230*357f1050SThomas Veerman }
231*357f1050SThomas Veerman yyless(loop);
232*357f1050SThomas Veerman statep++;
233*357f1050SThomas Veerman states[statep] = ENUM;
234*357f1050SThomas Veerman BEGIN(ENUM);
235*357f1050SThomas Veerman }
236*357f1050SThomas Veerman
237*357f1050SThomas Veerman <ENUM>"@" printf("@@");
238*357f1050SThomas Veerman <ENUM>":"\n+" "[^0-9] {
239*357f1050SThomas Veerman printf(":\n\n@example\n");
240*357f1050SThomas Veerman statep++;
241*357f1050SThomas Veerman states[statep] = EXAMPLE;
242*357f1050SThomas Veerman BEGIN(EXAMPLE);
243*357f1050SThomas Veerman }
244*357f1050SThomas Veerman
245*357f1050SThomas Veerman
246*357f1050SThomas Veerman <ENUM>\n[ \t]+[0-9]+"." {
247*357f1050SThomas Veerman printf("\n\n@item ");
248*357f1050SThomas Veerman }
249*357f1050SThomas Veerman <ENUM>^[^ ] |
250*357f1050SThomas Veerman <ENUM>\n\n\n[ \t]+[^0-9] {
251*357f1050SThomas Veerman printf("\n\n@end enumerate\n\n");
252*357f1050SThomas Veerman statep--;
253*357f1050SThomas Veerman BEGIN(states[statep]);
254*357f1050SThomas Veerman }
255*357f1050SThomas Veerman
256*357f1050SThomas Veerman /*
257*357f1050SThomas Veerman * reproduce one kind of @itemize list
258*357f1050SThomas Veerman */
259*357f1050SThomas Veerman
260*357f1050SThomas Veerman ":"\n+":" {
261*357f1050SThomas Veerman int loop;
262*357f1050SThomas Veerman int len;
263*357f1050SThomas Veerman
264*357f1050SThomas Veerman printf(":\n\n@itemize @bullet \n");
265*357f1050SThomas Veerman yyless(2);
266*357f1050SThomas Veerman statep++;
267*357f1050SThomas Veerman states[statep] = LITEM2;
268*357f1050SThomas Veerman BEGIN(LITEM2);
269*357f1050SThomas Veerman }
270*357f1050SThomas Veerman <LITEM2>^":".+":" {
271*357f1050SThomas Veerman (void)check_and_convert(&yytext[1]);
272*357f1050SThomas Veerman buffer[strlen(buffer)-1]='\0';
273*357f1050SThomas Veerman printf("@item @b{%s:}\n",buffer);
274*357f1050SThomas Veerman }
275*357f1050SThomas Veerman
276*357f1050SThomas Veerman <LITEM2>\n\n\n+[^:\n] {
277*357f1050SThomas Veerman printf("\n\n@end itemize\n\n");
278*357f1050SThomas Veerman ECHO;
279*357f1050SThomas Veerman statep--;
280*357f1050SThomas Veerman BEGIN(states[statep]);
281*357f1050SThomas Veerman }
282*357f1050SThomas Veerman
283*357f1050SThomas Veerman /*
284*357f1050SThomas Veerman * create a list out of the revision history part.
285*357f1050SThomas Veerman * We need the "Version" for this because it
286*357f1050SThomas Veerman * clashes with other rules otherwise.
287*357f1050SThomas Veerman */
288*357f1050SThomas Veerman
289*357f1050SThomas Veerman :[\n]+"Version"[^:\n*]+":" {
290*357f1050SThomas Veerman int loop;
291*357f1050SThomas Veerman int len;
292*357f1050SThomas Veerman
293*357f1050SThomas Veerman printf(":\n\n@itemize @bullet \n");
294*357f1050SThomas Veerman strcpy(buffer,yytext);
295*357f1050SThomas Veerman len = strlen(buffer);
296*357f1050SThomas Veerman for(loop=len; loop > 0;loop--){
297*357f1050SThomas Veerman if(buffer[loop] == '\n')
298*357f1050SThomas Veerman break;
299*357f1050SThomas Veerman }
300*357f1050SThomas Veerman yyless(loop);
301*357f1050SThomas Veerman statep++;
302*357f1050SThomas Veerman states[statep] = LITEM;
303*357f1050SThomas Veerman BEGIN(LITEM);
304*357f1050SThomas Veerman }
305*357f1050SThomas Veerman <LITEM>^.+":" {
306*357f1050SThomas Veerman (void)check_and_convert(yytext);
307*357f1050SThomas Veerman buffer[strlen(buffer)-1]='\0';
308*357f1050SThomas Veerman printf("@item @b{%s}\n\n",buffer);
309*357f1050SThomas Veerman }
310*357f1050SThomas Veerman
311*357f1050SThomas Veerman <LITEM>^[^:\n]+\n\n[^:\n]+\n {
312*357f1050SThomas Veerman int loop;
313*357f1050SThomas Veerman
314*357f1050SThomas Veerman strcpy(buffer,yytext);
315*357f1050SThomas Veerman for(loop=0; buffer[loop] != '\n'; loop++);
316*357f1050SThomas Veerman buffer[loop] = '\0';
317*357f1050SThomas Veerman printf("%s\n",buffer);
318*357f1050SThomas Veerman printf("@end itemize\n\n");
319*357f1050SThomas Veerman printf("%s",&buffer[loop+1]);
320*357f1050SThomas Veerman statep--;
321*357f1050SThomas Veerman BEGIN(states[statep]);
322*357f1050SThomas Veerman }
323*357f1050SThomas Veerman
324*357f1050SThomas Veerman /*
325*357f1050SThomas Veerman * reproduce @itemize @bullet lists
326*357f1050SThomas Veerman */
327*357f1050SThomas Veerman
328*357f1050SThomas Veerman ":"\n[ ]*"*" {
329*357f1050SThomas Veerman int loop;
330*357f1050SThomas Veerman int len;
331*357f1050SThomas Veerman
332*357f1050SThomas Veerman printf(":\n\n@itemize @bullet \n");
333*357f1050SThomas Veerman len = strlen(buffer);
334*357f1050SThomas Veerman for(loop=0; loop < len;loop++){
335*357f1050SThomas Veerman if(buffer[loop] == '\n')
336*357f1050SThomas Veerman break;
337*357f1050SThomas Veerman }
338*357f1050SThomas Veerman yyless((len-loop)+2);
339*357f1050SThomas Veerman statep++;
340*357f1050SThomas Veerman states[statep] = BITEM;
341*357f1050SThomas Veerman BEGIN(BITEM);
342*357f1050SThomas Veerman }
343*357f1050SThomas Veerman
344*357f1050SThomas Veerman <BITEM>^" "*"*" {
345*357f1050SThomas Veerman printf("@item");
346*357f1050SThomas Veerman statep++;
347*357f1050SThomas Veerman states[statep] = BITEM_ITEM;
348*357f1050SThomas Veerman BEGIN(BITEM_ITEM);
349*357f1050SThomas Veerman }
350*357f1050SThomas Veerman <BITEM>"@" printf("@@");
351*357f1050SThomas Veerman <BITEM>^\n {
352*357f1050SThomas Veerman printf("@end itemize\n\n");
353*357f1050SThomas Veerman statep--;
354*357f1050SThomas Veerman BEGIN(states[statep]);
355*357f1050SThomas Veerman }
356*357f1050SThomas Veerman <BITEM_ITEM>[^\:]* {
357*357f1050SThomas Veerman printf(" @b{%s}\n\n",check_and_convert(yytext));
358*357f1050SThomas Veerman }
359*357f1050SThomas Veerman <BITEM_ITEM>":" {
360*357f1050SThomas Veerman statep--;
361*357f1050SThomas Veerman BEGIN(states[statep]);
362*357f1050SThomas Veerman }
363*357f1050SThomas Veerman
364*357f1050SThomas Veerman /*
365*357f1050SThomas Veerman * recreate @chapter, @section etc.
366*357f1050SThomas Veerman */
367*357f1050SThomas Veerman
368*357f1050SThomas Veerman ^:[^:]* {
369*357f1050SThomas Veerman (void)check_and_convert(&yytext[1]);
370*357f1050SThomas Veerman statep++;
371*357f1050SThomas Veerman states[statep] = HEADING;
372*357f1050SThomas Veerman BEGIN(HEADING);
373*357f1050SThomas Veerman }
374*357f1050SThomas Veerman <HEADING>:[^\n] {
375*357f1050SThomas Veerman printf("@item @b{%s}\n",buffer);
376*357f1050SThomas Veerman write_underline(strlen(buffer),6,'~');
377*357f1050SThomas Veerman statep--;
378*357f1050SThomas Veerman BEGIN(states[statep]);
379*357f1050SThomas Veerman }
380*357f1050SThomas Veerman <HEADING>:\n"*"* {
381*357f1050SThomas Veerman if(need_closing == TRUE){
382*357f1050SThomas Veerman printf("@end table\n\n\n");
383*357f1050SThomas Veerman need_closing = FALSE;
384*357f1050SThomas Veerman }
385*357f1050SThomas Veerman printf("@chapter %s\n",buffer);
386*357f1050SThomas Veerman write_underline(strlen(buffer),9,'*');
387*357f1050SThomas Veerman statep--;
388*357f1050SThomas Veerman BEGIN(states[statep]);
389*357f1050SThomas Veerman }
390*357f1050SThomas Veerman <HEADING>:\n"="* {
391*357f1050SThomas Veerman if(need_closing == TRUE){
392*357f1050SThomas Veerman printf("@end table\n\n\n");
393*357f1050SThomas Veerman need_closing = FALSE;
394*357f1050SThomas Veerman }
395*357f1050SThomas Veerman printf("@section %s\n",buffer);
396*357f1050SThomas Veerman write_underline(strlen(buffer),9,'=');
397*357f1050SThomas Veerman statep--;
398*357f1050SThomas Veerman BEGIN(states[statep]);
399*357f1050SThomas Veerman }
400*357f1050SThomas Veerman <HEADING>"@" printf("@@");
401*357f1050SThomas Veerman <HEADING>:\n"-"* {
402*357f1050SThomas Veerman if(need_closing == TRUE){
403*357f1050SThomas Veerman printf("@end table\n\n\n");
404*357f1050SThomas Veerman need_closing = FALSE;
405*357f1050SThomas Veerman }
406*357f1050SThomas Veerman printf("@subsection %s\n",buffer);
407*357f1050SThomas Veerman write_underline(strlen(buffer),12,'-');
408*357f1050SThomas Veerman statep--;
409*357f1050SThomas Veerman BEGIN(states[statep]);
410*357f1050SThomas Veerman }
411*357f1050SThomas Veerman
412*357f1050SThomas Veerman /*
413*357f1050SThomas Veerman * recreate @example text
414*357f1050SThomas Veerman */
415*357f1050SThomas Veerman
416*357f1050SThomas Veerman ^" " {
417*357f1050SThomas Veerman printf("@example\n");
418*357f1050SThomas Veerman statep++;
419*357f1050SThomas Veerman states[statep] = EXAMPLE;
420*357f1050SThomas Veerman BEGIN(EXAMPLE);
421*357f1050SThomas Veerman }
422*357f1050SThomas Veerman <EXAMPLE>^" "
423*357f1050SThomas Veerman . ECHO;
424*357f1050SThomas Veerman
425*357f1050SThomas Veerman %%
426*357f1050SThomas Veerman
427*357f1050SThomas Veerman /*
428*357f1050SThomas Veerman * initialise and go.
429*357f1050SThomas Veerman */
430*357f1050SThomas Veerman
431*357f1050SThomas Veerman int main(int argc, char *argv[])
432*357f1050SThomas Veerman {
433*357f1050SThomas Veerman states[0] = INITIAL;
434*357f1050SThomas Veerman statep = 0;
435*357f1050SThomas Veerman print_header();
436*357f1050SThomas Veerman yylex();
437*357f1050SThomas Veerman print_trailer();
438*357f1050SThomas Veerman return(0);
439*357f1050SThomas Veerman }
440*357f1050SThomas Veerman
441*357f1050SThomas Veerman
442*357f1050SThomas Veerman
443