push 108 syn/greg.h extern Node *push(Node *node); push 66 syn/greg.y definition= s:identifier { if (push(beginRule(findRule(yytext,s)))->rule.expression) push 71 syn/greg.y expression= sequence (BAR sequence { Node *f= pop(); push(Alternate_append(pop(), f)); } push 74 syn/greg.y sequence= prefix (prefix { Node *f= pop(); push(Sequence_append(pop(), f)); } push 77 syn/greg.y prefix= AND action { push(makePredicate(yytext)); } push 78 syn/greg.y | AND suffix { push(makePeekFor(pop())); } push 79 syn/greg.y | NOT suffix { push(makePeekNot(pop())); } push 82 syn/greg.y suffix= primary (QUESTION { push(makeQuery(pop())); } push 83 syn/greg.y | STAR { push(makeStar (pop())); } push 84 syn/greg.y | PLUS { push(makePlus (pop())); } push 88 syn/greg.y identifier { push(makeVariable(yytext)); } push 89 syn/greg.y COLON identifier !EQUAL { Node *name= makeName(findRule(yytext,0)); name->name.variable= pop(); push(name); } push 90 syn/greg.y | identifier !EQUAL { push(makeName(findRule(yytext,0))); } push 92 syn/greg.y | literal { push(makeString(yytext)); } push 93 syn/greg.y | class { push(makeClass(yytext)); } push 94 syn/greg.y | DOT { push(makeDot()); } push 95 syn/greg.y | action { push(makeAction(yytext)); } push 96 syn/greg.y | BEGIN { push(makePredicate("YY_BEGIN")); } push 97 syn/greg.y | END { push(makePredicate("YY_END")); } push 98 syn/greg.y ) (errblock { Node *node = pop(); ((struct Any *) node)->errblock = strdup(yytext); push(node); })?