pred.c revision 4fd606d1f5abe38e1f42c38de1d2e895166bd0f4
2N/A#include "pcctscfg.h"
#include "hash.h"
#include "generic.h"
#include "dlgdef.h"
#include <ctype.h>
#ifdef __USE_PROTOS
static void complete_context_sets();
static void complete_context_trees();
#ifdef __USE_PROTOS
ActionNode *a;
int max_k=0;
goto PREDENTRY_EXIT;
if ( GenCC )
char *p = a->action;
while ( p!=NULL )
if ( p!=NULL )
char *p = a->action;
while ( p!=NULL )
if ( p!=NULL )
k = atoi(p);
if (max_k==0) {
if ( !a->frmwarned )
/* MR11 */ errFL(eMsgd2("predicate refers to lookahead token %d. Semantic lookahead is limited to max(k,ck)==%d",
/* MR10 */ errFL(eMsgd(" the lookahead buffer size in C mode is %d token(s) (including the one just recognized)",
return max_k;
#ifdef __USE_PROTOS
if (MRhoisting) {
if ( a==NULL ) continue;
tail = a;
return root;
#ifdef __USE_PROTOS
#ifdef __USE_PROTOS
#ifdef __USE_PROTOS
#ifdef __USE_PROTOS
#ifdef DBG_PRED
Junction *j;
RuleRefNode *r;
TokNode *t;
#ifdef DBG_PRED
case nJunction :
switch ( j->jtype )
case aSubBlk :
case aOptBlk :
case aLoopBegin :
case aLoopBlk :
case aPlusBlk :
case EndBlk :
case RuleBlk :
case Generic :
case EndRule :
case nRuleRef :
case nToken :
case nAction :
case nJunction :
Predicate *a, *b;
return NULL;
switch ( p->jtype )
case aSubBlk :
a = find_in_aSubBlk(p);
case aOptBlk :
a = find_in_aOptBlk(p);
case aLoopBegin :
a = find_in_aLoopBegin(p);
case aLoopBlk :
a = find_in_aSubBlk(p);
case aPlusBlk :
a = find_in_aPlusBlk(p);
case RuleBlk :
case Generic :
if ( a==NULL ) return b;
if ( b==NULL ) return a;
case EndBlk :
return NULL;
case nAction :
if ( p->is_predicate )
#ifdef DBG_PRED
ConstrainSearch = 0;
pred->k,
#ifdef DBG_PRED
preorder(t);
#ifdef DBG_PRED
if ( d!=NULL )
return root;
return pred;
return NULL;
case nRuleRef :
Predicate *a;
Junction *r;
if ( q == NULL )
return NULL;
return NULL;
complete_context_sets(p,a);
complete_context_trees(p,a);
case nToken :
return NULL;
#ifdef __USE_PROTOS
Predicate *p;
#ifdef __USE_PROTOS
new_pred( void )
new_pred( )
#ifdef __USE_PROTOS
complete_context_sets( p, a )
RuleRefNode *p;
Predicate *a;
int k2;
#ifdef DBG_PRED
set_free(b);
#ifdef DBG_PRED
#ifdef DBG_PRED
#ifdef __USE_PROTOS
complete_context_trees( p, a )
RuleRefNode *p;
Predicate *a;
int k2;
Tree *u;
#ifdef DBG_PRED
u = NULL;
#ifdef DBG_PRED
#ifdef DBG_PRED
#ifdef __USE_PROTOS
covered_set( p )
Predicate *p;
set a;
a = empty;
#ifdef __USE_PROTOS
void predicate_free(p)
Predicate *p;
if (p == NULL) return;
if (p->cloned ||
free( (char *) p);
#ifdef __USE_PROTOS
Predicate *p;
int contextToo;
Predicate *q;
q=new_pred();
if (contextToo) {
#ifdef __USE_PROTOS
Predicate *p;
return predicate_dup_xxx(p,0);
#ifdef __USE_PROTOS
Predicate *p;