|
|
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 p
Length: 6712 (0x1a38)
Types: TextFile
Names: »picl.l«
└─⟦060c9c824⟧ Bits:30007080 DKUUG TeX 2/12/89
└─⟦this⟧ »./tex82/TeXgraphics/transfig/pic2fig/picl.l«
%Start A str comment def sc br
%e 1300
%k 100
%a 1400
%o 1200
%p 4000
%n 600
%{
#undef YYLMAX
#define YYLMAX 400 /* Make input buffer bigger */
#undef input
#undef unput
#include <stdio.h>
#include <ctype.h>
#include "pic.h"
# include "picy.h"
extern float atof();
extern char *filename;
extern int synerr;
#define CADD cbuf[clen++]=yytext[0]; if(clen>=CBUFLEN-1) {yyerror("string too long", cbuf); BEGIN A;}
#define CBUFLEN 150
char cbuf[CBUFLEN];
int clen;
%}
A [a-zA-Z_]
B [a-zA-Z0-9_]
D [0-9]
WS [ \t]
%%
switch (yybgin-yysvec-1) { /* witchcraft */
case 0:
BEGIN A;
break;
case sc:
BEGIN A;
return('}');
case br:
BEGIN A;
return(']');
}
<A>{WS} ;
<A>"\\"\n ;
<A>\n { return(ST); }
<A>";" { return(ST); }
<A>"}" { BEGIN sc; return(ST); }
<A>"]" { BEGIN br; return(ST); }
<A>^".".* { if (yytext[1] == 'P' && (yytext[2] == 'E' || yytext[2] == 'F')) {
yylval.i = yytext[2];
return(EOF);
} else {
yylval.p = tostring(yytext);
return(TEX);
}
}
<A>print return(yylval.i = PRINT);
<A>box return(yylval.i = BOX);
<A>circle return(yylval.i = CIRCLE);
<A>arc return(yylval.i = ARC);
<A>ellipse return(yylval.i = ELLIPSE);
<A>arrow return(yylval.i = ARROW);
<A>spline return(yylval.i = SPLINE);
<A>line return(yylval.i = LINE);
<A>move return(yylval.i = MOVE);
<A>"[]" return(yylval.i = BLOCK);
<A>same return(SAME);
<A>between return(BETWEEN);
<A>and return(AND);
<A>of ;
<A>the ;
<A>way ;
<A>".e" { yylval.i = EAST; return(CORNER); }
<A>".east" { yylval.i = EAST; return(CORNER); }
<A>".r" { yylval.i = EAST; return(CORNER); }
<A>".right" { yylval.i = EAST; return(CORNER); }
<A>".w" { yylval.i = WEST; return(CORNER); }
<A>".west" { yylval.i = WEST; return(CORNER); }
<A>".l" { yylval.i = WEST; return(CORNER); }
<A>".left" { yylval.i = WEST; return(CORNER); }
<A>".n" { yylval.i = NORTH; return(CORNER); }
<A>".north" { yylval.i = NORTH; return(CORNER); }
<A>".t" { yylval.i = NORTH; return(CORNER); }
<A>".top" { yylval.i = NORTH; return(CORNER); }
<A>".s" { yylval.i = SOUTH; return(CORNER); }
<A>".south" { yylval.i = SOUTH; return(CORNER); }
<A>".b" { yylval.i = SOUTH; return(CORNER); }
<A>".bot" { yylval.i = SOUTH; return(CORNER); }
<A>".bottom" { yylval.i = SOUTH; return(CORNER); }
<A>".c" { yylval.i = CENTER; return(CORNER); }
<A>".center" { yylval.i = CENTER; return(CORNER); }
<A>".start" { yylval.i = START; return(CORNER); }
<A>".end" { yylval.i = END; return(CORNER); }
<A>".ne" { yylval.i = NE; return(CORNER); }
<A>"."upper" "*right { yylval.i = NE; return(CORNER); }
<A>".se" { yylval.i = SE; return(CORNER); }
<A>"."lower" "*right { yylval.i = SE; return(CORNER); }
<A>".nw" { yylval.i = NW; return(CORNER); }
<A>"."upper" "*left { yylval.i = NW; return(CORNER); }
<A>".sw" { yylval.i = SW; return(CORNER); }
<A>"."lower" "*left { yylval.i = SW; return(CORNER); }
<A>top" "+of { yylval.i = NORTH; return(CORNER); }
<A>north" "+of { yylval.i = NORTH; return(CORNER); }
<A>bottom" "+of { yylval.i = SOUTH; return(CORNER); }
<A>south" "+of { yylval.i = SOUTH; return(CORNER); }
<A>left" "+of { yylval.i = WEST; return(CORNER); }
<A>west" "+of { yylval.i = WEST; return(CORNER); }
<A>right" "+of { yylval.i = EAST; return(CORNER); }
<A>east" "+of { yylval.i = EAST; return(CORNER); }
<A>center" "+of { yylval.i = CENTER; return(CORNER); }
<A>start" "+of { yylval.i = START; return(CORNER); }
<A>end" "+of { yylval.i = END; return(CORNER); }
<A>upper" "+right" "+of { yylval.i = NE; return(CORNER); }
<A>upper" "+left" "+of { yylval.i = NW; return(CORNER); }
<A>lower" "+right" "+of { yylval.i = SE; return(CORNER); }
<A>lower" "+left" "+of { yylval.i = SW; return(CORNER); }
<A>height { yylval.i = HEIGHT; return(ATTR); }
<A>ht { yylval.i = HEIGHT; return(ATTR); }
<A>wid { yylval.i = WIDTH; return(ATTR); }
<A>width { yylval.i = WIDTH; return(ATTR); }
<A>rad { yylval.i = RADIUS; return(ATTR); }
<A>radius { yylval.i = RADIUS; return(ATTR); }
<A>diam { yylval.i = DIAMETER; return(ATTR); }
<A>diameter { yylval.i = DIAMETER; return(ATTR); }
<A>size { yylval.i = SIZE; return(ATTR); }
<A>left { yylval.i = LEFT; return(DIR); }
<A>right { yylval.i = RIGHT; return(DIR); }
<A>up { yylval.i = UP; return(DIR); }
<A>down { yylval.i = DOWN; return(DIR); }
<A>cw { yylval.i = CW; return(ATTR); }
<A>clockwise { yylval.i = CW; return(ATTR); }
<A>ccw { yylval.i = CCW; return(ATTR); }
<A>then { yylval.i = THEN; return(ATTR); }
<A>invis { yylval.i = INVIS; return(ATTR); }
<A>invisible { yylval.i = INVIS; return(ATTR); }
<A>dot return(yylval.i = DOT);
<A>dotted return(yylval.i = DOT);
<A>dash return(yylval.i = DASH);
<A>dashed return(yylval.i = DASH);
<A>chop return(yylval.i = CHOP);
<A>white return(yylval.i = WHITE);
<A>shaded return(yylval.i = SHADED);
<A>spread return(yylval.i = SPREAD);
<A>fill return(yylval.i = FILL);
<A>ljust return(yylval.i = LJUST);
<A>center return(yylval.i = CENTER);
<A>rjust return(yylval.i = RJUST);
<A>above return(yylval.i = ABOVE);
<A>below return(yylval.i = BELOW);
<A>"<-" { yylval.i = HEAD1; return(HEAD); }
<A>"->" { yylval.i = HEAD2; return(HEAD); }
<A>"<->" { yylval.i = HEAD12; return(HEAD); }
<A>".x" return(yylval.i = DOTX);
<A>".y" return(yylval.i = DOTY);
<A>".ht" return(yylval.i = DOTHT);
<A>".height" return(yylval.i = DOTHT);
<A>".wid" return(yylval.i = DOTWID);
<A>".width" return(yylval.i = DOTWID);
<A>".rad" return(yylval.i = DOTRAD);
<A>".radius" return(yylval.i = DOTRAD);
<A>from return(yylval.i = FROM);
<A>to return(yylval.i = TO);
<A>at return(yylval.i = AT);
<A>by return(yylval.i = BY);
<A>with return(yylval.i = WITH);
<A>last return(yylval.i = LAST);
<A>Here return(yylval.i = HERE);
<A>define{WS}+ { BEGIN def; }
<def>{A}{B}* { definition(yytext); BEGIN A; }
<A>first { yylval.i = 1; return(NTH); }
<A>{D}+(th|nd|rd|st) { yylval.i = atoi(yytext); return(NTH); }
<A>({D}+("."?){D}*|"."{D}+)i? { yylval.f = atof(yytext); return(NUMBER); }
<A>{A}{B}* {
int c;
struct symtab *p;
p = lookup(yytext);
if (p != NULL && p->s_type == DEFNAME) {
c = input();
unput(c);
if (c == '(') /* it's name(...) */
dodef(p);
else { /* no argument list */
pbstr(p->s_val);
dprintf("pushing back `%s'\n", p->s_val);
}
} else if (islower(yytext[0])) {
yylval.p = tostring(yytext);
return(VARNAME);
} else {
yylval.p = tostring(yytext);
return(PLACENAME);
}
}
<A>\" { BEGIN str; clen=0; }
<A># { BEGIN comment; }
<comment>\n { BEGIN A; return(ST); }
<comment>. ;
<A>. { yylval.i = yytext[0]; return(yytext[0]); }
<str>\" { BEGIN A; cbuf[clen]=0; yylval.p = tostring(cbuf); return(TEXT); }
<str>\n { yyerror("newline in string"); BEGIN A; return(ST); }
<str>. { CADD; }
%%