📄 y.tab.c
字号:
/* Copyright (c) 1979 Regents of the University of California */#ifndef lintstatic char sccsid[] = "@(#)pas.y 8.1 6/6/93";#endif#include "whoami.h"#include "0.h"#include "tree_ty.h" /* must be included for yy.h */#include "yy.h"#include "tree.h"#ifdef PI#define lineof(l) l#define line2of(l) l#endifextern yyerrflag;union semstack yyval;union semstack *yypv;yyactr(__np__){ register union semstack *yyYpv; register struct tnode *p, *q; yyYpv = yypv;switch(__np__){case 1: funcend(yyYpv[1].nl_entry, yyYpv[3].tr_entry, lineof(yyYpv[4].i_entry)); break;case 2: segend(); break;case 3: yyval.nl_entry = funcbody(funchdr(tree5(T_PROG, lineof(yyYpv[1].i_entry), yyYpv[2].tr_entry, fixlist(yyYpv[4].tr_entry), TR_NIL))); break;case 4: yyval.nl_entry = funcbody(funchdr(tree5(T_PROG, lineof(yyYpv[1].i_entry), yyYpv[2].tr_entry, TR_NIL, TR_NIL))); break;case 5: { yyPerror("Malformed program statement", PPROG); /* * Should make a program statement * with "input" and "output" here. */ yyval.nl_entry = funcbody(funchdr(tree5(T_PROG, lineof(yyYpv[1].i_entry), TR_NIL, TR_NIL, TR_NIL))); } break;case 6: { yyval.tr_entry = tree3(T_BSTL, lineof(yyYpv[1].i_entry), fixlist(yyYpv[2].tr_entry)); if (yyYpv[3].i_entry < 0) brerror(yyYpv[1].i_entry, "begin"); } break;case 7: trfree(); break;case 8: { constend(), typeend(), varend(), trfree(); yyPerror("Malformed declaration", PDECL); } break;case 9: trfree(); break;case 11: constend(); break;case 12: typeend(); break;case 13: varend(); break;case 15: label(fixlist(yyYpv[2].tr_entry), lineof(yyYpv[1].i_entry)); break;case 16: yyval.tr_entry = newlist(yyYpv[1].i_entry == NIL ? TR_NIL : (struct tnode *) *hash(yyYpv[1].cptr, 1)); break;case 17: yyval.tr_entry = addlist(yyYpv[1].tr_entry, yyYpv[3].i_entry == NIL ? TR_NIL : (struct tnode *) *hash(yyYpv[3].cptr, 1)); break;case 18: constbeg(yyYpv[1].i_entry, lineof(yyYpv[1].i_entry)), constant(lineof(yyYpv[3].i_entry), yyYpv[2].cptr, yyYpv[4].tr_entry); break;case 19: constant(lineof(yyYpv[3].i_entry), yyYpv[2].cptr, yyYpv[4].tr_entry); break;case 20: { constbeg(yyYpv[1].i_entry);Cerror: yyPerror("Malformed const declaration", PDECL); } break;case 21: goto Cerror; break;case 22: typebeg(yyYpv[1].i_entry, line2of(yyYpv[2].i_entry)), type(lineof(yyYpv[3].i_entry), yyYpv[2].cptr, yyYpv[4].tr_entry); break;case 23: type(lineof(yyYpv[3].i_entry), yyYpv[2].cptr, yyYpv[4].tr_entry); break;case 24: { typebeg(yyYpv[1].i_entry, line2of(yyYpv[1].i_entry));Terror: yyPerror("Malformed type declaration", PDECL); } break;case 25: goto Terror; break;case 26: varbeg(yyYpv[1].i_entry, line2of(yyYpv[3].i_entry)), var(lineof(yyYpv[3].i_entry), fixlist(yyYpv[2].tr_entry), yyYpv[4].tr_entry); break;case 27: var(lineof(yyYpv[3].i_entry), fixlist(yyYpv[2].tr_entry), yyYpv[4].tr_entry); break;case 28: { varbeg(yyYpv[1].i_entry, line2of(yyYpv[1].i_entry));Verror: yyPerror("Malformed var declaration", PDECL); } break;case 29: goto Verror; break;case 30: funcfwd(yyYpv[1].nl_entry); break;case 31: (void) funcext(yyYpv[1].nl_entry); break;case 32: funcend(yyYpv[1].nl_entry, yyYpv[3].tr_entry, lineof(yyYpv[4].i_entry)); break;case 34: (void) funcbody(yyYpv[1].nl_entry); break;case 35: yyval.nl_entry = funchdr(tree5(yyYpv[1].i_entry, lineof(yyYpv[5].i_entry), yyYpv[2].tr_entry, yyYpv[3].tr_entry, yyYpv[4].tr_entry)); break;case 36: yyval.i_entry = T_PDEC; break;case 37: yyval.i_entry = T_FDEC; break;case 38: yyval.tr_entry = fixlist(yyYpv[2].tr_entry); break;case 39: yyval.tr_entry = TR_NIL; break;case 40: yyval.tr_entry = tree3(T_PVAL, (int) fixlist(yyYpv[1].tr_entry), yyYpv[3].tr_entry); break;case 41: yyval.tr_entry = tree3(T_PVAR, (int) fixlist(yyYpv[2].tr_entry), yyYpv[4].tr_entry); break;case 42: yyval.tr_entry = tree5(T_PFUNC, (int) fixlist(yyYpv[2].tr_entry), yyYpv[4].tr_entry, yyYpv[3].tr_entry, (struct tnode *) lineof(yyYpv[1].i_entry)); break;case 43: yyval.tr_entry = tree5(T_PPROC, (int) fixlist(yyYpv[2].tr_entry), yyYpv[4].tr_entry, yyYpv[3].tr_entry, (struct tnode *) lineof(yyYpv[1].i_entry)); break;case 44: yyval = yyYpv[2]; break;case 45: yyval.tr_entry = TR_NIL; break;case 46: yyval.tr_entry = newlist(yyYpv[1].tr_entry); break;case 47: yyval.tr_entry = addlist(yyYpv[1].tr_entry, yyYpv[3].tr_entry); break;case 48: yyval.tr_entry = tree2(T_CSTRNG, yyYpv[1].i_entry); break;case 50: yyval.tr_entry = tree2(T_PLUSC, yyYpv[2].i_entry); break;case 51: yyval.tr_entry = tree2(T_MINUSC, yyYpv[2].i_entry); break;case 52: yyval.tr_entry = tree2(T_ID, yyYpv[1].i_entry); break;case 53: yyval.tr_entry = tree2(T_CINT, yyYpv[1].i_entry); break;case 54: yyval.tr_entry = tree2(T_CBINT, yyYpv[1].i_entry); break;case 55: yyval.tr_entry = tree2(T_CFINT, yyYpv[1].i_entry); break;case 56: yyval.tr_entry = newlist(yyYpv[1].tr_entry); break;case 57: yyval.tr_entry = addlist(yyYpv[1].tr_entry, yyYpv[3].tr_entry); break;case 59: yyval.tr_entry = tree3(T_TYPTR, lineof(yyYpv[1].i_entry), tree2(T_ID, yyYpv[2].i_entry)); break;case 61: yyval.tr_entry = tree3(T_TYPACK, lineof(yyYpv[1].i_entry), yyYpv[2].tr_entry); break;case 63: yyval.tr_entry = tree3(T_TYSCAL, lineof(yyYpv[1].i_entry), fixlist(yyYpv[2].tr_entry)); break;case 64: yyval.tr_entry = tree4(T_TYRANG, lineof(yyYpv[2].i_entry), yyYpv[1].tr_entry, yyYpv[3].tr_entry); break;case 65: yyval.tr_entry = tree4(T_TYARY, lineof(yyYpv[1].i_entry), fixlist(yyYpv[3].tr_entry), yyYpv[6].tr_entry); break;case 66: yyval.tr_entry = tree3(T_TYFILE, lineof(yyYpv[1].i_entry), yyYpv[3].tr_entry); break;case 67: yyval.tr_entry = tree3(T_TYSET, lineof(yyYpv[1].i_entry), yyYpv[3].tr_entry); break;case 68: { yyval.tr_entry = setuptyrec( lineof( yyYpv[1].i_entry ) , yyYpv[2].tr_entry); if (yyYpv[3].i_entry < 0) brerror(yyYpv[1].i_entry, "record"); } break;case 69: yyval.tr_entry = newlist(yyYpv[1].tr_entry); break;case 70: yyval.tr_entry = addlist(yyYpv[1].tr_entry, yyYpv[3].tr_entry); break;case 71: yyval.tr_entry = tree4(T_FLDLST, lineof(NIL), fixlist(yyYpv[1].tr_entry), yyYpv[2].tr_entry); break;case 72: yyval.tr_entry = newlist(yyYpv[1].tr_entry); break;case 73: yyval.tr_entry = addlist(yyYpv[1].tr_entry, yyYpv[3].tr_entry); break;case 74: yyPerror("Malformed record declaration", PDECL); break;case 75: yyval.tr_entry = TR_NIL; break;case 76: yyval.tr_entry = tree4(T_RFIELD, lineof(yyYpv[2].i_entry), fixlist(yyYpv[1].tr_entry), yyYpv[3].tr_entry); break;case 77: yyval.tr_entry = TR_NIL; break;case 78: yyval.tr_entry = tree5(T_TYVARPT, lineof(yyYpv[1].i_entry), TR_NIL, yyYpv[2].tr_entry, fixlist(yyYpv[4].tr_entry)); break;case 79: yyval.tr_entry = tree5(T_TYVARPT, lineof(yyYpv[1].i_entry), yyYpv[2].tr_entry, yyYpv[4].tr_entry, fixlist(yyYpv[6].tr_entry)); break;case 80: yyval.tr_entry = newlist(yyYpv[1].tr_entry); break;case 81: yyval.tr_entry = addlist(yyYpv[1].tr_entry, yyYpv[3].tr_entry); break;case 82: yyPerror("Malformed record declaration", PDECL); break;case 83: yyval.tr_entry = TR_NIL; break;case 84: yyval.tr_entry = tree4(T_TYVARNT,lineof(yyYpv[2].i_entry), fixlist(yyYpv[1].tr_entry), yyYpv[4].tr_entry); break;case 85: yyval.tr_entry = newlist(yyYpv[1].tr_entry); break;case 86: { if ((p = yyYpv[1].tr_entry) != TR_NIL && (q = p->list_node.list)->tag == T_IFX) { q->tag = T_IFEL; q->if_node.else_stmnt = yyYpv[2].tr_entry; } else yyval.tr_entry= addlist(yyYpv[1].tr_entry, yyYpv[2].tr_entry); } break;case 87: if ((q = yyYpv[1].tr_entry) != TR_NIL && (p = q->list_node.list) != TR_NIL && p->tag == T_IF) { if (yychar < 0) yychar = yylex(); if (yyshifts >= 2 && yychar == YELSE) { recovered(); copy((char *) (&Y), (char *) (&OY), sizeof Y); yerror("Deleted ';' before keyword else"); yychar = yylex(); p->tag = T_IFX; } } break;case 88: yyval.tr_entry = newlist(yyYpv[1].tr_entry); break;case 89: yyval.tr_entry = addlist(yyYpv[1].tr_entry, yyYpv[3].tr_entry); break;case 90: { yyval.tr_entry = TR_NIL;Kerror: yyPerror("Malformed statement in case", PSTAT); } break;case 91: goto Kerror; break;case 92: yyval.tr_entry = tree4(T_CSTAT, lineof(yyYpv[2].i_entry), fixlist(yyYpv[1].tr_entry), yyYpv[3].tr_entry); break;case 93: yyval.tr_entry = tree4(T_CSTAT, lineof(yyYpv[1].i_entry), TR_NIL, yyYpv[2].tr_entry); break;case 94: yyval.tr_entry = TR_NIL; break;case 95: yyval.tr_entry = TR_NIL; break;case 96: yyval.tr_entry = tree4(T_LABEL, lineof(yyYpv[2].i_entry), yyYpv[1].tr_entry == TR_NIL ? TR_NIL : (struct tnode *) *hash(yyYpv[1].cptr, 1), yyYpv[3].tr_entry); break;case 97: yyval.tr_entry = tree4(T_PCALL, lineof(yyline), yyYpv[1].tr_entry, TR_NIL); break;case 98: yyval.tr_entry = tree4(T_PCALL, lineof(yyYpv[2].i_entry), yyYpv[1].tr_entry, fixlist(yyYpv[3].tr_entry)); break;case 99: goto NSerror; break;case 101: { yyval.tr_entry = tree3(T_BLOCK, lineof(yyYpv[1].i_entry), fixlist(yyYpv[2].tr_entry)); if (yyYpv[3].i_entry < 0) brerror(yyYpv[1].i_entry, "begin"); } break;case 102: { yyval.tr_entry = tree4(T_CASE, lineof(yyYpv[1].i_entry), yyYpv[2].tr_entry, fixlist(yyYpv[4].tr_entry)); if (yyYpv[5].i_entry < 0) brerror(yyYpv[1].i_entry, "case"); } break;case 103: yyval.tr_entry = tree4(T_WITH, lineof(yyYpv[1].i_entry), fixlist(yyYpv[2].tr_entry), yyYpv[4].tr_entry); break;case 104: yyval.tr_entry = tree4(T_WHILE, lineof(yyYpv[1].i_entry), yyYpv[2].tr_entry, yyYpv[4].tr_entry); break;case 105: yyval.tr_entry = tree4(T_REPEAT, lineof(yyYpv[3].i_entry), fixlist(yyYpv[2].tr_entry), yyYpv[4].tr_entry); break;case 106: yyval.tr_entry = tree5(T_FORU, lineof(yyYpv[1].i_entry), yyYpv[2].tr_entry, yyYpv[4].tr_entry, yyYpv[6].tr_entry); break;case 107: yyval.tr_entry = tree5(T_FORD, lineof(yyYpv[1].i_entry), yyYpv[2].tr_entry, yyYpv[4].tr_entry, yyYpv[6].tr_entry); break;case 108: yyval.tr_entry = tree3(T_GOTO, lineof(yyYpv[1].i_entry), (struct tnode *) *hash(yyYpv[2].cptr, 1)); break;case 109: yyval.tr_entry = tree5(T_IF, lineof(yyYpv[1].i_entry), yyYpv[2].tr_entry, yyYpv[4].tr_entry, TR_NIL); break;case 110: yyval.tr_entry = tree5(T_IFEL, lineof(yyYpv[1].i_entry), yyYpv[2].tr_entry, yyYpv[4].tr_entry, yyYpv[6].tr_entry); break;case 111: {NSerror: yyval.tr_entry = TR_NIL; yyPerror("Malformed statement", PSTAT); } break;case 112: yyval.tr_entry = tree4(T_ASGN, lineof(yyYpv[2].i_entry), yyYpv[1].tr_entry, yyYpv[4].tr_entry); break;case 113: {NEerror: yyval.tr_entry = TR_NIL; yyPerror("Missing/malformed expression", PEXPR); } break;case 114: yyval.tr_entry = tree4(yyYpv[2].i_entry, yyYpv[1].tr_entry->expr_node.const_tag == SAWCON ? yyYpv[3].tr_entry->expr_node.const_tag : yyYpv[1].tr_entry->expr_node.const_tag, yyYpv[1].tr_entry, yyYpv[3].tr_entry); break;case 115: yyval.tr_entry = tree3(T_PLUS, yyYpv[2].tr_entry->expr_node.const_tag, yyYpv[2].tr_entry); break;case 116: yyval.tr_entry = tree3(T_MINUS, yyYpv[2].tr_entry->expr_node.const_tag, yyYpv[2].tr_entry); break;case 117: yyval.tr_entry = tree4(yyYpv[2].i_entry, yyYpv[1].tr_entry->expr_node.const_tag == SAWCON ? yyYpv[3].tr_entry->expr_node.const_tag : yyYpv[1].tr_entry->expr_node.const_tag, yyYpv[1].tr_entry, yyYpv[3].tr_entry); break;case 118: yyval.tr_entry = tree4(yyYpv[2].i_entry, yyYpv[1].tr_entry->expr_node.const_tag == SAWCON ? yyYpv[3].tr_entry->expr_node.const_tag : yyYpv[1].tr_entry->expr_node.const_tag, yyYpv[1].tr_entry, yyYpv[3].tr_entry); break;case 119: yyval.tr_entry = tree2(T_NIL, NOCON); break;case 120: yyval.tr_entry = tree3(T_STRNG, SAWCON, yyYpv[1].tr_entry); break;case 121: yyval.tr_entry = tree3(T_INT, NOCON, yyYpv[1].tr_entry); break;case 122: yyval.tr_entry = tree3(T_BINT, NOCON, yyYpv[1].tr_entry); break;case 123: yyval.tr_entry = tree3(T_FINT, NOCON, yyYpv[1].tr_entry); break;case 125: goto NEerror; break;case 126: yyval.tr_entry = tree4(T_FCALL, NOCON, yyYpv[1].tr_entry, fixlist(yyYpv[3].tr_entry)); break;case 127: yyval.tr_entry = yyYpv[2].tr_entry; break;case 128: yyval.tr_entry = tree3(T_NOT, NOCON, yyYpv[2].tr_entry); break;case 129: yyval.tr_entry = tree3(T_CSET, SAWCON, fixlist(yyYpv[2].tr_entry)); break;case 130: yyval.tr_entry = tree3(T_CSET, SAWCON, TR_NIL); break;case 131: yyval.tr_entry = newlist(yyYpv[1].tr_entry); break;case 132: yyval.tr_entry = addlist(yyYpv[1].tr_entry, yyYpv[3].tr_entry); break;case 134: yyval.tr_entry = tree3(T_RANG, yyYpv[1].i_entry, yyYpv[3].tr_entry); break;case 135: { yyval.tr_entry = setupvar(yyYpv[1].cptr, TR_NIL); } break;case 136: yyYpv[1].tr_entry->var_node.qual = fixlist(yyYpv[1].tr_entry->var_node.qual); break;case 137: yyval.tr_entry = setupvar(yyYpv[1].cptr, tree2(T_ARY, (int) fixlist(yyYpv[3].tr_entry))); break;case 138: yyYpv[1].tr_entry->var_node.qual = addlist(yyYpv[1].tr_entry->var_node.qual, tree2(T_ARY, (int) fixlist(yyYpv[3].tr_entry))); break;case 139: yyval.tr_entry = setupvar(yyYpv[1].cptr, setupfield(yyYpv[3].tr_entry, TR_NIL)); break;case 140: yyYpv[1].tr_entry->var_node.qual = addlist(yyYpv[1].tr_entry->var_node.qual, setupfield(yyYpv[3].tr_entry, TR_NIL)); break;case 141: yyval.tr_entry = setupvar(yyYpv[1].cptr, tree1(T_PTR)); break;case 142: yyYpv[1].tr_entry->var_node.qual = addlist(yyYpv[1].tr_entry->var_node.qual, tree1(T_PTR)); break;case 144: yyval.tr_entry = tree4(T_WEXP, yyYpv[1].i_entry, yyYpv[3].tr_entry, TR_NIL); break;case 145: yyval.tr_entry = tree4(T_WEXP, yyYpv[1].i_entry, yyYpv[3].tr_entry, yyYpv[5].tr_entry); break;case 146: yyval.tr_entry = tree4(T_WEXP, yyYpv[1].i_entry, TR_NIL, yyYpv[2].tr_entry); break;case 147: yyval.tr_entry = tree4(T_WEXP, yyYpv[1].i_entry, yyYpv[3].tr_entry, yyYpv[4].tr_entry); break;case 148: yyval.i_entry = OCT; break;case 149: yyval.i_entry = HEX; break;case 150: yyval.tr_entry = newlist(yyYpv[1].tr_entry); break;case 151: yyval.tr_entry = addlist(yyYpv[1].tr_entry, yyYpv[3].tr_entry); break;case 152: yyval.tr_entry = newlist(yyYpv[1].tr_entry); break;case 153: yyval.tr_entry = addlist(yyYpv[1].tr_entry, yyYpv[3].tr_entry); break;case 154: yyval.i_entry = T_EQ; break;case 155: yyval.i_entry = T_LT; break;case 156: yyval.i_entry = T_GT; break;case 157: yyval.i_entry = T_NE; break;case 158: yyval.i_entry = T_LE; break;case 159: yyval.i_entry = T_GE; break;case 160: yyval.i_entry = T_IN; break;case 161: yyval.i_entry = T_ADD; break;case 162: yyval.i_entry = T_SUB; break;case 163: yyval.i_entry = T_OR; break;case 164: yyval.i_entry = T_OR; break;case 165: yyval.i_entry = T_MULT; break;case 166: yyval.i_entry = T_DIVD; break;case 167: yyval.i_entry = T_DIV; break;case 168: yyval.i_entry = T_MOD; break;case 169: yyval.i_entry = T_AND; break;case 170: yyval.i_entry = T_AND; break;case 173: yyval.tr_entry = newlist(yyYpv[1].tr_entry); break;case 174: yyval.tr_entry = addlist(yyYpv[1].tr_entry, yyYpv[3].tr_entry); break;case 175: yyval.tr_entry = newlist(yyYpv[1].tr_entry); break;case 176: yyval.tr_entry = addlist(yyYpv[1].tr_entry, yyYpv[3].tr_entry); break;case 178: { yyval.tr_entry = tree3(T_TYID, lineof(yyline), yyYpv[1].tr_entry); } break;}}int yyact[] = {0,-286,8196,12297,0,16384,4096,12297,0,12290
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -