Lines Matching refs:psp
2258 static void parseonetoken(struct pstate *psp) in parseonetoken() argument
2261 x = Strsafe(psp->tokenstart); /* Save the token permanently */ in parseonetoken()
2263 printf("%s:%d: Token=[%s] state=%d\n",psp->filename,psp->tokenlineno, in parseonetoken()
2264 x,psp->state); in parseonetoken()
2266 switch( psp->state ){ in parseonetoken()
2268 psp->prevrule = 0; in parseonetoken()
2269 psp->preccounter = 0; in parseonetoken()
2270 psp->firstrule = psp->lastrule = 0; in parseonetoken()
2271 psp->gp->nrule = 0; in parseonetoken()
2275 psp->state = WAITING_FOR_DECL_KEYWORD; in parseonetoken()
2277 psp->lhs = Symbol_new(x); in parseonetoken()
2278 psp->nrhs = 0; in parseonetoken()
2279 psp->lhsalias = 0; in parseonetoken()
2280 psp->state = WAITING_FOR_ARROW; in parseonetoken()
2282 if( psp->prevrule==0 ){ in parseonetoken()
2283 ErrorMsg(psp->filename,psp->tokenlineno, in parseonetoken()
2286 psp->errorcnt++; in parseonetoken()
2287 }else if( psp->prevrule->code!=0 ){ in parseonetoken()
2288 ErrorMsg(psp->filename,psp->tokenlineno, in parseonetoken()
2291 psp->errorcnt++; in parseonetoken()
2293 psp->prevrule->neverReduce = 1; in parseonetoken()
2295 psp->prevrule->line = psp->tokenlineno; in parseonetoken()
2296 psp->prevrule->code = &x[1]; in parseonetoken()
2297 psp->prevrule->noCode = 0; in parseonetoken()
2300 psp->state = PRECEDENCE_MARK_1; in parseonetoken()
2302 ErrorMsg(psp->filename,psp->tokenlineno, in parseonetoken()
2305 psp->errorcnt++; in parseonetoken()
2310 ErrorMsg(psp->filename,psp->tokenlineno, in parseonetoken()
2312 psp->errorcnt++; in parseonetoken()
2313 }else if( psp->prevrule==0 ){ in parseonetoken()
2314 ErrorMsg(psp->filename,psp->tokenlineno, in parseonetoken()
2316 psp->errorcnt++; in parseonetoken()
2317 }else if( psp->prevrule->precsym!=0 ){ in parseonetoken()
2318 ErrorMsg(psp->filename,psp->tokenlineno, in parseonetoken()
2321 psp->errorcnt++; in parseonetoken()
2323 psp->prevrule->precsym = Symbol_new(x); in parseonetoken()
2325 psp->state = PRECEDENCE_MARK_2; in parseonetoken()
2329 ErrorMsg(psp->filename,psp->tokenlineno, in parseonetoken()
2331 psp->errorcnt++; in parseonetoken()
2333 psp->state = WAITING_FOR_DECL_OR_RULE; in parseonetoken()
2337 psp->state = IN_RHS; in parseonetoken()
2339 psp->state = LHS_ALIAS_1; in parseonetoken()
2341 ErrorMsg(psp->filename,psp->tokenlineno, in parseonetoken()
2343 psp->lhs->name); in parseonetoken()
2344 psp->errorcnt++; in parseonetoken()
2345 psp->state = RESYNC_AFTER_RULE_ERROR; in parseonetoken()
2350 psp->lhsalias = x; in parseonetoken()
2351 psp->state = LHS_ALIAS_2; in parseonetoken()
2353 ErrorMsg(psp->filename,psp->tokenlineno, in parseonetoken()
2355 x,psp->lhs->name); in parseonetoken()
2356 psp->errorcnt++; in parseonetoken()
2357 psp->state = RESYNC_AFTER_RULE_ERROR; in parseonetoken()
2362 psp->state = LHS_ALIAS_3; in parseonetoken()
2364 ErrorMsg(psp->filename,psp->tokenlineno, in parseonetoken()
2365 "Missing \")\" following LHS alias name \"%s\".",psp->lhsalias); in parseonetoken()
2366 psp->errorcnt++; in parseonetoken()
2367 psp->state = RESYNC_AFTER_RULE_ERROR; in parseonetoken()
2372 psp->state = IN_RHS; in parseonetoken()
2374 ErrorMsg(psp->filename,psp->tokenlineno, in parseonetoken()
2376 psp->lhs->name,psp->lhsalias); in parseonetoken()
2377 psp->errorcnt++; in parseonetoken()
2378 psp->state = RESYNC_AFTER_RULE_ERROR; in parseonetoken()
2385 sizeof(struct symbol*)*psp->nrhs + sizeof(char*)*psp->nrhs, 1); in parseonetoken()
2387 ErrorMsg(psp->filename,psp->tokenlineno, in parseonetoken()
2389 psp->errorcnt++; in parseonetoken()
2390 psp->prevrule = 0; in parseonetoken()
2393 rp->ruleline = psp->tokenlineno; in parseonetoken()
2395 rp->rhsalias = (const char**)&(rp->rhs[psp->nrhs]); in parseonetoken()
2396 for(i=0; i<psp->nrhs; i++){ in parseonetoken()
2397 rp->rhs[i] = psp->rhs[i]; in parseonetoken()
2398 rp->rhsalias[i] = psp->alias[i]; in parseonetoken()
2401 rp->lhs = psp->lhs; in parseonetoken()
2402 rp->lhsalias = psp->lhsalias; in parseonetoken()
2403 rp->nrhs = psp->nrhs; in parseonetoken()
2407 rp->index = psp->gp->nrule++; in parseonetoken()
2411 if( psp->firstrule==0 ){ in parseonetoken()
2412 psp->firstrule = psp->lastrule = rp; in parseonetoken()
2414 psp->lastrule->next = rp; in parseonetoken()
2415 psp->lastrule = rp; in parseonetoken()
2417 psp->prevrule = rp; in parseonetoken()
2419 psp->state = WAITING_FOR_DECL_OR_RULE; in parseonetoken()
2421 if( psp->nrhs>=MAXRHS ){ in parseonetoken()
2422 ErrorMsg(psp->filename,psp->tokenlineno, in parseonetoken()
2425 psp->errorcnt++; in parseonetoken()
2426 psp->state = RESYNC_AFTER_RULE_ERROR; in parseonetoken()
2428 psp->rhs[psp->nrhs] = Symbol_new(x); in parseonetoken()
2429 psp->alias[psp->nrhs] = 0; in parseonetoken()
2430 psp->nrhs++; in parseonetoken()
2432 }else if( (x[0]=='|' || x[0]=='/') && psp->nrhs>0 && ISUPPER(x[1]) ){ in parseonetoken()
2433 struct symbol *msp = psp->rhs[psp->nrhs-1]; in parseonetoken()
2443 psp->rhs[psp->nrhs-1] = msp; in parseonetoken()
2450 ErrorMsg(psp->filename,psp->tokenlineno, in parseonetoken()
2452 psp->errorcnt++; in parseonetoken()
2454 }else if( x[0]=='(' && psp->nrhs>0 ){ in parseonetoken()
2455 psp->state = RHS_ALIAS_1; in parseonetoken()
2457 ErrorMsg(psp->filename,psp->tokenlineno, in parseonetoken()
2459 psp->errorcnt++; in parseonetoken()
2460 psp->state = RESYNC_AFTER_RULE_ERROR; in parseonetoken()
2465 psp->alias[psp->nrhs-1] = x; in parseonetoken()
2466 psp->state = RHS_ALIAS_2; in parseonetoken()
2468 ErrorMsg(psp->filename,psp->tokenlineno, in parseonetoken()
2470 x,psp->rhs[psp->nrhs-1]->name); in parseonetoken()
2471 psp->errorcnt++; in parseonetoken()
2472 psp->state = RESYNC_AFTER_RULE_ERROR; in parseonetoken()
2477 psp->state = IN_RHS; in parseonetoken()
2479 ErrorMsg(psp->filename,psp->tokenlineno, in parseonetoken()
2480 "Missing \")\" following LHS alias name \"%s\".",psp->lhsalias); in parseonetoken()
2481 psp->errorcnt++; in parseonetoken()
2482 psp->state = RESYNC_AFTER_RULE_ERROR; in parseonetoken()
2487 psp->declkeyword = x; in parseonetoken()
2488 psp->declargslot = 0; in parseonetoken()
2489 psp->decllinenoslot = 0; in parseonetoken()
2490 psp->insertLineMacro = 1; in parseonetoken()
2491 psp->state = WAITING_FOR_DECL_ARG; in parseonetoken()
2493 psp->declargslot = &(psp->gp->name); in parseonetoken()
2494 psp->insertLineMacro = 0; in parseonetoken()
2496 psp->declargslot = &(psp->gp->include); in parseonetoken()
2498 psp->declargslot = &(psp->gp->extracode); in parseonetoken()
2500 psp->declargslot = &psp->gp->tokendest; in parseonetoken()
2502 psp->declargslot = &psp->gp->vardest; in parseonetoken()
2504 psp->declargslot = &psp->gp->tokenprefix; in parseonetoken()
2505 psp->insertLineMacro = 0; in parseonetoken()
2507 psp->declargslot = &(psp->gp->error); in parseonetoken()
2509 psp->declargslot = &(psp->gp->accept); in parseonetoken()
2511 psp->declargslot = &(psp->gp->failure); in parseonetoken()
2513 psp->declargslot = &(psp->gp->overflow); in parseonetoken()
2515 psp->declargslot = &(psp->gp->arg); in parseonetoken()
2516 psp->insertLineMacro = 0; in parseonetoken()
2518 psp->declargslot = &(psp->gp->ctx); in parseonetoken()
2519 psp->insertLineMacro = 0; in parseonetoken()
2521 psp->declargslot = &(psp->gp->tokentype); in parseonetoken()
2522 psp->insertLineMacro = 0; in parseonetoken()
2524 psp->declargslot = &(psp->gp->vartype); in parseonetoken()
2525 psp->insertLineMacro = 0; in parseonetoken()
2527 psp->declargslot = &(psp->gp->stacksize); in parseonetoken()
2528 psp->insertLineMacro = 0; in parseonetoken()
2530 psp->declargslot = &(psp->gp->start); in parseonetoken()
2531 psp->insertLineMacro = 0; in parseonetoken()
2533 psp->preccounter++; in parseonetoken()
2534 psp->declassoc = LEFT; in parseonetoken()
2535 psp->state = WAITING_FOR_PRECEDENCE_SYMBOL; in parseonetoken()
2537 psp->preccounter++; in parseonetoken()
2538 psp->declassoc = RIGHT; in parseonetoken()
2539 psp->state = WAITING_FOR_PRECEDENCE_SYMBOL; in parseonetoken()
2541 psp->preccounter++; in parseonetoken()
2542 psp->declassoc = NONE; in parseonetoken()
2543 psp->state = WAITING_FOR_PRECEDENCE_SYMBOL; in parseonetoken()
2545 psp->state = WAITING_FOR_DESTRUCTOR_SYMBOL; in parseonetoken()
2547 psp->state = WAITING_FOR_DATATYPE_SYMBOL; in parseonetoken()
2549 psp->fallback = 0; in parseonetoken()
2550 psp->state = WAITING_FOR_FALLBACK_ID; in parseonetoken()
2552 psp->state = WAITING_FOR_TOKEN_NAME; in parseonetoken()
2554 psp->state = WAITING_FOR_WILDCARD_ID; in parseonetoken()
2556 psp->state = WAITING_FOR_CLASS_ID; in parseonetoken()
2558 ErrorMsg(psp->filename,psp->tokenlineno, in parseonetoken()
2560 psp->errorcnt++; in parseonetoken()
2561 psp->state = RESYNC_AFTER_DECL_ERROR; in parseonetoken()
2564 ErrorMsg(psp->filename,psp->tokenlineno, in parseonetoken()
2566 psp->errorcnt++; in parseonetoken()
2567 psp->state = RESYNC_AFTER_DECL_ERROR; in parseonetoken()
2572 ErrorMsg(psp->filename,psp->tokenlineno, in parseonetoken()
2574 psp->errorcnt++; in parseonetoken()
2575 psp->state = RESYNC_AFTER_DECL_ERROR; in parseonetoken()
2578 psp->declargslot = &sp->destructor; in parseonetoken()
2579 psp->decllinenoslot = &sp->destLineno; in parseonetoken()
2580 psp->insertLineMacro = 1; in parseonetoken()
2581 psp->state = WAITING_FOR_DECL_ARG; in parseonetoken()
2586 ErrorMsg(psp->filename,psp->tokenlineno, in parseonetoken()
2588 psp->errorcnt++; in parseonetoken()
2589 psp->state = RESYNC_AFTER_DECL_ERROR; in parseonetoken()
2593 ErrorMsg(psp->filename,psp->tokenlineno, in parseonetoken()
2595 psp->errorcnt++; in parseonetoken()
2596 psp->state = RESYNC_AFTER_DECL_ERROR; in parseonetoken()
2601 psp->declargslot = &sp->datatype; in parseonetoken()
2602 psp->insertLineMacro = 0; in parseonetoken()
2603 psp->state = WAITING_FOR_DECL_ARG; in parseonetoken()
2609 psp->state = WAITING_FOR_DECL_OR_RULE; in parseonetoken()
2614 ErrorMsg(psp->filename,psp->tokenlineno, in parseonetoken()
2616 psp->errorcnt++; in parseonetoken()
2618 sp->prec = psp->preccounter; in parseonetoken()
2619 sp->assoc = psp->declassoc; in parseonetoken()
2622 ErrorMsg(psp->filename,psp->tokenlineno, in parseonetoken()
2624 psp->errorcnt++; in parseonetoken()
2637 if( *psp->declargslot ){ in parseonetoken()
2638 zOld = *psp->declargslot; in parseonetoken()
2644 addLineMacro = !psp->gp->nolinenosflag in parseonetoken()
2645 && psp->insertLineMacro in parseonetoken()
2646 && psp->tokenlineno>1 in parseonetoken()
2647 && (psp->decllinenoslot==0 || psp->decllinenoslot[0]!=0); in parseonetoken()
2649 for(z=psp->filename, nBack=0; *z; z++){ in parseonetoken()
2652 lemon_sprintf(zLine, "#line %d ", psp->tokenlineno); in parseonetoken()
2654 n += nLine + lemonStrlen(psp->filename) + nBack; in parseonetoken()
2656 *psp->declargslot = (char *) realloc(*psp->declargslot, n); in parseonetoken()
2657 zBuf = *psp->declargslot + nOld; in parseonetoken()
2665 for(z=psp->filename; *z; z++){ in parseonetoken()
2674 if( psp->decllinenoslot && psp->decllinenoslot[0]==0 ){ in parseonetoken()
2675 psp->decllinenoslot[0] = psp->tokenlineno; in parseonetoken()
2680 psp->state = WAITING_FOR_DECL_OR_RULE; in parseonetoken()
2682 ErrorMsg(psp->filename,psp->tokenlineno, in parseonetoken()
2683 "Illegal argument to %%%s: %s",psp->declkeyword,x); in parseonetoken()
2684 psp->errorcnt++; in parseonetoken()
2685 psp->state = RESYNC_AFTER_DECL_ERROR; in parseonetoken()
2690 psp->state = WAITING_FOR_DECL_OR_RULE; in parseonetoken()
2692 ErrorMsg(psp->filename, psp->tokenlineno, in parseonetoken()
2694 psp->errorcnt++; in parseonetoken()
2697 if( psp->fallback==0 ){ in parseonetoken()
2698 psp->fallback = sp; in parseonetoken()
2700 ErrorMsg(psp->filename, psp->tokenlineno, in parseonetoken()
2702 psp->errorcnt++; in parseonetoken()
2704 sp->fallback = psp->fallback; in parseonetoken()
2705 psp->gp->has_fallback = 1; in parseonetoken()
2720 psp->state = WAITING_FOR_DECL_OR_RULE; in parseonetoken()
2722 ErrorMsg(psp->filename, psp->tokenlineno, in parseonetoken()
2724 psp->errorcnt++; in parseonetoken()
2731 psp->state = WAITING_FOR_DECL_OR_RULE; in parseonetoken()
2733 ErrorMsg(psp->filename, psp->tokenlineno, in parseonetoken()
2735 psp->errorcnt++; in parseonetoken()
2738 if( psp->gp->wildcard==0 ){ in parseonetoken()
2739 psp->gp->wildcard = sp; in parseonetoken()
2741 ErrorMsg(psp->filename, psp->tokenlineno, in parseonetoken()
2743 psp->errorcnt++; in parseonetoken()
2749 ErrorMsg(psp->filename, psp->tokenlineno, in parseonetoken()
2751 psp->errorcnt++; in parseonetoken()
2752 psp->state = RESYNC_AFTER_DECL_ERROR; in parseonetoken()
2754 ErrorMsg(psp->filename, psp->tokenlineno, in parseonetoken()
2756 psp->errorcnt++; in parseonetoken()
2757 psp->state = RESYNC_AFTER_DECL_ERROR; in parseonetoken()
2759 psp->tkclass = Symbol_new(x); in parseonetoken()
2760 psp->tkclass->type = MULTITERMINAL; in parseonetoken()
2761 psp->state = WAITING_FOR_CLASS_TOKEN; in parseonetoken()
2766 psp->state = WAITING_FOR_DECL_OR_RULE; in parseonetoken()
2768 struct symbol *msp = psp->tkclass; in parseonetoken()
2775 ErrorMsg(psp->filename, psp->tokenlineno, in parseonetoken()
2777 psp->errorcnt++; in parseonetoken()
2778 psp->state = RESYNC_AFTER_DECL_ERROR; in parseonetoken()
2785 if( x[0]=='.' ) psp->state = WAITING_FOR_DECL_OR_RULE; in parseonetoken()
2786 if( x[0]=='%' ) psp->state = WAITING_FOR_DECL_KEYWORD; in parseonetoken()