|
Packit |
f00812 |
/*
|
|
Packit |
f00812 |
* j2t.lex : An example of the use (possibly abuse!)
|
|
Packit |
f00812 |
* of start states.
|
|
Packit |
f00812 |
*/
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
%{
|
|
Packit |
f00812 |
#define MAX_STATES 1024
|
|
Packit |
f00812 |
#define TRUE 1
|
|
Packit |
f00812 |
#define FALSE 0
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
#define CHAPTER "@chapter"
|
|
Packit |
f00812 |
#define SECTION "@section"
|
|
Packit |
f00812 |
#define SSECTION "@subsection"
|
|
Packit |
f00812 |
#define SSSECTION "@subsubsection"
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
int states[MAX_STATES];
|
|
Packit |
f00812 |
int statep = 0;
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
int need_closing = FALSE;
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
char buffer[YY_BUF_SIZE];
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
extern char *yytext;
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
/*
|
|
Packit |
f00812 |
* set up the head of the *.texinfo file the program
|
|
Packit |
f00812 |
* will produce. This is a standard texinfo header.
|
|
Packit |
f00812 |
*/
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
void print_header(void)
|
|
Packit |
f00812 |
{
|
|
Packit |
f00812 |
printf("\\input texinfo @c -*-texinfo-*-\n");
|
|
Packit |
f00812 |
printf("@c %c**start of header\n",'%');
|
|
Packit |
f00812 |
printf("@setfilename jargon.info\n");
|
|
Packit |
f00812 |
printf("@settitle The New Hackers Dictionary\n");
|
|
Packit |
f00812 |
printf("@synindex fn cp\n");
|
|
Packit |
f00812 |
printf("@synindex vr cp\n");
|
|
Packit |
f00812 |
printf("@c %c**end of header\n",'%');
|
|
Packit |
f00812 |
printf("@setchapternewpage odd\n");
|
|
Packit |
f00812 |
printf("@finalout\n");
|
|
Packit |
f00812 |
printf("@c @smallbook\n");
|
|
Packit |
f00812 |
printf("\n");
|
|
Packit |
f00812 |
printf("@c ==========================================================\n\n");
|
|
Packit |
f00812 |
printf("@c This file was produced by j2t. Any mistakes are *not* the\n");
|
|
Packit |
f00812 |
printf("@c fault of the jargon file editors. \n");
|
|
Packit |
f00812 |
printf("@c ==========================================================\n\n");
|
|
Packit |
f00812 |
printf("@titlepage\n");
|
|
Packit |
f00812 |
printf("@title The New Hackers Dictionary\n");
|
|
Packit |
f00812 |
printf("@subtitle Version 2.9.10\n");
|
|
Packit |
f00812 |
printf("@subtitle Generated by j2t\n");
|
|
Packit |
f00812 |
printf("@author Eric S. Raymond, Guy L. Steel, Mark Crispin et al.\n");
|
|
Packit |
f00812 |
printf("@end titlepage\n");
|
|
Packit |
f00812 |
printf("@page\n");
|
|
Packit |
f00812 |
printf("\n@c ==========================================================\n");
|
|
Packit |
f00812 |
printf("\n\n");
|
|
Packit |
f00812 |
printf("@unnumbered Preface\n");
|
|
Packit |
f00812 |
printf("@c *******\n");
|
|
Packit |
f00812 |
}
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
/*
|
|
Packit |
f00812 |
* create the tail of the texinfo file produced.
|
|
Packit |
f00812 |
*/
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
void print_trailer(void)
|
|
Packit |
f00812 |
{
|
|
Packit |
f00812 |
printf("\n@c ==========================================================\n");
|
|
Packit |
f00812 |
printf("@contents\n"); /* print the table of contents */
|
|
Packit |
f00812 |
printf("@bye\n\n");
|
|
Packit |
f00812 |
}
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
/*
|
|
Packit |
f00812 |
* write an underline under a section
|
|
Packit |
f00812 |
* or chapter so we can find it later.
|
|
Packit |
f00812 |
*/
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
void write_underline(int len, int space, char ch)
|
|
Packit |
f00812 |
{
|
|
Packit |
f00812 |
int loop;
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
printf("@c ");
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
for(loop=3; loop
|
|
Packit |
f00812 |
printf(" ");
|
|
Packit |
f00812 |
}
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
while(len--){
|
|
Packit |
f00812 |
printf("%c",ch);
|
|
Packit |
f00812 |
}
|
|
Packit |
f00812 |
printf("\n\n");
|
|
Packit |
f00812 |
}
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
/*
|
|
Packit |
f00812 |
* check for texinfo special characters
|
|
Packit |
f00812 |
* and escape them
|
|
Packit |
f00812 |
*/
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
char *check_and_convert(char *string)
|
|
Packit |
f00812 |
{
|
|
Packit |
f00812 |
int buffpos = 0;
|
|
Packit |
f00812 |
int len,loop;
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
len = strlen(string);
|
|
Packit |
f00812 |
for(loop=0; loop
|
|
Packit |
f00812 |
if(string[loop] == '@' || string[loop] == '{' || string[loop] == '}'){
|
|
Packit |
f00812 |
buffer[buffpos++] = '@';
|
|
Packit |
f00812 |
buffer[buffpos++] = string[loop];
|
|
Packit |
f00812 |
} else {
|
|
Packit |
f00812 |
buffer[buffpos++] = string[loop];
|
|
Packit |
f00812 |
}
|
|
Packit |
f00812 |
}
|
|
Packit |
f00812 |
buffer[buffpos] = '\0';
|
|
Packit |
f00812 |
return(buffer);
|
|
Packit |
f00812 |
}
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
/*
|
|
Packit |
f00812 |
* write out a chapter,section, or subsection
|
|
Packit |
f00812 |
* header
|
|
Packit |
f00812 |
*/
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
void write_block_header(char *type)
|
|
Packit |
f00812 |
{
|
|
Packit |
f00812 |
int loop;
|
|
Packit |
f00812 |
int len;
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
(void)check_and_convert(yytext);
|
|
Packit |
f00812 |
len = strlen(buffer);
|
|
Packit |
f00812 |
for(loop=0; buffer[loop] != '\n';loop++)
|
|
Packit |
f00812 |
;
|
|
Packit |
f00812 |
buffer[loop] = '\0';
|
|
Packit |
f00812 |
printf("%s %s\n",type,buffer);
|
|
Packit |
f00812 |
write_underline(strlen(buffer),strlen(type)+1,'*');
|
|
Packit |
f00812 |
}
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
%}
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
/*
|
|
Packit |
f00812 |
* the flex description starts here
|
|
Packit |
f00812 |
*/
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
%x HEADING EXAMPLE ENUM EXAMPLE2
|
|
Packit |
f00812 |
%x BITEM BITEM_ITEM
|
|
Packit |
f00812 |
%s LITEM LITEM2
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
%%
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
^#[^#]*"#" /* skip the header & trailer */
|
|
Packit |
f00812 |
/* chapters have asterisks under them
|
|
Packit |
f00812 |
* and are terminated by a colon
|
|
Packit |
f00812 |
*/
|
|
Packit |
f00812 |
^[^\n:]+\n[*]+\n write_block_header(CHAPTER);
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
^"= "[A-Z]" ="\n"="* { /* we create a seciton for each category */
|
|
Packit |
f00812 |
if(need_closing == TRUE){
|
|
Packit |
f00812 |
printf("@end table\n\n\n");
|
|
Packit |
f00812 |
}
|
|
Packit |
f00812 |
need_closing = TRUE;
|
|
Packit |
f00812 |
write_block_header(SECTION);
|
|
Packit |
f00812 |
printf("\n\n@table @b\n");
|
|
Packit |
f00812 |
}
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
"Examples:"[^\.]+ ECHO;
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
"*"[^*\n]+"*" { /* @emph{}(emphasized) text */
|
|
Packit |
f00812 |
yytext[yyleng-1] = '\0';
|
|
Packit |
f00812 |
(void)check_and_convert(&yytext[1]);
|
|
Packit |
f00812 |
printf("@i{%s}",buffer);
|
|
Packit |
f00812 |
}
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
"{{"[^}]+"}}" { /* special emphasis */
|
|
Packit |
f00812 |
yytext[yyleng-2] = '\0';
|
|
Packit |
f00812 |
(void)check_and_convert(&yytext[2]);
|
|
Packit |
f00812 |
printf("@b{%s}",buffer);
|
|
Packit |
f00812 |
}
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
"{"[^}]+"}" { /* special emphasis */
|
|
Packit |
f00812 |
yytext[yyleng-1] = '\0';
|
|
Packit |
f00812 |
(void)check_and_convert(&yytext[1]);
|
|
Packit |
f00812 |
printf("@b{%s}",buffer);
|
|
Packit |
f00812 |
}
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
/* escape some special texinfo characters */
|
|
Packit |
f00812 |
<INITIAL,LITEM,LITEM2,BITEM,ENUM,EXAMPLE,EXAMPLE2>"@" printf("@@");
|
|
Packit |
f00812 |
<INITIAL,LITEM,LITEM2,BITEM,ENUM,EXAMPLE,EXAMPLE2>"{" printf("@{");
|
|
Packit |
f00812 |
<INITIAL,LITEM,LITEM2,BITEM,ENUM,EXAMPLE,EXAMPLE2>"}" printf("@}");
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
/*
|
|
Packit |
f00812 |
* reproduce @example code
|
|
Packit |
f00812 |
*/
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
":"\n+[^\n0-9*]+\n" "[^ ] {
|
|
Packit |
f00812 |
int loop;
|
|
Packit |
f00812 |
int len;
|
|
Packit |
f00812 |
int cnt;
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
printf(":\n\n@example \n");
|
|
Packit |
f00812 |
strcpy(buffer,yytext);
|
|
Packit |
f00812 |
len = strlen(buffer);
|
|
Packit |
f00812 |
cnt = 0;
|
|
Packit |
f00812 |
for(loop=len; loop > 0;loop--){
|
|
Packit |
f00812 |
if(buffer[loop] == '\n')
|
|
Packit |
f00812 |
cnt++;
|
|
Packit |
f00812 |
if(cnt == 2)
|
|
Packit |
f00812 |
break;
|
|
Packit |
f00812 |
}
|
|
Packit |
f00812 |
yyless(loop+1);
|
|
Packit |
f00812 |
statep++;
|
|
Packit |
f00812 |
states[statep] = EXAMPLE2;
|
|
Packit |
f00812 |
BEGIN(EXAMPLE2);
|
|
Packit |
f00812 |
}
|
|
Packit |
f00812 |
<EXAMPLE,EXAMPLE2>^\n {
|
|
Packit |
f00812 |
printf("@end example\n\n");
|
|
Packit |
f00812 |
statep--;
|
|
Packit |
f00812 |
BEGIN(states[statep]);
|
|
Packit |
f00812 |
}
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
/*
|
|
Packit |
f00812 |
* repoduce @enumerate lists
|
|
Packit |
f00812 |
*/
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
":"\n+[ \t]*[0-9]+"." {
|
|
Packit |
f00812 |
int loop;
|
|
Packit |
f00812 |
int len;
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
printf(":\n\n@enumerate \n");
|
|
Packit |
f00812 |
strcpy(buffer,yytext);
|
|
Packit |
f00812 |
len = strlen(buffer);
|
|
Packit |
f00812 |
for(loop=len; loop > 0;loop--){
|
|
Packit |
f00812 |
if(buffer[loop] == '\n')
|
|
Packit |
f00812 |
break;
|
|
Packit |
f00812 |
}
|
|
Packit |
f00812 |
yyless(loop);
|
|
Packit |
f00812 |
statep++;
|
|
Packit |
f00812 |
states[statep] = ENUM;
|
|
Packit |
f00812 |
BEGIN(ENUM);
|
|
Packit |
f00812 |
}
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
<ENUM>"@" printf("@@");
|
|
Packit |
f00812 |
<ENUM>":"\n+" "[^0-9] {
|
|
Packit |
f00812 |
printf(":\n\n@example\n");
|
|
Packit |
f00812 |
statep++;
|
|
Packit |
f00812 |
states[statep] = EXAMPLE;
|
|
Packit |
f00812 |
BEGIN(EXAMPLE);
|
|
Packit |
f00812 |
}
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
<ENUM>\n[ \t]+[0-9]+"." {
|
|
Packit |
f00812 |
printf("\n\n@item ");
|
|
Packit |
f00812 |
}
|
|
Packit |
f00812 |
<ENUM>^[^ ] |
|
|
Packit |
f00812 |
<ENUM>\n\n\n[ \t]+[^0-9] {
|
|
Packit |
f00812 |
printf("\n\n@end enumerate\n\n");
|
|
Packit |
f00812 |
statep--;
|
|
Packit |
f00812 |
BEGIN(states[statep]);
|
|
Packit |
f00812 |
}
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
/*
|
|
Packit |
f00812 |
* reproduce one kind of @itemize list
|
|
Packit |
f00812 |
*/
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
":"\n+":" {
|
|
Packit |
f00812 |
int loop;
|
|
Packit |
f00812 |
int len;
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
printf(":\n\n@itemize @bullet \n");
|
|
Packit |
f00812 |
yyless(2);
|
|
Packit |
f00812 |
statep++;
|
|
Packit |
f00812 |
states[statep] = LITEM2;
|
|
Packit |
f00812 |
BEGIN(LITEM2);
|
|
Packit |
f00812 |
}
|
|
Packit |
f00812 |
<LITEM2>^":".+":" {
|
|
Packit |
f00812 |
(void)check_and_convert(&yytext[1]);
|
|
Packit |
f00812 |
buffer[strlen(buffer)-1]='\0';
|
|
Packit |
f00812 |
printf("@item @b{%s:}\n",buffer);
|
|
Packit |
f00812 |
}
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
<LITEM2>\n\n\n+[^:\n] {
|
|
Packit |
f00812 |
printf("\n\n@end itemize\n\n");
|
|
Packit |
f00812 |
ECHO;
|
|
Packit |
f00812 |
statep--;
|
|
Packit |
f00812 |
BEGIN(states[statep]);
|
|
Packit |
f00812 |
}
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
/*
|
|
Packit |
f00812 |
* create a list out of the revision history part.
|
|
Packit |
f00812 |
* We need the "Version" for this because it
|
|
Packit |
f00812 |
* clashes with other rules otherwise.
|
|
Packit |
f00812 |
*/
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
:[\n]+"Version"[^:\n*]+":" {
|
|
Packit |
f00812 |
int loop;
|
|
Packit |
f00812 |
int len;
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
printf(":\n\n@itemize @bullet \n");
|
|
Packit |
f00812 |
strcpy(buffer,yytext);
|
|
Packit |
f00812 |
len = strlen(buffer);
|
|
Packit |
f00812 |
for(loop=len; loop > 0;loop--){
|
|
Packit |
f00812 |
if(buffer[loop] == '\n')
|
|
Packit |
f00812 |
break;
|
|
Packit |
f00812 |
}
|
|
Packit |
f00812 |
yyless(loop);
|
|
Packit |
f00812 |
statep++;
|
|
Packit |
f00812 |
states[statep] = LITEM;
|
|
Packit |
f00812 |
BEGIN(LITEM);
|
|
Packit |
f00812 |
}
|
|
Packit |
f00812 |
<LITEM>^.+":" {
|
|
Packit |
f00812 |
(void)check_and_convert(yytext);
|
|
Packit |
f00812 |
buffer[strlen(buffer)-1]='\0';
|
|
Packit |
f00812 |
printf("@item @b{%s}\n\n",buffer);
|
|
Packit |
f00812 |
}
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
<LITEM>^[^:\n]+\n\n[^:\n]+\n {
|
|
Packit |
f00812 |
int loop;
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
strcpy(buffer,yytext);
|
|
Packit |
f00812 |
for(loop=0; buffer[loop] != '\n'; loop++);
|
|
Packit |
f00812 |
buffer[loop] = '\0';
|
|
Packit |
f00812 |
printf("%s\n",buffer);
|
|
Packit |
f00812 |
printf("@end itemize\n\n");
|
|
Packit |
f00812 |
printf("%s",&buffer[loop+1]);
|
|
Packit |
f00812 |
statep--;
|
|
Packit |
f00812 |
BEGIN(states[statep]);
|
|
Packit |
f00812 |
}
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
/*
|
|
Packit |
f00812 |
* reproduce @itemize @bullet lists
|
|
Packit |
f00812 |
*/
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
":"\n[ ]*"*" {
|
|
Packit |
f00812 |
int loop;
|
|
Packit |
f00812 |
int len;
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
printf(":\n\n@itemize @bullet \n");
|
|
Packit |
f00812 |
len = strlen(buffer);
|
|
Packit |
f00812 |
for(loop=0; loop < len;loop++){
|
|
Packit |
f00812 |
if(buffer[loop] == '\n')
|
|
Packit |
f00812 |
break;
|
|
Packit |
f00812 |
}
|
|
Packit |
f00812 |
yyless((len-loop)+2);
|
|
Packit |
f00812 |
statep++;
|
|
Packit |
f00812 |
states[statep] = BITEM;
|
|
Packit |
f00812 |
BEGIN(BITEM);
|
|
Packit |
f00812 |
}
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
<BITEM>^" "*"*" {
|
|
Packit |
f00812 |
printf("@item");
|
|
Packit |
f00812 |
statep++;
|
|
Packit |
f00812 |
states[statep] = BITEM_ITEM;
|
|
Packit |
f00812 |
BEGIN(BITEM_ITEM);
|
|
Packit |
f00812 |
}
|
|
Packit |
f00812 |
<BITEM>"@" printf("@@");
|
|
Packit |
f00812 |
<BITEM>^\n {
|
|
Packit |
f00812 |
printf("@end itemize\n\n");
|
|
Packit |
f00812 |
statep--;
|
|
Packit |
f00812 |
BEGIN(states[statep]);
|
|
Packit |
f00812 |
}
|
|
Packit |
f00812 |
<BITEM_ITEM>[^\:]* {
|
|
Packit |
f00812 |
printf(" @b{%s}\n\n",check_and_convert(yytext));
|
|
Packit |
f00812 |
}
|
|
Packit |
f00812 |
<BITEM_ITEM>":" {
|
|
Packit |
f00812 |
statep--;
|
|
Packit |
f00812 |
BEGIN(states[statep]);
|
|
Packit |
f00812 |
}
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
/*
|
|
Packit |
f00812 |
* recreate @chapter, @section etc.
|
|
Packit |
f00812 |
*/
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
^:[^:]* {
|
|
Packit |
f00812 |
(void)check_and_convert(&yytext[1]);
|
|
Packit |
f00812 |
statep++;
|
|
Packit |
f00812 |
states[statep] = HEADING;
|
|
Packit |
f00812 |
BEGIN(HEADING);
|
|
Packit |
f00812 |
}
|
|
Packit |
f00812 |
<HEADING>:[^\n] {
|
|
Packit |
f00812 |
printf("@item @b{%s}\n",buffer);
|
|
Packit |
f00812 |
write_underline(strlen(buffer),6,'~');
|
|
Packit |
f00812 |
statep--;
|
|
Packit |
f00812 |
BEGIN(states[statep]);
|
|
Packit |
f00812 |
}
|
|
Packit |
f00812 |
<HEADING>:\n"*"* {
|
|
Packit |
f00812 |
if(need_closing == TRUE){
|
|
Packit |
f00812 |
printf("@end table\n\n\n");
|
|
Packit |
f00812 |
need_closing = FALSE;
|
|
Packit |
f00812 |
}
|
|
Packit |
f00812 |
printf("@chapter %s\n",buffer);
|
|
Packit |
f00812 |
write_underline(strlen(buffer),9,'*');
|
|
Packit |
f00812 |
statep--;
|
|
Packit |
f00812 |
BEGIN(states[statep]);
|
|
Packit |
f00812 |
}
|
|
Packit |
f00812 |
<HEADING>:\n"="* {
|
|
Packit |
f00812 |
if(need_closing == TRUE){
|
|
Packit |
f00812 |
printf("@end table\n\n\n");
|
|
Packit |
f00812 |
need_closing = FALSE;
|
|
Packit |
f00812 |
}
|
|
Packit |
f00812 |
printf("@section %s\n",buffer);
|
|
Packit |
f00812 |
write_underline(strlen(buffer),9,'=');
|
|
Packit |
f00812 |
statep--;
|
|
Packit |
f00812 |
BEGIN(states[statep]);
|
|
Packit |
f00812 |
}
|
|
Packit |
f00812 |
<HEADING>"@" printf("@@");
|
|
Packit |
f00812 |
<HEADING>:\n"-"* {
|
|
Packit |
f00812 |
if(need_closing == TRUE){
|
|
Packit |
f00812 |
printf("@end table\n\n\n");
|
|
Packit |
f00812 |
need_closing = FALSE;
|
|
Packit |
f00812 |
}
|
|
Packit |
f00812 |
printf("@subsection %s\n",buffer);
|
|
Packit |
f00812 |
write_underline(strlen(buffer),12,'-');
|
|
Packit |
f00812 |
statep--;
|
|
Packit |
f00812 |
BEGIN(states[statep]);
|
|
Packit |
f00812 |
}
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
/*
|
|
Packit |
f00812 |
* recreate @example text
|
|
Packit |
f00812 |
*/
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
^" " {
|
|
Packit |
f00812 |
printf("@example\n");
|
|
Packit |
f00812 |
statep++;
|
|
Packit |
f00812 |
states[statep] = EXAMPLE;
|
|
Packit |
f00812 |
BEGIN(EXAMPLE);
|
|
Packit |
f00812 |
}
|
|
Packit |
f00812 |
<EXAMPLE>^" "
|
|
Packit |
f00812 |
. ECHO;
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
%%
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
/*
|
|
Packit |
f00812 |
* initialise and go.
|
|
Packit |
f00812 |
*/
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
int main(int argc, char *argv[])
|
|
Packit |
f00812 |
{
|
|
Packit |
f00812 |
states[0] = INITIAL;
|
|
Packit |
f00812 |
statep = 0;
|
|
Packit |
f00812 |
print_header();
|
|
Packit |
f00812 |
yylex();
|
|
Packit |
f00812 |
print_trailer();
|
|
Packit |
f00812 |
return(0);
|
|
Packit |
f00812 |
}
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
|