Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: master
Fetching contributors…

Cannot retrieve contributors at this time

1555 lines (1450 sloc) 53.373 kb
/* A recursive-descent parser generated by greg 0.4.3 */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct _GREG;
#define YYRULECOUNT 37
# include "greg.h"
# include <stdio.h>
# include <stdlib.h>
# include <unistd.h>
# include <string.h>
# include <libgen.h>
# include <assert.h>
typedef struct Header Header;
struct Header {
char *text;
Header *next;
};
FILE *input= 0;
int verboseFlag= 0;
static int lineNumber= 0;
static char *fileName= 0;
static char *trailer= 0;
static Header *headers= 0;
void makeHeader(char *text);
void makeTrailer(char *text);
void yyerror(struct _GREG *, char *message);
# define YY_INPUT(buf, result, max) \
{ \
int c= getc(input); \
if ('\n' == c || '\r' == c) ++lineNumber; \
result= (EOF == c) ? 0 : (*(buf)= c, 1); \
}
# define YY_LOCAL(T) static T
# define YY_RULE(T) static T
#ifndef YY_ALLOC
#define YY_ALLOC(N, D) malloc(N)
#endif
#ifndef YY_CALLOC
#define YY_CALLOC(N, S, D) calloc(N, S)
#endif
#ifndef YY_REALLOC
#define YY_REALLOC(B, N, D) realloc(B, N)
#endif
#ifndef YY_FREE
#define YY_FREE free
#endif
#ifndef YY_LOCAL
#define YY_LOCAL(T) static T
#endif
#ifndef YY_ACTION
#define YY_ACTION(T) static T
#endif
#ifndef YY_RULE
#define YY_RULE(T) static T
#endif
#ifndef YY_PARSE
#define YY_PARSE(T) T
#endif
#ifndef YY_NAME
#define YY_NAME(N) yy##N
#endif
#ifndef YY_INPUT
#define YY_INPUT(buf, result, max_size) \
{ \
int yyc= getchar(); \
result= (EOF == yyc) ? 0 : (*(buf)= yyc, 1); \
yyprintf((stderr, "<%c>", yyc)); \
}
#endif
#ifndef YY_BEGIN
#define YY_BEGIN ( G->begin= G->pos, 1)
#endif
#ifndef YY_END
#define YY_END ( G->end= G->pos, 1)
#endif
#ifdef YY_DEBUG
# define yyprintf(args) fprintf args
#else
# define yyprintf(args)
#endif
#ifndef YYSTYPE
#define YYSTYPE int
#endif
#ifndef YY_XTYPE
#define YY_XTYPE void *
#endif
#ifndef YY_XVAR
#define YY_XVAR yyxvar
#endif
#ifndef YY_STACK_SIZE
#define YY_STACK_SIZE 128
#endif
#ifndef YY_BUFFER_START_SIZE
#define YY_BUFFER_START_SIZE 1024
#endif
#ifndef YY_PART
#define yydata G->data
#define yy G->ss
struct _yythunk; // forward declaration
typedef void (*yyaction)(struct _GREG *G, char *yytext, int yyleng, struct _yythunk *thunkpos, YY_XTYPE YY_XVAR);
typedef struct _yythunk { int begin, end; yyaction action; struct _yythunk *next; } yythunk;
typedef struct _GREG {
char *buf;
int buflen;
int offset;
int pos;
int limit;
char *text;
int textlen;
int begin;
int end;
yythunk *thunks;
int thunkslen;
int thunkpos;
YYSTYPE ss;
YYSTYPE *val;
YYSTYPE *vals;
int valslen;
YY_XTYPE data;
char **memo;
int memolen;
} GREG;
YY_LOCAL(int) yyrefill(GREG *G)
{
int yyn;
YY_XTYPE YY_XVAR = (YY_XTYPE) G->data;
while (G->buflen - G->pos < 512)
{
G->buflen *= 2;
G->buf= YY_REALLOC(G->buf, G->buflen, G->data);
#ifdef YY_MEMOIZATION
G->memo = YY_REALLOC(G->memo, sizeof(char*) * G->buflen, NULL);
memset(G->memo+G->memolen, 0, sizeof(char*) * (G->buflen - G->memolen));
G->memolen = G->buflen;
#endif
}
YY_INPUT((G->buf + G->pos), yyn, (G->buflen - G->pos));
if (!yyn) return 0;
G->limit += yyn;
return 1;
}
YY_LOCAL(int) yymatchDot(GREG *G)
{
if (G->pos >= G->limit && !yyrefill(G)) return 0;
++G->pos;
return 1;
}
YY_LOCAL(int) yymatchChar(GREG *G, int c)
{
if (G->pos >= G->limit && !yyrefill(G)) return 0;
if ((unsigned char)G->buf[G->pos] == c)
{
++G->pos;
yyprintf((stderr, " ok yymatchChar(%c) @ %s\n", c, G->buf+G->pos));
return 1;
}
yyprintf((stderr, " fail yymatchChar(%c) @ %s\n", c, G->buf+G->pos));
return 0;
}
YY_LOCAL(int) yymatchString(GREG *G, char *s)
{
int yysav= G->pos;
while (*s)
{
if (G->pos >= G->limit && !yyrefill(G)) return 0;
if (G->buf[G->pos] != *s)
{
G->pos= yysav;
return 0;
}
++s;
++G->pos;
}
return 1;
}
YY_LOCAL(int) yymatchClass(GREG *G, unsigned char *bits)
{
int c;
if (G->pos >= G->limit && !yyrefill(G)) return 0;
c= (unsigned char)G->buf[G->pos];
if (bits[c >> 3] & (1 << (c & 7)))
{
++G->pos;
yyprintf((stderr, " ok yymatchClass @ %s\n", G->buf+G->pos));
return 1;
}
yyprintf((stderr, " fail yymatchClass @ %s\n", G->buf+G->pos));
return 0;
}
YY_LOCAL(void) yyDo(GREG *G, yyaction action, int begin, int end)
{
while (G->thunkpos >= G->thunkslen)
{
G->thunkslen *= 2;
G->thunks= YY_REALLOC(G->thunks, sizeof(yythunk) * G->thunkslen, G->data);
}
G->thunks[G->thunkpos].begin= begin;
G->thunks[G->thunkpos].end= end;
G->thunks[G->thunkpos].action= action;
++G->thunkpos;
}
YY_LOCAL(int) yyText(GREG *G, int begin, int end)
{
int yyleng= end - begin;
if (yyleng <= 0)
yyleng= 0;
else
{
while (G->textlen < (yyleng - 1))
{
G->textlen *= 2;
G->text= YY_REALLOC(G->text, G->textlen, G->data);
}
memcpy(G->text, G->buf + begin, yyleng);
}
G->text[yyleng]= '\0';
return yyleng;
}
YY_LOCAL(void) yyDone(GREG *G)
{
int pos;
for (pos= 0; pos < G->thunkpos; ++pos)
{
yythunk *thunk= &G->thunks[pos];
int yyleng= thunk->end ? yyText(G, thunk->begin, thunk->end) : thunk->begin;
yyprintf((stderr, "DO [%d] %p %s\n", pos, thunk->action, G->text));
thunk->action(G, G->text, yyleng, thunk, G->data);
}
G->thunkpos= 0;
}
YY_LOCAL(void) yyCommit(GREG *G)
{
if ((G->limit -= G->pos))
{
memmove(G->buf, G->buf + G->pos, G->limit);
}
#ifdef YY_MEMOIZATION
{
int i;
for (i = 0; i < G->memolen; i++) {
if (G->memo[i]) memset(G->memo[i], 0, YYRULECOUNT);
}
}
#endif
G->offset += G->pos;
G->begin -= G->pos;
G->end -= G->pos;
G->pos= G->thunkpos= 0;
}
YY_LOCAL(int) yyAccept(GREG *G, int tp0)
{
if (tp0)
{
fprintf(stderr, "accept denied at %d\n", tp0);
return 0;
}
else
{
yyDone(G);
yyCommit(G);
}
return 1;
}
YY_LOCAL(void) yyPush(GREG *G, char *text, int count, yythunk *thunk, YY_XTYPE YY_XVAR) { G->val += count; }
YY_LOCAL(void) yyPop(GREG *G, char *text, int count, yythunk *thunk, YY_XTYPE YY_XVAR) { G->val -= count; }
YY_LOCAL(void) yySet(GREG *G, char *text, int count, yythunk *thunk, YY_XTYPE YY_XVAR) { G->val[count]= G->ss; }
#endif /* YY_PART */
#define YYACCEPT yyAccept(G, yythunkpos0)
#ifdef YY_MEMOIZATION
int
memo(struct _GREG *G, int pos, int rule_id)
{
return ((G->memo != NULL) && (G->memo[pos] != NULL) && G->memo[pos][rule_id-1]);
}
void
set_memo(struct _GREG *G, int pos, int rule_id)
{
if (G->memo == NULL) {
return;
}
if (G->memo[pos] == NULL) {
G->memo[pos] = malloc(sizeof(char*) * YYRULECOUNT);
memset(G->memo[pos], 0, sizeof(char*) * YYRULECOUNT);
}
G->memo[pos][rule_id-1] = 1;
}
#endif
YY_RULE(int) yy_end_of_line(GREG *G); /* 37 */
YY_RULE(int) yy_comment(GREG *G); /* 36 */
YY_RULE(int) yy_space(GREG *G); /* 35 */
YY_RULE(int) yy_braces(GREG *G); /* 34 */
YY_RULE(int) yy_range(GREG *G); /* 33 */
YY_RULE(int) yy_char(GREG *G); /* 32 */
YY_RULE(int) yy_errblock(GREG *G); /* 31 */
YY_RULE(int) yy_END(GREG *G); /* 30 */
YY_RULE(int) yy_BEGIN(GREG *G); /* 29 */
YY_RULE(int) yy_DOT(GREG *G); /* 28 */
YY_RULE(int) yy_class(GREG *G); /* 27 */
YY_RULE(int) yy_literal(GREG *G); /* 26 */
YY_RULE(int) yy_CLOSE(GREG *G); /* 25 */
YY_RULE(int) yy_OPEN(GREG *G); /* 24 */
YY_RULE(int) yy_COLON(GREG *G); /* 23 */
YY_RULE(int) yy_PLUS(GREG *G); /* 22 */
YY_RULE(int) yy_STAR(GREG *G); /* 21 */
YY_RULE(int) yy_QUESTION(GREG *G); /* 20 */
YY_RULE(int) yy_primary(GREG *G); /* 19 */
YY_RULE(int) yy_NOT(GREG *G); /* 18 */
YY_RULE(int) yy_suffix(GREG *G); /* 17 */
YY_RULE(int) yy_action(GREG *G); /* 16 */
YY_RULE(int) yy_AND(GREG *G); /* 15 */
YY_RULE(int) yy_prefix(GREG *G); /* 14 */
YY_RULE(int) yy_BAR(GREG *G); /* 13 */
YY_RULE(int) yy_sequence(GREG *G); /* 12 */
YY_RULE(int) yy_SEMICOLON(GREG *G); /* 11 */
YY_RULE(int) yy_expression(GREG *G); /* 10 */
YY_RULE(int) yy_EQUAL(GREG *G); /* 9 */
YY_RULE(int) yy_identifier(GREG *G); /* 8 */
YY_RULE(int) yy_RPERCENT(GREG *G); /* 7 */
YY_RULE(int) yy_end_of_file(GREG *G); /* 6 */
YY_RULE(int) yy_trailer(GREG *G); /* 5 */
YY_RULE(int) yy_definition(GREG *G); /* 4 */
YY_RULE(int) yy_declaration(GREG *G); /* 3 */
YY_RULE(int) yy__(GREG *G); /* 2 */
YY_RULE(int) yy_grammar(GREG *G); /* 1 */
YY_ACTION(void) yy_10_primary(GREG *G, char *yytext, int yyleng, yythunk *thunk, YY_XTYPE YY_XVAR)
{
yyprintf((stderr, "do yy_10_primary\n"));
Node *node = pop(); ((struct Any *) node)->errblock = strdup(yytext); push(node); ;
}
YY_ACTION(void) yy_9_primary(GREG *G, char *yytext, int yyleng, yythunk *thunk, YY_XTYPE YY_XVAR)
{
yyprintf((stderr, "do yy_9_primary\n"));
push(makePredicate("YY_END")); ;
}
YY_ACTION(void) yy_8_primary(GREG *G, char *yytext, int yyleng, yythunk *thunk, YY_XTYPE YY_XVAR)
{
yyprintf((stderr, "do yy_8_primary\n"));
push(makePredicate("YY_BEGIN")); ;
}
YY_ACTION(void) yy_7_primary(GREG *G, char *yytext, int yyleng, yythunk *thunk, YY_XTYPE YY_XVAR)
{
yyprintf((stderr, "do yy_7_primary\n"));
push(makeAction(yytext)); ;
}
YY_ACTION(void) yy_6_primary(GREG *G, char *yytext, int yyleng, yythunk *thunk, YY_XTYPE YY_XVAR)
{
yyprintf((stderr, "do yy_6_primary\n"));
push(makeDot()); ;
}
YY_ACTION(void) yy_5_primary(GREG *G, char *yytext, int yyleng, yythunk *thunk, YY_XTYPE YY_XVAR)
{
yyprintf((stderr, "do yy_5_primary\n"));
push(makeClass(yytext)); ;
}
YY_ACTION(void) yy_4_primary(GREG *G, char *yytext, int yyleng, yythunk *thunk, YY_XTYPE YY_XVAR)
{
yyprintf((stderr, "do yy_4_primary\n"));
push(makeString(yytext)); ;
}
YY_ACTION(void) yy_3_primary(GREG *G, char *yytext, int yyleng, yythunk *thunk, YY_XTYPE YY_XVAR)
{
yyprintf((stderr, "do yy_3_primary\n"));
push(makeName(findRule(yytext))); ;
}
YY_ACTION(void) yy_2_primary(GREG *G, char *yytext, int yyleng, yythunk *thunk, YY_XTYPE YY_XVAR)
{
yyprintf((stderr, "do yy_2_primary\n"));
Node *name= makeName(findRule(yytext)); name->name.variable= pop(); push(name); ;
}
YY_ACTION(void) yy_1_primary(GREG *G, char *yytext, int yyleng, yythunk *thunk, YY_XTYPE YY_XVAR)
{
yyprintf((stderr, "do yy_1_primary\n"));
push(makeVariable(yytext)); ;
}
YY_ACTION(void) yy_3_suffix(GREG *G, char *yytext, int yyleng, yythunk *thunk, YY_XTYPE YY_XVAR)
{
yyprintf((stderr, "do yy_3_suffix\n"));
push(makePlus (pop())); ;
}
YY_ACTION(void) yy_2_suffix(GREG *G, char *yytext, int yyleng, yythunk *thunk, YY_XTYPE YY_XVAR)
{
yyprintf((stderr, "do yy_2_suffix\n"));
push(makeStar (pop())); ;
}
YY_ACTION(void) yy_1_suffix(GREG *G, char *yytext, int yyleng, yythunk *thunk, YY_XTYPE YY_XVAR)
{
yyprintf((stderr, "do yy_1_suffix\n"));
push(makeQuery(pop())); ;
}
YY_ACTION(void) yy_3_prefix(GREG *G, char *yytext, int yyleng, yythunk *thunk, YY_XTYPE YY_XVAR)
{
yyprintf((stderr, "do yy_3_prefix\n"));
push(makePeekNot(pop())); ;
}
YY_ACTION(void) yy_2_prefix(GREG *G, char *yytext, int yyleng, yythunk *thunk, YY_XTYPE YY_XVAR)
{
yyprintf((stderr, "do yy_2_prefix\n"));
push(makePeekFor(pop())); ;
}
YY_ACTION(void) yy_1_prefix(GREG *G, char *yytext, int yyleng, yythunk *thunk, YY_XTYPE YY_XVAR)
{
yyprintf((stderr, "do yy_1_prefix\n"));
push(makePredicate(yytext)); ;
}
YY_ACTION(void) yy_1_sequence(GREG *G, char *yytext, int yyleng, yythunk *thunk, YY_XTYPE YY_XVAR)
{
yyprintf((stderr, "do yy_1_sequence\n"));
Node *f= pop(); push(Sequence_append(pop(), f)); ;
}
YY_ACTION(void) yy_1_expression(GREG *G, char *yytext, int yyleng, yythunk *thunk, YY_XTYPE YY_XVAR)
{
yyprintf((stderr, "do yy_1_expression\n"));
Node *f= pop(); push(Alternate_append(pop(), f)); ;
}
YY_ACTION(void) yy_2_definition(GREG *G, char *yytext, int yyleng, yythunk *thunk, YY_XTYPE YY_XVAR)
{
yyprintf((stderr, "do yy_2_definition\n"));
Node *e= pop(); Rule_setExpression(pop(), e); ;
}
YY_ACTION(void) yy_1_definition(GREG *G, char *yytext, int yyleng, yythunk *thunk, YY_XTYPE YY_XVAR)
{
yyprintf((stderr, "do yy_1_definition\n"));
if (push(beginRule(findRule(yytext)))->rule.expression)
fprintf(stderr, "rule '%s' redefined\n", yytext); ;
}
YY_ACTION(void) yy_1_trailer(GREG *G, char *yytext, int yyleng, yythunk *thunk, YY_XTYPE YY_XVAR)
{
yyprintf((stderr, "do yy_1_trailer\n"));
makeTrailer(yytext); ;
}
YY_ACTION(void) yy_1_declaration(GREG *G, char *yytext, int yyleng, yythunk *thunk, YY_XTYPE YY_XVAR)
{
yyprintf((stderr, "do yy_1_declaration\n"));
makeHeader(yytext); ;
}
YY_RULE(int) yy_end_of_line(GREG *G)
{ int yypos0= G->pos, yythunkpos0= G->thunkpos;
#ifdef YY_MEMOIZATION
if(memo(G, yypos0, 37)) {
yyprintf((stderr, " fail memo %s @ %s\n", "end_of_line", G->buf+G->pos));
return 0;
}
#endif
yyprintf((stderr, "%s\n", "end_of_line"));
{ int yypos2= G->pos, yythunkpos2= G->thunkpos; if (!yymatchString(G, "\r\n")) goto l3; goto l2;
l3:; G->pos= yypos2; G->thunkpos= yythunkpos2; if (!yymatchChar(G, '\n')) goto l4; goto l2;
l4:; G->pos= yypos2; G->thunkpos= yythunkpos2; if (!yymatchChar(G, '\r')) goto l1;
}
l2:;
yyprintf((stderr, " ok %s @ %s\n", "end_of_line", G->buf+G->pos));
return 1;
l1:; G->pos= yypos0; G->thunkpos= yythunkpos0;
#ifdef YY_MEMOIZATION
set_memo(G, yypos0, 37);
#endif
yyprintf((stderr, " fail %s @ %s\n", "end_of_line", G->buf+G->pos));
return 0;
}
YY_RULE(int) yy_comment(GREG *G)
{ int yypos0= G->pos, yythunkpos0= G->thunkpos;
#ifdef YY_MEMOIZATION
if(memo(G, yypos0, 36)) {
yyprintf((stderr, " fail memo %s @ %s\n", "comment", G->buf+G->pos));
return 0;
}
#endif
yyprintf((stderr, "%s\n", "comment")); if (!yymatchChar(G, '#')) goto l5;
l6:;
{ int yypos7= G->pos, yythunkpos7= G->thunkpos;
{ int yypos8= G->pos, yythunkpos8= G->thunkpos; if (!yy_end_of_line(G)) { goto l8; } goto l7;
l8:; G->pos= yypos8; G->thunkpos= yythunkpos8;
} if (!yymatchDot(G)) goto l7; goto l6;
l7:; G->pos= yypos7; G->thunkpos= yythunkpos7;
} if (!yy_end_of_line(G)) { goto l5; }
yyprintf((stderr, " ok %s @ %s\n", "comment", G->buf+G->pos));
return 1;
l5:; G->pos= yypos0; G->thunkpos= yythunkpos0;
#ifdef YY_MEMOIZATION
set_memo(G, yypos0, 36);
#endif
yyprintf((stderr, " fail %s @ %s\n", "comment", G->buf+G->pos));
return 0;
}
YY_RULE(int) yy_space(GREG *G)
{ int yypos0= G->pos, yythunkpos0= G->thunkpos;
#ifdef YY_MEMOIZATION
if(memo(G, yypos0, 35)) {
yyprintf((stderr, " fail memo %s @ %s\n", "space", G->buf+G->pos));
return 0;
}
#endif
yyprintf((stderr, "%s\n", "space"));
{ int yypos10= G->pos, yythunkpos10= G->thunkpos; if (!yymatchChar(G, ' ')) goto l11; goto l10;
l11:; G->pos= yypos10; G->thunkpos= yythunkpos10; if (!yymatchChar(G, '\t')) goto l12; goto l10;
l12:; G->pos= yypos10; G->thunkpos= yythunkpos10; if (!yy_end_of_line(G)) { goto l9; }
}
l10:;
yyprintf((stderr, " ok %s @ %s\n", "space", G->buf+G->pos));
return 1;
l9:; G->pos= yypos0; G->thunkpos= yythunkpos0;
#ifdef YY_MEMOIZATION
set_memo(G, yypos0, 35);
#endif
yyprintf((stderr, " fail %s @ %s\n", "space", G->buf+G->pos));
return 0;
}
YY_RULE(int) yy_braces(GREG *G)
{ int yypos0= G->pos, yythunkpos0= G->thunkpos;
#ifdef YY_MEMOIZATION
if(memo(G, yypos0, 34)) {
yyprintf((stderr, " fail memo %s @ %s\n", "braces", G->buf+G->pos));
return 0;
}
#endif
yyprintf((stderr, "%s\n", "braces"));
{ int yypos14= G->pos, yythunkpos14= G->thunkpos; if (!yymatchChar(G, '{')) goto l15;
l16:;
{ int yypos17= G->pos, yythunkpos17= G->thunkpos;
{ int yypos18= G->pos, yythunkpos18= G->thunkpos; if (!yymatchChar(G, '}')) goto l18; goto l17;
l18:; G->pos= yypos18; G->thunkpos= yythunkpos18;
} if (!yymatchDot(G)) goto l17; goto l16;
l17:; G->pos= yypos17; G->thunkpos= yythunkpos17;
} if (!yymatchChar(G, '}')) goto l15; goto l14;
l15:; G->pos= yypos14; G->thunkpos= yythunkpos14;
{ int yypos19= G->pos, yythunkpos19= G->thunkpos; if (!yymatchChar(G, '}')) goto l19; goto l13;
l19:; G->pos= yypos19; G->thunkpos= yythunkpos19;
} if (!yymatchDot(G)) goto l13;
}
l14:;
yyprintf((stderr, " ok %s @ %s\n", "braces", G->buf+G->pos));
return 1;
l13:; G->pos= yypos0; G->thunkpos= yythunkpos0;
#ifdef YY_MEMOIZATION
set_memo(G, yypos0, 34);
#endif
yyprintf((stderr, " fail %s @ %s\n", "braces", G->buf+G->pos));
return 0;
}
YY_RULE(int) yy_range(GREG *G)
{ int yypos0= G->pos, yythunkpos0= G->thunkpos;
#ifdef YY_MEMOIZATION
if(memo(G, yypos0, 33)) {
yyprintf((stderr, " fail memo %s @ %s\n", "range", G->buf+G->pos));
return 0;
}
#endif
yyprintf((stderr, "%s\n", "range"));
{ int yypos21= G->pos, yythunkpos21= G->thunkpos; if (!yy_char(G)) { goto l22; } if (!yymatchChar(G, '-')) goto l22; if (!yy_char(G)) { goto l22; } goto l21;
l22:; G->pos= yypos21; G->thunkpos= yythunkpos21; if (!yy_char(G)) { goto l20; }
}
l21:;
yyprintf((stderr, " ok %s @ %s\n", "range", G->buf+G->pos));
return 1;
l20:; G->pos= yypos0; G->thunkpos= yythunkpos0;
#ifdef YY_MEMOIZATION
set_memo(G, yypos0, 33);
#endif
yyprintf((stderr, " fail %s @ %s\n", "range", G->buf+G->pos));
return 0;
}
YY_RULE(int) yy_char(GREG *G)
{ int yypos0= G->pos, yythunkpos0= G->thunkpos;
#ifdef YY_MEMOIZATION
if(memo(G, yypos0, 32)) {
yyprintf((stderr, " fail memo %s @ %s\n", "char", G->buf+G->pos));
return 0;
}
#endif
yyprintf((stderr, "%s\n", "char"));
{ int yypos24= G->pos, yythunkpos24= G->thunkpos; if (!yymatchChar(G, '\\')) goto l25; if (!yymatchClass(G, (unsigned char *)"\000\000\000\000\204\000\000\000\000\000\000\070\146\100\124\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000")) goto l25; goto l24;
l25:; G->pos= yypos24; G->thunkpos= yythunkpos24; if (!yymatchChar(G, '\\')) goto l26; if (!yymatchClass(G, (unsigned char *)"\000\000\000\000\000\000\017\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000")) goto l26; if (!yymatchClass(G, (unsigned char *)"\000\000\000\000\000\000\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000")) goto l26; if (!yymatchClass(G, (unsigned char *)"\000\000\000\000\000\000\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000")) goto l26; goto l24;
l26:; G->pos= yypos24; G->thunkpos= yythunkpos24; if (!yymatchChar(G, '\\')) goto l27; if (!yymatchClass(G, (unsigned char *)"\000\000\000\000\000\000\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000")) goto l27;
{ int yypos28= G->pos, yythunkpos28= G->thunkpos; if (!yymatchClass(G, (unsigned char *)"\000\000\000\000\000\000\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000")) goto l28; goto l29;
l28:; G->pos= yypos28; G->thunkpos= yythunkpos28;
}
l29:; goto l24;
l27:; G->pos= yypos24; G->thunkpos= yythunkpos24;
{ int yypos30= G->pos, yythunkpos30= G->thunkpos; if (!yymatchChar(G, '\\')) goto l30; goto l23;
l30:; G->pos= yypos30; G->thunkpos= yythunkpos30;
} if (!yymatchDot(G)) goto l23;
}
l24:;
yyprintf((stderr, " ok %s @ %s\n", "char", G->buf+G->pos));
return 1;
l23:; G->pos= yypos0; G->thunkpos= yythunkpos0;
#ifdef YY_MEMOIZATION
set_memo(G, yypos0, 32);
#endif
yyprintf((stderr, " fail %s @ %s\n", "char", G->buf+G->pos));
return 0;
}
YY_RULE(int) yy_errblock(GREG *G)
{ int yypos0= G->pos, yythunkpos0= G->thunkpos;
#ifdef YY_MEMOIZATION
if(memo(G, yypos0, 31)) {
yyprintf((stderr, " fail memo %s @ %s\n", "errblock", G->buf+G->pos));
return 0;
}
#endif
yyprintf((stderr, "%s\n", "errblock")); if (!yymatchString(G, "~{")) goto l31; yyText(G, G->begin, G->end); if (!(YY_BEGIN)) goto l31;
l32:;
{ int yypos33= G->pos, yythunkpos33= G->thunkpos; if (!yy_braces(G)) { goto l33; } goto l32;
l33:; G->pos= yypos33; G->thunkpos= yythunkpos33;
} yyText(G, G->begin, G->end); if (!(YY_END)) goto l31; if (!yymatchChar(G, '}')) goto l31; if (!yy__(G)) { goto l31; }
yyprintf((stderr, " ok %s @ %s\n", "errblock", G->buf+G->pos));
return 1;
l31:; G->pos= yypos0; G->thunkpos= yythunkpos0;
#ifdef YY_MEMOIZATION
set_memo(G, yypos0, 31);
#endif
yyprintf((stderr, " fail %s @ %s\n", "errblock", G->buf+G->pos));
return 0;
}
YY_RULE(int) yy_END(GREG *G)
{ int yypos0= G->pos, yythunkpos0= G->thunkpos;
#ifdef YY_MEMOIZATION
if(memo(G, yypos0, 30)) {
yyprintf((stderr, " fail memo %s @ %s\n", "END", G->buf+G->pos));
return 0;
}
#endif
yyprintf((stderr, "%s\n", "END")); if (!yymatchChar(G, '>')) goto l34; if (!yy__(G)) { goto l34; }
yyprintf((stderr, " ok %s @ %s\n", "END", G->buf+G->pos));
return 1;
l34:; G->pos= yypos0; G->thunkpos= yythunkpos0;
#ifdef YY_MEMOIZATION
set_memo(G, yypos0, 30);
#endif
yyprintf((stderr, " fail %s @ %s\n", "END", G->buf+G->pos));
return 0;
}
YY_RULE(int) yy_BEGIN(GREG *G)
{ int yypos0= G->pos, yythunkpos0= G->thunkpos;
#ifdef YY_MEMOIZATION
if(memo(G, yypos0, 29)) {
yyprintf((stderr, " fail memo %s @ %s\n", "BEGIN", G->buf+G->pos));
return 0;
}
#endif
yyprintf((stderr, "%s\n", "BEGIN")); if (!yymatchChar(G, '<')) goto l35; if (!yy__(G)) { goto l35; }
yyprintf((stderr, " ok %s @ %s\n", "BEGIN", G->buf+G->pos));
return 1;
l35:; G->pos= yypos0; G->thunkpos= yythunkpos0;
#ifdef YY_MEMOIZATION
set_memo(G, yypos0, 29);
#endif
yyprintf((stderr, " fail %s @ %s\n", "BEGIN", G->buf+G->pos));
return 0;
}
YY_RULE(int) yy_DOT(GREG *G)
{ int yypos0= G->pos, yythunkpos0= G->thunkpos;
#ifdef YY_MEMOIZATION
if(memo(G, yypos0, 28)) {
yyprintf((stderr, " fail memo %s @ %s\n", "DOT", G->buf+G->pos));
return 0;
}
#endif
yyprintf((stderr, "%s\n", "DOT")); if (!yymatchChar(G, '.')) goto l36; if (!yy__(G)) { goto l36; }
yyprintf((stderr, " ok %s @ %s\n", "DOT", G->buf+G->pos));
return 1;
l36:; G->pos= yypos0; G->thunkpos= yythunkpos0;
#ifdef YY_MEMOIZATION
set_memo(G, yypos0, 28);
#endif
yyprintf((stderr, " fail %s @ %s\n", "DOT", G->buf+G->pos));
return 0;
}
YY_RULE(int) yy_class(GREG *G)
{ int yypos0= G->pos, yythunkpos0= G->thunkpos;
#ifdef YY_MEMOIZATION
if(memo(G, yypos0, 27)) {
yyprintf((stderr, " fail memo %s @ %s\n", "class", G->buf+G->pos));
return 0;
}
#endif
yyprintf((stderr, "%s\n", "class")); if (!yymatchChar(G, '[')) goto l37; yyText(G, G->begin, G->end); if (!(YY_BEGIN)) goto l37;
l38:;
{ int yypos39= G->pos, yythunkpos39= G->thunkpos;
{ int yypos40= G->pos, yythunkpos40= G->thunkpos; if (!yymatchChar(G, ']')) goto l40; goto l39;
l40:; G->pos= yypos40; G->thunkpos= yythunkpos40;
} if (!yy_range(G)) { goto l39; } goto l38;
l39:; G->pos= yypos39; G->thunkpos= yythunkpos39;
} yyText(G, G->begin, G->end); if (!(YY_END)) goto l37; if (!yymatchChar(G, ']')) goto l37; if (!yy__(G)) { goto l37; }
yyprintf((stderr, " ok %s @ %s\n", "class", G->buf+G->pos));
return 1;
l37:; G->pos= yypos0; G->thunkpos= yythunkpos0;
#ifdef YY_MEMOIZATION
set_memo(G, yypos0, 27);
#endif
yyprintf((stderr, " fail %s @ %s\n", "class", G->buf+G->pos));
return 0;
}
YY_RULE(int) yy_literal(GREG *G)
{ int yypos0= G->pos, yythunkpos0= G->thunkpos;
#ifdef YY_MEMOIZATION
if(memo(G, yypos0, 26)) {
yyprintf((stderr, " fail memo %s @ %s\n", "literal", G->buf+G->pos));
return 0;
}
#endif
yyprintf((stderr, "%s\n", "literal"));
{ int yypos42= G->pos, yythunkpos42= G->thunkpos; if (!yymatchClass(G, (unsigned char *)"\000\000\000\000\200\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000")) goto l43; yyText(G, G->begin, G->end); if (!(YY_BEGIN)) goto l43;
l44:;
{ int yypos45= G->pos, yythunkpos45= G->thunkpos;
{ int yypos46= G->pos, yythunkpos46= G->thunkpos; if (!yymatchClass(G, (unsigned char *)"\000\000\000\000\200\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000")) goto l46; goto l45;
l46:; G->pos= yypos46; G->thunkpos= yythunkpos46;
} if (!yy_char(G)) { goto l45; } goto l44;
l45:; G->pos= yypos45; G->thunkpos= yythunkpos45;
} yyText(G, G->begin, G->end); if (!(YY_END)) goto l43; if (!yymatchClass(G, (unsigned char *)"\000\000\000\000\200\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000")) goto l43; if (!yy__(G)) { goto l43; } goto l42;
l43:; G->pos= yypos42; G->thunkpos= yythunkpos42; if (!yymatchClass(G, (unsigned char *)"\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000")) goto l41; yyText(G, G->begin, G->end); if (!(YY_BEGIN)) goto l41;
l47:;
{ int yypos48= G->pos, yythunkpos48= G->thunkpos;
{ int yypos49= G->pos, yythunkpos49= G->thunkpos; if (!yymatchClass(G, (unsigned char *)"\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000")) goto l49; goto l48;
l49:; G->pos= yypos49; G->thunkpos= yythunkpos49;
} if (!yy_char(G)) { goto l48; } goto l47;
l48:; G->pos= yypos48; G->thunkpos= yythunkpos48;
} yyText(G, G->begin, G->end); if (!(YY_END)) goto l41; if (!yymatchClass(G, (unsigned char *)"\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000")) goto l41; if (!yy__(G)) { goto l41; }
}
l42:;
yyprintf((stderr, " ok %s @ %s\n", "literal", G->buf+G->pos));
return 1;
l41:; G->pos= yypos0; G->thunkpos= yythunkpos0;
#ifdef YY_MEMOIZATION
set_memo(G, yypos0, 26);
#endif
yyprintf((stderr, " fail %s @ %s\n", "literal", G->buf+G->pos));
return 0;
}
YY_RULE(int) yy_CLOSE(GREG *G)
{ int yypos0= G->pos, yythunkpos0= G->thunkpos;
#ifdef YY_MEMOIZATION
if(memo(G, yypos0, 25)) {
yyprintf((stderr, " fail memo %s @ %s\n", "CLOSE", G->buf+G->pos));
return 0;
}
#endif
yyprintf((stderr, "%s\n", "CLOSE")); if (!yymatchChar(G, ')')) goto l50; if (!yy__(G)) { goto l50; }
yyprintf((stderr, " ok %s @ %s\n", "CLOSE", G->buf+G->pos));
return 1;
l50:; G->pos= yypos0; G->thunkpos= yythunkpos0;
#ifdef YY_MEMOIZATION
set_memo(G, yypos0, 25);
#endif
yyprintf((stderr, " fail %s @ %s\n", "CLOSE", G->buf+G->pos));
return 0;
}
YY_RULE(int) yy_OPEN(GREG *G)
{ int yypos0= G->pos, yythunkpos0= G->thunkpos;
#ifdef YY_MEMOIZATION
if(memo(G, yypos0, 24)) {
yyprintf((stderr, " fail memo %s @ %s\n", "OPEN", G->buf+G->pos));
return 0;
}
#endif
yyprintf((stderr, "%s\n", "OPEN")); if (!yymatchChar(G, '(')) goto l51; if (!yy__(G)) { goto l51; }
yyprintf((stderr, " ok %s @ %s\n", "OPEN", G->buf+G->pos));
return 1;
l51:; G->pos= yypos0; G->thunkpos= yythunkpos0;
#ifdef YY_MEMOIZATION
set_memo(G, yypos0, 24);
#endif
yyprintf((stderr, " fail %s @ %s\n", "OPEN", G->buf+G->pos));
return 0;
}
YY_RULE(int) yy_COLON(GREG *G)
{ int yypos0= G->pos, yythunkpos0= G->thunkpos;
#ifdef YY_MEMOIZATION
if(memo(G, yypos0, 23)) {
yyprintf((stderr, " fail memo %s @ %s\n", "COLON", G->buf+G->pos));
return 0;
}
#endif
yyprintf((stderr, "%s\n", "COLON")); if (!yymatchChar(G, ':')) goto l52; if (!yy__(G)) { goto l52; }
yyprintf((stderr, " ok %s @ %s\n", "COLON", G->buf+G->pos));
return 1;
l52:; G->pos= yypos0; G->thunkpos= yythunkpos0;
#ifdef YY_MEMOIZATION
set_memo(G, yypos0, 23);
#endif
yyprintf((stderr, " fail %s @ %s\n", "COLON", G->buf+G->pos));
return 0;
}
YY_RULE(int) yy_PLUS(GREG *G)
{ int yypos0= G->pos, yythunkpos0= G->thunkpos;
#ifdef YY_MEMOIZATION
if(memo(G, yypos0, 22)) {
yyprintf((stderr, " fail memo %s @ %s\n", "PLUS", G->buf+G->pos));
return 0;
}
#endif
yyprintf((stderr, "%s\n", "PLUS")); if (!yymatchChar(G, '+')) goto l53; if (!yy__(G)) { goto l53; }
yyprintf((stderr, " ok %s @ %s\n", "PLUS", G->buf+G->pos));
return 1;
l53:; G->pos= yypos0; G->thunkpos= yythunkpos0;
#ifdef YY_MEMOIZATION
set_memo(G, yypos0, 22);
#endif
yyprintf((stderr, " fail %s @ %s\n", "PLUS", G->buf+G->pos));
return 0;
}
YY_RULE(int) yy_STAR(GREG *G)
{ int yypos0= G->pos, yythunkpos0= G->thunkpos;
#ifdef YY_MEMOIZATION
if(memo(G, yypos0, 21)) {
yyprintf((stderr, " fail memo %s @ %s\n", "STAR", G->buf+G->pos));
return 0;
}
#endif
yyprintf((stderr, "%s\n", "STAR")); if (!yymatchChar(G, '*')) goto l54; if (!yy__(G)) { goto l54; }
yyprintf((stderr, " ok %s @ %s\n", "STAR", G->buf+G->pos));
return 1;
l54:; G->pos= yypos0; G->thunkpos= yythunkpos0;
#ifdef YY_MEMOIZATION
set_memo(G, yypos0, 21);
#endif
yyprintf((stderr, " fail %s @ %s\n", "STAR", G->buf+G->pos));
return 0;
}
YY_RULE(int) yy_QUESTION(GREG *G)
{ int yypos0= G->pos, yythunkpos0= G->thunkpos;
#ifdef YY_MEMOIZATION
if(memo(G, yypos0, 20)) {
yyprintf((stderr, " fail memo %s @ %s\n", "QUESTION", G->buf+G->pos));
return 0;
}
#endif
yyprintf((stderr, "%s\n", "QUESTION")); if (!yymatchChar(G, '?')) goto l55; if (!yy__(G)) { goto l55; }
yyprintf((stderr, " ok %s @ %s\n", "QUESTION", G->buf+G->pos));
return 1;
l55:; G->pos= yypos0; G->thunkpos= yythunkpos0;
#ifdef YY_MEMOIZATION
set_memo(G, yypos0, 20);
#endif
yyprintf((stderr, " fail %s @ %s\n", "QUESTION", G->buf+G->pos));
return 0;
}
YY_RULE(int) yy_primary(GREG *G)
{ int yypos0= G->pos, yythunkpos0= G->thunkpos;
#ifdef YY_MEMOIZATION
if(memo(G, yypos0, 19)) {
yyprintf((stderr, " fail memo %s @ %s\n", "primary", G->buf+G->pos));
return 0;
}
#endif
yyprintf((stderr, "%s\n", "primary"));
{ int yypos57= G->pos, yythunkpos57= G->thunkpos; if (!yy_identifier(G)) { goto l58; } yyDo(G, yy_1_primary, G->begin, G->end); if (!yy_COLON(G)) { goto l58; } if (!yy_identifier(G)) { goto l58; }
{ int yypos59= G->pos, yythunkpos59= G->thunkpos; if (!yy_EQUAL(G)) { goto l59; } goto l58;
l59:; G->pos= yypos59; G->thunkpos= yythunkpos59;
} yyDo(G, yy_2_primary, G->begin, G->end); goto l57;
l58:; G->pos= yypos57; G->thunkpos= yythunkpos57; if (!yy_identifier(G)) { goto l60; }
{ int yypos61= G->pos, yythunkpos61= G->thunkpos; if (!yy_EQUAL(G)) { goto l61; } goto l60;
l61:; G->pos= yypos61; G->thunkpos= yythunkpos61;
} yyDo(G, yy_3_primary, G->begin, G->end); goto l57;
l60:; G->pos= yypos57; G->thunkpos= yythunkpos57; if (!yy_OPEN(G)) { goto l62; } if (!yy_expression(G)) { goto l62; } if (!yy_CLOSE(G)) { goto l62; } goto l57;
l62:; G->pos= yypos57; G->thunkpos= yythunkpos57; if (!yy_literal(G)) { goto l63; } yyDo(G, yy_4_primary, G->begin, G->end); goto l57;
l63:; G->pos= yypos57; G->thunkpos= yythunkpos57; if (!yy_class(G)) { goto l64; } yyDo(G, yy_5_primary, G->begin, G->end); goto l57;
l64:; G->pos= yypos57; G->thunkpos= yythunkpos57; if (!yy_DOT(G)) { goto l65; } yyDo(G, yy_6_primary, G->begin, G->end); goto l57;
l65:; G->pos= yypos57; G->thunkpos= yythunkpos57; if (!yy_action(G)) { goto l66; } yyDo(G, yy_7_primary, G->begin, G->end); goto l57;
l66:; G->pos= yypos57; G->thunkpos= yythunkpos57; if (!yy_BEGIN(G)) { goto l67; } yyDo(G, yy_8_primary, G->begin, G->end); goto l57;
l67:; G->pos= yypos57; G->thunkpos= yythunkpos57; if (!yy_END(G)) { goto l56; } yyDo(G, yy_9_primary, G->begin, G->end);
}
l57:;
{ int yypos68= G->pos, yythunkpos68= G->thunkpos; if (!yy_errblock(G)) { goto l68; } yyDo(G, yy_10_primary, G->begin, G->end); goto l69;
l68:; G->pos= yypos68; G->thunkpos= yythunkpos68;
}
l69:;
yyprintf((stderr, " ok %s @ %s\n", "primary", G->buf+G->pos));
return 1;
l56:; G->pos= yypos0; G->thunkpos= yythunkpos0;
#ifdef YY_MEMOIZATION
set_memo(G, yypos0, 19);
#endif
yyprintf((stderr, " fail %s @ %s\n", "primary", G->buf+G->pos));
return 0;
}
YY_RULE(int) yy_NOT(GREG *G)
{ int yypos0= G->pos, yythunkpos0= G->thunkpos;
#ifdef YY_MEMOIZATION
if(memo(G, yypos0, 18)) {
yyprintf((stderr, " fail memo %s @ %s\n", "NOT", G->buf+G->pos));
return 0;
}
#endif
yyprintf((stderr, "%s\n", "NOT")); if (!yymatchChar(G, '!')) goto l70; if (!yy__(G)) { goto l70; }
yyprintf((stderr, " ok %s @ %s\n", "NOT", G->buf+G->pos));
return 1;
l70:; G->pos= yypos0; G->thunkpos= yythunkpos0;
#ifdef YY_MEMOIZATION
set_memo(G, yypos0, 18);
#endif
yyprintf((stderr, " fail %s @ %s\n", "NOT", G->buf+G->pos));
return 0;
}
YY_RULE(int) yy_suffix(GREG *G)
{ int yypos0= G->pos, yythunkpos0= G->thunkpos;
#ifdef YY_MEMOIZATION
if(memo(G, yypos0, 17)) {
yyprintf((stderr, " fail memo %s @ %s\n", "suffix", G->buf+G->pos));
return 0;
}
#endif
yyprintf((stderr, "%s\n", "suffix")); if (!yy_primary(G)) { goto l71; }
{ int yypos72= G->pos, yythunkpos72= G->thunkpos;
{ int yypos74= G->pos, yythunkpos74= G->thunkpos; if (!yy_QUESTION(G)) { goto l75; } yyDo(G, yy_1_suffix, G->begin, G->end); goto l74;
l75:; G->pos= yypos74; G->thunkpos= yythunkpos74; if (!yy_STAR(G)) { goto l76; } yyDo(G, yy_2_suffix, G->begin, G->end); goto l74;
l76:; G->pos= yypos74; G->thunkpos= yythunkpos74; if (!yy_PLUS(G)) { goto l72; } yyDo(G, yy_3_suffix, G->begin, G->end);
}
l74:; goto l73;
l72:; G->pos= yypos72; G->thunkpos= yythunkpos72;
}
l73:;
yyprintf((stderr, " ok %s @ %s\n", "suffix", G->buf+G->pos));
return 1;
l71:; G->pos= yypos0; G->thunkpos= yythunkpos0;
#ifdef YY_MEMOIZATION
set_memo(G, yypos0, 17);
#endif
yyprintf((stderr, " fail %s @ %s\n", "suffix", G->buf+G->pos));
return 0;
}
YY_RULE(int) yy_action(GREG *G)
{ int yypos0= G->pos, yythunkpos0= G->thunkpos;
#ifdef YY_MEMOIZATION
if(memo(G, yypos0, 16)) {
yyprintf((stderr, " fail memo %s @ %s\n", "action", G->buf+G->pos));
return 0;
}
#endif
yyprintf((stderr, "%s\n", "action")); if (!yymatchChar(G, '{')) goto l77; yyText(G, G->begin, G->end); if (!(YY_BEGIN)) goto l77;
l78:;
{ int yypos79= G->pos, yythunkpos79= G->thunkpos; if (!yy_braces(G)) { goto l79; } goto l78;
l79:; G->pos= yypos79; G->thunkpos= yythunkpos79;
} yyText(G, G->begin, G->end); if (!(YY_END)) goto l77; if (!yymatchChar(G, '}')) goto l77; if (!yy__(G)) { goto l77; }
yyprintf((stderr, " ok %s @ %s\n", "action", G->buf+G->pos));
return 1;
l77:; G->pos= yypos0; G->thunkpos= yythunkpos0;
#ifdef YY_MEMOIZATION
set_memo(G, yypos0, 16);
#endif
yyprintf((stderr, " fail %s @ %s\n", "action", G->buf+G->pos));
return 0;
}
YY_RULE(int) yy_AND(GREG *G)
{ int yypos0= G->pos, yythunkpos0= G->thunkpos;
#ifdef YY_MEMOIZATION
if(memo(G, yypos0, 15)) {
yyprintf((stderr, " fail memo %s @ %s\n", "AND", G->buf+G->pos));
return 0;
}
#endif
yyprintf((stderr, "%s\n", "AND")); if (!yymatchChar(G, '&')) goto l80; if (!yy__(G)) { goto l80; }
yyprintf((stderr, " ok %s @ %s\n", "AND", G->buf+G->pos));
return 1;
l80:; G->pos= yypos0; G->thunkpos= yythunkpos0;
#ifdef YY_MEMOIZATION
set_memo(G, yypos0, 15);
#endif
yyprintf((stderr, " fail %s @ %s\n", "AND", G->buf+G->pos));
return 0;
}
YY_RULE(int) yy_prefix(GREG *G)
{ int yypos0= G->pos, yythunkpos0= G->thunkpos;
#ifdef YY_MEMOIZATION
if(memo(G, yypos0, 14)) {
yyprintf((stderr, " fail memo %s @ %s\n", "prefix", G->buf+G->pos));
return 0;
}
#endif
yyprintf((stderr, "%s\n", "prefix"));
{ int yypos82= G->pos, yythunkpos82= G->thunkpos; if (!yy_AND(G)) { goto l83; } if (!yy_action(G)) { goto l83; } yyDo(G, yy_1_prefix, G->begin, G->end); goto l82;
l83:; G->pos= yypos82; G->thunkpos= yythunkpos82; if (!yy_AND(G)) { goto l84; } if (!yy_suffix(G)) { goto l84; } yyDo(G, yy_2_prefix, G->begin, G->end); goto l82;
l84:; G->pos= yypos82; G->thunkpos= yythunkpos82; if (!yy_NOT(G)) { goto l85; } if (!yy_suffix(G)) { goto l85; } yyDo(G, yy_3_prefix, G->begin, G->end); goto l82;
l85:; G->pos= yypos82; G->thunkpos= yythunkpos82; if (!yy_suffix(G)) { goto l81; }
}
l82:;
yyprintf((stderr, " ok %s @ %s\n", "prefix", G->buf+G->pos));
return 1;
l81:; G->pos= yypos0; G->thunkpos= yythunkpos0;
#ifdef YY_MEMOIZATION
set_memo(G, yypos0, 14);
#endif
yyprintf((stderr, " fail %s @ %s\n", "prefix", G->buf+G->pos));
return 0;
}
YY_RULE(int) yy_BAR(GREG *G)
{ int yypos0= G->pos, yythunkpos0= G->thunkpos;
#ifdef YY_MEMOIZATION
if(memo(G, yypos0, 13)) {
yyprintf((stderr, " fail memo %s @ %s\n", "BAR", G->buf+G->pos));
return 0;
}
#endif
yyprintf((stderr, "%s\n", "BAR")); if (!yymatchChar(G, '|')) goto l86; if (!yy__(G)) { goto l86; }
yyprintf((stderr, " ok %s @ %s\n", "BAR", G->buf+G->pos));
return 1;
l86:; G->pos= yypos0; G->thunkpos= yythunkpos0;
#ifdef YY_MEMOIZATION
set_memo(G, yypos0, 13);
#endif
yyprintf((stderr, " fail %s @ %s\n", "BAR", G->buf+G->pos));
return 0;
}
YY_RULE(int) yy_sequence(GREG *G)
{ int yypos0= G->pos, yythunkpos0= G->thunkpos;
#ifdef YY_MEMOIZATION
if(memo(G, yypos0, 12)) {
yyprintf((stderr, " fail memo %s @ %s\n", "sequence", G->buf+G->pos));
return 0;
}
#endif
yyprintf((stderr, "%s\n", "sequence")); if (!yy_prefix(G)) { goto l87; }
l88:;
{ int yypos89= G->pos, yythunkpos89= G->thunkpos; if (!yy_prefix(G)) { goto l89; } yyDo(G, yy_1_sequence, G->begin, G->end); goto l88;
l89:; G->pos= yypos89; G->thunkpos= yythunkpos89;
}
yyprintf((stderr, " ok %s @ %s\n", "sequence", G->buf+G->pos));
return 1;
l87:; G->pos= yypos0; G->thunkpos= yythunkpos0;
#ifdef YY_MEMOIZATION
set_memo(G, yypos0, 12);
#endif
yyprintf((stderr, " fail %s @ %s\n", "sequence", G->buf+G->pos));
return 0;
}
YY_RULE(int) yy_SEMICOLON(GREG *G)
{ int yypos0= G->pos, yythunkpos0= G->thunkpos;
#ifdef YY_MEMOIZATION
if(memo(G, yypos0, 11)) {
yyprintf((stderr, " fail memo %s @ %s\n", "SEMICOLON", G->buf+G->pos));
return 0;
}
#endif
yyprintf((stderr, "%s\n", "SEMICOLON")); if (!yymatchChar(G, ';')) goto l90; if (!yy__(G)) { goto l90; }
yyprintf((stderr, " ok %s @ %s\n", "SEMICOLON", G->buf+G->pos));
return 1;
l90:; G->pos= yypos0; G->thunkpos= yythunkpos0;
#ifdef YY_MEMOIZATION
set_memo(G, yypos0, 11);
#endif
yyprintf((stderr, " fail %s @ %s\n", "SEMICOLON", G->buf+G->pos));
return 0;
}
YY_RULE(int) yy_expression(GREG *G)
{ int yypos0= G->pos, yythunkpos0= G->thunkpos;
#ifdef YY_MEMOIZATION
if(memo(G, yypos0, 10)) {
yyprintf((stderr, " fail memo %s @ %s\n", "expression", G->buf+G->pos));
return 0;
}
#endif
yyprintf((stderr, "%s\n", "expression")); if (!yy_sequence(G)) { goto l91; }
l92:;
{ int yypos93= G->pos, yythunkpos93= G->thunkpos; if (!yy_BAR(G)) { goto l93; } if (!yy_sequence(G)) { goto l93; } yyDo(G, yy_1_expression, G->begin, G->end); goto l92;
l93:; G->pos= yypos93; G->thunkpos= yythunkpos93;
}
yyprintf((stderr, " ok %s @ %s\n", "expression", G->buf+G->pos));
return 1;
l91:; G->pos= yypos0; G->thunkpos= yythunkpos0;
#ifdef YY_MEMOIZATION
set_memo(G, yypos0, 10);
#endif
yyprintf((stderr, " fail %s @ %s\n", "expression", G->buf+G->pos));
return 0;
}
YY_RULE(int) yy_EQUAL(GREG *G)
{ int yypos0= G->pos, yythunkpos0= G->thunkpos;
#ifdef YY_MEMOIZATION
if(memo(G, yypos0, 9)) {
yyprintf((stderr, " fail memo %s @ %s\n", "EQUAL", G->buf+G->pos));
return 0;
}
#endif
yyprintf((stderr, "%s\n", "EQUAL")); if (!yymatchChar(G, '=')) goto l94; if (!yy__(G)) { goto l94; }
yyprintf((stderr, " ok %s @ %s\n", "EQUAL", G->buf+G->pos));
return 1;
l94:; G->pos= yypos0; G->thunkpos= yythunkpos0;
#ifdef YY_MEMOIZATION
set_memo(G, yypos0, 9);
#endif
yyprintf((stderr, " fail %s @ %s\n", "EQUAL", G->buf+G->pos));
return 0;
}
YY_RULE(int) yy_identifier(GREG *G)
{ int yypos0= G->pos, yythunkpos0= G->thunkpos;
#ifdef YY_MEMOIZATION
if(memo(G, yypos0, 8)) {
yyprintf((stderr, " fail memo %s @ %s\n", "identifier", G->buf+G->pos));
return 0;
}
#endif
yyprintf((stderr, "%s\n", "identifier")); yyText(G, G->begin, G->end); if (!(YY_BEGIN)) goto l95; if (!yymatchClass(G, (unsigned char *)"\000\000\000\000\000\040\000\000\376\377\377\207\376\377\377\007\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000")) goto l95;
l96:;
{ int yypos97= G->pos, yythunkpos97= G->thunkpos; if (!yymatchClass(G, (unsigned char *)"\000\000\000\000\000\040\377\003\376\377\377\207\376\377\377\007\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000")) goto l97; goto l96;
l97:; G->pos= yypos97; G->thunkpos= yythunkpos97;
} yyText(G, G->begin, G->end); if (!(YY_END)) goto l95; if (!yy__(G)) { goto l95; }
yyprintf((stderr, " ok %s @ %s\n", "identifier", G->buf+G->pos));
return 1;
l95:; G->pos= yypos0; G->thunkpos= yythunkpos0;
#ifdef YY_MEMOIZATION
set_memo(G, yypos0, 8);
#endif
yyprintf((stderr, " fail %s @ %s\n", "identifier", G->buf+G->pos));
return 0;
}
YY_RULE(int) yy_RPERCENT(GREG *G)
{ int yypos0= G->pos, yythunkpos0= G->thunkpos;
#ifdef YY_MEMOIZATION
if(memo(G, yypos0, 7)) {
yyprintf((stderr, " fail memo %s @ %s\n", "RPERCENT", G->buf+G->pos));
return 0;
}
#endif
yyprintf((stderr, "%s\n", "RPERCENT")); if (!yymatchString(G, "%}")) goto l98; if (!yy__(G)) { goto l98; }
yyprintf((stderr, " ok %s @ %s\n", "RPERCENT", G->buf+G->pos));
return 1;
l98:; G->pos= yypos0; G->thunkpos= yythunkpos0;
#ifdef YY_MEMOIZATION
set_memo(G, yypos0, 7);
#endif
yyprintf((stderr, " fail %s @ %s\n", "RPERCENT", G->buf+G->pos));
return 0;
}
YY_RULE(int) yy_end_of_file(GREG *G)
{ int yypos0= G->pos, yythunkpos0= G->thunkpos;
#ifdef YY_MEMOIZATION
if(memo(G, yypos0, 6)) {
yyprintf((stderr, " fail memo %s @ %s\n", "end_of_file", G->buf+G->pos));
return 0;
}
#endif
yyprintf((stderr, "%s\n", "end_of_file"));
{ int yypos100= G->pos, yythunkpos100= G->thunkpos; if (!yymatchDot(G)) goto l100; goto l99;
l100:; G->pos= yypos100; G->thunkpos= yythunkpos100;
}
yyprintf((stderr, " ok %s @ %s\n", "end_of_file", G->buf+G->pos));
return 1;
l99:; G->pos= yypos0; G->thunkpos= yythunkpos0;
#ifdef YY_MEMOIZATION
set_memo(G, yypos0, 6);
#endif
yyprintf((stderr, " fail %s @ %s\n", "end_of_file", G->buf+G->pos));
return 0;
}
YY_RULE(int) yy_trailer(GREG *G)
{ int yypos0= G->pos, yythunkpos0= G->thunkpos;
#ifdef YY_MEMOIZATION
if(memo(G, yypos0, 5)) {
yyprintf((stderr, " fail memo %s @ %s\n", "trailer", G->buf+G->pos));
return 0;
}
#endif
yyprintf((stderr, "%s\n", "trailer")); if (!yymatchString(G, "%%")) goto l101; yyText(G, G->begin, G->end); if (!(YY_BEGIN)) goto l101;
l102:;
{ int yypos103= G->pos, yythunkpos103= G->thunkpos; if (!yymatchDot(G)) goto l103; goto l102;
l103:; G->pos= yypos103; G->thunkpos= yythunkpos103;
} yyText(G, G->begin, G->end); if (!(YY_END)) goto l101; yyDo(G, yy_1_trailer, G->begin, G->end);
yyprintf((stderr, " ok %s @ %s\n", "trailer", G->buf+G->pos));
return 1;
l101:; G->pos= yypos0; G->thunkpos= yythunkpos0;
#ifdef YY_MEMOIZATION
set_memo(G, yypos0, 5);
#endif
yyprintf((stderr, " fail %s @ %s\n", "trailer", G->buf+G->pos));
return 0;
}
YY_RULE(int) yy_definition(GREG *G)
{ int yypos0= G->pos, yythunkpos0= G->thunkpos;
#ifdef YY_MEMOIZATION
if(memo(G, yypos0, 4)) {
yyprintf((stderr, " fail memo %s @ %s\n", "definition", G->buf+G->pos));
return 0;
}
#endif
yyprintf((stderr, "%s\n", "definition")); if (!yy_identifier(G)) { goto l104; } yyDo(G, yy_1_definition, G->begin, G->end); if (!yy_EQUAL(G)) { goto l104; } if (!yy_expression(G)) { goto l104; } yyDo(G, yy_2_definition, G->begin, G->end);
{ int yypos105= G->pos, yythunkpos105= G->thunkpos; if (!yy_SEMICOLON(G)) { goto l105; } goto l106;
l105:; G->pos= yypos105; G->thunkpos= yythunkpos105;
}
l106:;
yyprintf((stderr, " ok %s @ %s\n", "definition", G->buf+G->pos));
return 1;
l104:; G->pos= yypos0; G->thunkpos= yythunkpos0;
#ifdef YY_MEMOIZATION
set_memo(G, yypos0, 4);
#endif
yyprintf((stderr, " fail %s @ %s\n", "definition", G->buf+G->pos));
return 0;
}
YY_RULE(int) yy_declaration(GREG *G)
{ int yypos0= G->pos, yythunkpos0= G->thunkpos;
#ifdef YY_MEMOIZATION
if(memo(G, yypos0, 3)) {
yyprintf((stderr, " fail memo %s @ %s\n", "declaration", G->buf+G->pos));
return 0;
}
#endif
yyprintf((stderr, "%s\n", "declaration")); if (!yymatchString(G, "%{")) goto l107; yyText(G, G->begin, G->end); if (!(YY_BEGIN)) goto l107;
l108:;
{ int yypos109= G->pos, yythunkpos109= G->thunkpos;
{ int yypos110= G->pos, yythunkpos110= G->thunkpos; if (!yymatchString(G, "%}")) goto l110; goto l109;
l110:; G->pos= yypos110; G->thunkpos= yythunkpos110;
} if (!yymatchDot(G)) goto l109; goto l108;
l109:; G->pos= yypos109; G->thunkpos= yythunkpos109;
} yyText(G, G->begin, G->end); if (!(YY_END)) goto l107; if (!yy_RPERCENT(G)) { goto l107; } yyDo(G, yy_1_declaration, G->begin, G->end);
yyprintf((stderr, " ok %s @ %s\n", "declaration", G->buf+G->pos));
return 1;
l107:; G->pos= yypos0; G->thunkpos= yythunkpos0;
#ifdef YY_MEMOIZATION
set_memo(G, yypos0, 3);
#endif
yyprintf((stderr, " fail %s @ %s\n", "declaration", G->buf+G->pos));
return 0;
}
YY_RULE(int) yy__(GREG *G)
{
yyprintf((stderr, "%s\n", "_"));
l112:;
{ int yypos113= G->pos, yythunkpos113= G->thunkpos;
{ int yypos114= G->pos, yythunkpos114= G->thunkpos; if (!yy_space(G)) { goto l115; } goto l114;
l115:; G->pos= yypos114; G->thunkpos= yythunkpos114; if (!yy_comment(G)) { goto l113; }
}
l114:; goto l112;
l113:; G->pos= yypos113; G->thunkpos= yythunkpos113;
}
yyprintf((stderr, " ok %s @ %s\n", "_", G->buf+G->pos));
return 1;
}
YY_RULE(int) yy_grammar(GREG *G)
{ int yypos0= G->pos, yythunkpos0= G->thunkpos;
#ifdef YY_MEMOIZATION
if(memo(G, yypos0, 1)) {
yyprintf((stderr, " fail memo %s @ %s\n", "grammar", G->buf+G->pos));
return 0;
}
#endif
yyprintf((stderr, "%s\n", "grammar")); if (!yy__(G)) { goto l116; }
{ int yypos119= G->pos, yythunkpos119= G->thunkpos; if (!yy_declaration(G)) { goto l120; } goto l119;
l120:; G->pos= yypos119; G->thunkpos= yythunkpos119; if (!yy_definition(G)) { goto l116; }
}
l119:;
l117:;
{ int yypos118= G->pos, yythunkpos118= G->thunkpos;
{ int yypos121= G->pos, yythunkpos121= G->thunkpos; if (!yy_declaration(G)) { goto l122; } goto l121;
l122:; G->pos= yypos121; G->thunkpos= yythunkpos121; if (!yy_definition(G)) { goto l118; }
}
l121:; goto l117;
l118:; G->pos= yypos118; G->thunkpos= yythunkpos118;
}
{ int yypos123= G->pos, yythunkpos123= G->thunkpos; if (!yy_trailer(G)) { goto l123; } goto l124;
l123:; G->pos= yypos123; G->thunkpos= yythunkpos123;
}
l124:; if (!yy_end_of_file(G)) { goto l116; }
yyprintf((stderr, " ok %s @ %s\n", "grammar", G->buf+G->pos));
return 1;
l116:; G->pos= yypos0; G->thunkpos= yythunkpos0;
#ifdef YY_MEMOIZATION
set_memo(G, yypos0, 1);
#endif
yyprintf((stderr, " fail %s @ %s\n", "grammar", G->buf+G->pos));
return 0;
}
#ifndef YY_PART
typedef int (*yyrule)(GREG *G);
YY_PARSE(int) YY_NAME(parse_from)(GREG *G, yyrule yystart)
{
int yyok;
if (!G->buflen)
{
G->buflen= YY_BUFFER_START_SIZE;
G->buf= YY_ALLOC(G->buflen, G->data);
G->textlen= YY_BUFFER_START_SIZE;
G->text= YY_ALLOC(G->textlen, G->data);
G->thunkslen= YY_STACK_SIZE;
G->thunks= YY_ALLOC(sizeof(yythunk) * G->thunkslen, G->data);
G->valslen= YY_STACK_SIZE;
G->vals= YY_ALLOC(sizeof(YYSTYPE) * G->valslen, G->data);
G->begin= G->end= G->pos= G->limit= G->thunkpos= 0;
#ifdef YY_MEMOIZATION
G->memo = malloc(sizeof(char**) * G->buflen);
memset(G->memo, 0, sizeof(char**) * G->buflen);
G->memolen = G->buflen;
#endif
}
G->pos = 0;
G->begin= G->end= G->pos;
G->thunkpos= 0;
G->val= G->vals;
yyok= yystart(G);
if (yyok) yyDone(G);
yyCommit(G);
return yyok;
(void)yyrefill;
(void)yymatchDot;
(void)yymatchChar;
(void)yymatchString;
(void)yymatchClass;
(void)yyDo;
(void)yyText;
(void)yyDone;
(void)yyCommit;
(void)yyAccept;
(void)yyPush;
(void)yyPop;
(void)yySet;
}
YY_PARSE(int) YY_NAME(parse)(GREG *G)
{
return YY_NAME(parse_from)(G, yy_grammar);
}
YY_PARSE(GREG *) YY_NAME(parse_new)(YY_XTYPE data)
{
GREG *G = (GREG *)YY_CALLOC(1, sizeof(GREG), G->data);
G->data = data;
return G;
}
YY_PARSE(void) YY_NAME(parse_free)(GREG *G)
{
YY_FREE(G);
}
#endif
void yyerror(struct _GREG *G, char *message)
{
fprintf(stderr, "%s:%d: %s", fileName, lineNumber, message);
if (G->text[0]) fprintf(stderr, " near token '%s'", G->text);
if (G->pos < G->limit || !feof(input))
{
G->buf[G->limit]= '\0';
fprintf(stderr, " before text \"");
while (G->pos < G->limit)
{
if ('\n' == G->buf[G->pos] || '\r' == G->buf[G->pos]) break;
fputc(G->buf[G->pos++], stderr);
}
if (G->pos == G->limit)
{
int c;
while (EOF != (c= fgetc(input)) && '\n' != c && '\r' != c)
fputc(c, stderr);
}
fputc('\"', stderr);
}
fprintf(stderr, "\n");
exit(1);
}
void makeHeader(char *text)
{
Header *header= (Header *)malloc(sizeof(Header));
header->text= strdup(text);
header->next= headers;
headers= header;
}
void makeTrailer(char *text)
{
trailer= strdup(text);
}
static void version(char *name)
{
printf("%s version %d.%d.%d\n", name, GREG_MAJOR, GREG_MINOR, GREG_LEVEL);
}
static void usage(char *name)
{
version(name);
fprintf(stderr, "usage: %s [<option>...] [<file>...]\n", name);
fprintf(stderr, "where <option> can be\n");
fprintf(stderr, " -h print this help information\n");
fprintf(stderr, " -o <ofile> write output to <ofile>\n");
fprintf(stderr, " -v be verbose\n");
fprintf(stderr, " -V print version number and exit\n");
fprintf(stderr, "if no <file> is given, input is read from stdin\n");
fprintf(stderr, "if no <ofile> is given, output is written to stdout\n");
exit(1);
}
int main(int argc, char **argv)
{
GREG *G;
Node *n;
int c;
output= stdout;
input= stdin;
lineNumber= 1;
fileName= "<stdin>";
while (-1 != (c= getopt(argc, argv, "Vho:v")))
{
switch (c)
{
case 'V':
version(basename(argv[0]));
exit(0);
case 'h':
usage(basename(argv[0]));
break;
case 'o':
if (!(output= fopen(optarg, "w")))
{
perror(optarg);
exit(1);
}
break;
case 'v':
verboseFlag= 1;
break;
default:
fprintf(stderr, "for usage try: %s -h\n", argv[0]);
exit(1);
}
}
argc -= optind;
argv += optind;
G = yyparse_new(NULL);
if (argc)
{
for (; argc; --argc, ++argv)
{
if (!strcmp(*argv, "-"))
{
input= stdin;
fileName= "<stdin>";
}
else
{
if (!(input= fopen(*argv, "r")))
{
perror(*argv);
exit(1);
}
fileName= *argv;
}
lineNumber= 1;
if (!yyparse(G))
yyerror(G, "syntax error");
if (input != stdin)
fclose(input);
}
}
else
if (!yyparse(G))
yyerror(G, "syntax error");
yyparse_free(G);
if (verboseFlag)
for (n= rules; n; n= n->any.next)
Rule_print(n);
Rule_compile_c_header();
for (; headers; headers= headers->next)
fprintf(output, "%s\n", headers->text);
if (rules)
Rule_compile_c(rules);
if (trailer)
fprintf(output, "%s\n", trailer);
return 0;
}
Jump to Line
Something went wrong with that request. Please try again.