|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T l
Length: 1803 (0x70b)
Types: TextFile
Names: »lexical.l«
└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987
└─⟦this⟧ »EUUGD18/General/Insult/lexical.l«
%{
/* RCS Info: $Revision: $ on $Date: $
* $Source: $
* Copyright (c) 1985 Wayne A. Christopher
* Permission is granted to do anything with this code except sell it
* or remove this message.
*
* The lexical analyzer for kafka.
*/
#include "y.tab.h"
char lookahead[100]; /* For pushback of characters. */
int nlk = 0; /* # characters pushed back. */
extern FILE *inp; /* The input file. */
extern int yylval;
%}
%%
\<[^ \t\n]*\> { /* A non-terminal. */
yytext[yyleng - 1] = '\0';
yylval = (int) (yytext + 1);
return (NONTERM);
}
[ \t\n]* { /* White space. */
}
^#.*$ { /* A comment. Ignore. */
}
[^ \"\t\n=\<\>;\{\}\%]* { /* An unquoted terminal string. */
yylval = (int) yytext;
return (TERM);
}
\"[^\"]*\" { /* A quoted terminal. */
yytext[yyleng - 1] = '\0';
yylval = (int) (yytext + 1);
return (TERM);
}
= { /* The rule operator. */
return (RULEOP);
}
^\%\% { /* The section seperator. */
return (SSEP);
}
^\%[A-Za-z].*$ { /* A kafka escape. */
yylval = (int) yytext[1];
return (KESC);
}
^\%\{ { /* Begin def section C code. */
return (COPEN);
}
^\%\} { /* End def section C code. */
return (CCLOSE);
}
\{ { /* Open brace. */
return (LBRACE);
}
\} { /* Close brace. */
return (RBRACE);
}
\; { /* Semicolon. */
return (SEMI);
}
%%
/* The redefined input and unput functions -- they must be usable by
* other routines.
*/
int lineno = 0;
char input()
{
int c;
if (nlk == 0) {
c = getc(inp);
if (c == '\n')
lineno++;
if (c == EOF)
return (0);
else
return (c);
} else {
c = lookahead[--nlk];
return (c);
}
}
unput(c)
char c;
{
lookahead[nlk++] = c;
return;
}
/* Don't need this thing... */
yywrap()
{
return (1);
}