sc.c

来自「<B>Digital的Unix操作系统VAX 4.2源码</B>」· C语言 代码 · 共 975 行 · 第 1/2 页

C
975
字号
    nexttoken = QUOTE;    scandata.si_dflag = 0;    getnext();    for (i = 0; nextchar != '"'; i++)	{	scandata.si_name[i] = nextchar;	getnext();	}    scandata.si_name[i] = '\0';    scandata.si_idlen = i;}/* * Called if first char of token was a period. * Get 2nd period. */dot(){    getnext();    if (nextchar == '.')	nexttoken = DOTDOT;    else	{	ahead = 1;	nexttoken = DOT;	}}/* * Called if first char of token was a colon. * Determines if its a variable declaration or an assignment stmt. */colon(){    getnext();    if (nextchar == '=')	nexttoken = ASSIGNOP;    else	{	ahead = 1;	nexttoken = COLON;	}}/* * Called if first char of token was <, > or =. * Determines which of the 6 relational ops it is. */relation(){    nexttoken = RELATIONAL;    switch (nextchar) {    case '<':	getnext();	if (nextchar == '>')	    scandata.si_rel = nerel;	else	    if (nextchar == '=')		scandata.si_rel = lerel;	    else		{		scandata.si_rel = ltrel;		ahead = 1;		}	break;    case '>':	getnext();	if (nextchar == '=')	    scandata.si_rel = gerel;	else	    {	    scandata.si_rel = gtrel;	    ahead = 1;	    }	break;    case '=':	scandata.si_rel = eqrel;	break;    }}/* * Initialize the: *   Pascal Reserved Word data structures *   Single-character Token data structures */init(){    /*     * Where keywords of each respective character length [n]     * start in the resword array.     */    resindex[1] = 0;    resindex[2] = 8;    resindex[3] = 1;    resindex[4] = 5;    resindex[5] = 2;    resindex[6] = 28;    resindex[7] = 3;    resindex[8] = 15;    resindex[9] = 29;    resindex[10] = 0;    resindex[11] = 0;    resindex[12] = 0;    strcpy (resword[1] , "and");    restoken[1] = ANDT;    resnext[1] = 24;    strcpy (resword[2], "array");    restoken[2] = ARRAYT;    resnext[2] = 7;    strcpy (resword[3], "boolean");    restoken[3] = BOOLEANT;    resnext[3] = 18;    strcpy (resword[5], "char");    restoken[5] = CHART;    resnext[5] = 9;    strcpy (resword[6], "in");    restoken[6] = IN;    resnext[6] = 26;    strcpy (resword[7], "const");    restoken[7] = CONSTT;    resnext[7] = 17;    strcpy (resword[8], "do");    restoken[8] = LOOPDO;    resnext[8] = 20;    strcpy (resword[9], "else");    restoken[9] = ELSET;    resnext[9] = 31;    strcpy (resword[15], "external");    restoken[15] = EXTERNALT;    resnext[15] = 19;    strcpy (resword[16], "include");    restoken[16] = INCLUDET;    resnext[16] = 21;    strcpy (resword[17], "false");    restoken[17] = FALSET;    resnext[17] = 38;    strcpy (resword[18], "forward");    restoken[18] = FORWARDT;    resnext[18] = 16;    strcpy (resword[19], "function");    restoken[19] = FUNCTIONT;    resnext[19] = 66;    strcpy (resword[20], "if");    restoken[20] = IFT;    resnext[20] = 6;    strcpy (resword[21], "integer");    restoken[21] = INTEGERT;    resnext[21] = 30;    strcpy (resword[24], "mod");    restoken[24] = MODT;    resnext[24] = 25;    strcpy (resword[25], "not");    restoken[25] = NOTT;    resnext[25] = 37;    strcpy (resword[26], "of");    restoken[26] = OFT;    resnext[26] = 27;    strcpy (resword[27], "or");    restoken[27] = ORT;    resnext[27] = 52;    strcpy (resword[28], "packed");    restoken[28] = PACKED;    resnext[28] = 32;    strcpy (resword[29], "procedure");    restoken[29] = PROCEDURET;    resnext[29] = 60;    strcpy (resword[30], "program");    restoken[30] = PROGRAMT;    resnext[30] = 40;    strcpy (resword[31], "read");    restoken[31] = READT;    resnext[31] = 34;    strcpy (resword[32], "readln");    restoken[32] = READLNT;    resnext[32] = 44;    strcpy (resword[34], "then");    restoken[34] = THENT;    resnext[34] = 35;    strcpy (resword[35], "true");    restoken[35] = TRUET;    resnext[35] = 36;    strcpy (resword[36], "type");    restoken[36] = TYPET;    resnext[36] = 41;    strcpy (resword[37], "var");    restoken[37] = VART;    resnext[37] = 43;    strcpy (resword[38], "while");    restoken[38] = WHILET;    resnext[38] = 39;    strcpy (resword[39], "write");    restoken[39] = WRITET;    resnext[39] = 46;    strcpy (resword[40], "writeln");    restoken[40] = WRITELNT;    resnext[40] = 57;    strcpy (resword[41], "file");    restoken[41] = FILET;    resnext[41] = 42;    strcpy (resword[42], "real");    restoken[42] = REALT;    resnext[42] = 47;    strcpy (resword[43], "set");    restoken[43] = SETT;    resnext[43] = 45;    strcpy (resword[44], "record");    restoken[44] = RECORDT;    resnext[44] = 50;    strcpy (resword[45], "end");    restoken[45] = ENDT;    resnext[45] = 49;    strcpy (resword[46], "begin");    restoken[46] = BEGINT;    resnext[46] = 55;    strcpy (resword[47], "case");    restoken[47] = CASET;    resnext[47] = 48;    strcpy (resword[48], "with");    restoken[48] = WITHT;    resnext[48] = 54;    strcpy (resword[49], "for");    restoken[49] = FORT;    resnext[49] = 51;    strcpy (resword[50], "repeat");    restoken[50] = REPEATT;    resnext[50] = 53;    strcpy (resword[51], "div");    restoken[51] = INTDIVT;    resnext[51] = 61;    strcpy (resword[52], "to");    restoken[52] = TOT;    resnext[52] = 0;    strcpy (resword[53], "downto");    restoken[53] = DOWNTOT;    resnext[53] = 59;    strcpy (resword[54], "goto");    restoken[54] = GOTOT;    resnext[54] = 0;    strcpy (resword[55], "until");    restoken[55] = UNTILT;    resnext[55] = 56;    strcpy (resword[56], "label");    restoken[56] = LABELT;    resnext[56] = 62;    strcpy (resword[57], "varying");    restoken[57] = VARYING;    resnext[57] = 58;    strcpy (resword[58], "fortran");    restoken[58] = EXTERNALT;    resnext[58] = 64;    strcpy (resword[59], "extern");    restoken[59] = EXTERNALT;    resnext[59] = 67;    strcpy (resword[60], "otherwise");    restoken[60] = OTHERWISE;    resnext[60] = 69;    strcpy (resword[61], "rem");    restoken[61] = MODT;    resnext[61] = 65;    strcpy (resword[62], "descr");    restoken[62] = MECHT;    resnext[62] = 63;    strcpy (resword[63], "immed");    restoken[63] = MECHT;    resnext[63] = 0;    strcpy (resword[64], "stdescr");    restoken[64] = MECHT;    resnext[64] = 0;    strcpy (resword[65], "ref");    restoken[65] = MECHT;    resnext[65] = 0;    strcpy (resword[66], "unsigned");    restoken[66] = UNSIGNT;    resnext[66] = 0;    strcpy (resword[67], "single");    restoken[67] = REALT;    resnext[67] = 68;    strcpy (resword[68], "double");    restoken[68] = DOUBLE;    resnext[68] = 70;    strcpy (resword[69], "quadruple");    restoken[69] = DOUBLE;    resnext[69] = 0;    strcpy (resword[70], "module");    restoken[70] = MODULET;    resnext[70] = 0;    chartoken[0] = ILLEGALTOKE;    chartoken[1] = ILLEGALTOKE;    chartoken[2] = ILLEGALTOKE;    chartoken[3] = ILLEGALTOKE;    chartoken[4] = ILLEGALTOKE;    chartoken[5] = ILLEGALTOKE;    chartoken[6] = ILLEGALTOKE;    chartoken[7] = ILLEGALTOKE;    chartoken[8] = ILLEGALTOKE;    chartoken[9] = ILLEGALTOKE;    chartoken[10] = ILLEGALTOKE;    chartoken[11] = ILLEGALTOKE;    chartoken[12] = ILLEGALTOKE;    chartoken[13] = ILLEGALTOKE;    chartoken[14] = ILLEGALTOKE;    chartoken[15] = ILLEGALTOKE;    chartoken[16] = ILLEGALTOKE;    chartoken[17] = ILLEGALTOKE;    chartoken[18] = ILLEGALTOKE;    chartoken[19] = ILLEGALTOKE;    chartoken[20] = ILLEGALTOKE;    chartoken[21] = ILLEGALTOKE;    chartoken[22] = ILLEGALTOKE;    chartoken[23] = ILLEGALTOKE;    chartoken[24] = ILLEGALTOKE;    chartoken[25] = ILLEGALTOKE;    chartoken[26] = ILLEGALTOKE;    chartoken[27] = ILLEGALTOKE;    chartoken[28] = ILLEGALTOKE;    chartoken[29] = ILLEGALTOKE;    chartoken[30] = ILLEGALTOKE;    chartoken[31] = ILLEGALTOKE;    chartoken[32] = ILLEGALTOKE;    chartoken[33] = ILLEGALTOKE;    chartoken[34] = QUOTE;    chartoken[35] = POUND;    chartoken[36] = ILLEGALTOKE;    chartoken[37] = PERCENT;    chartoken[38] = ILLEGALTOKE;    chartoken[39] = ILLEGALTOKE;    chartoken[40] = LEFTPAREN;    chartoken[41] = RIGHTPAREN;    chartoken[42] = MULT;    chartoken[43] = PLUS;    chartoken[44] = COMMA;    chartoken[45] = MINUS;    chartoken[46] = ILLEGALTOKE;    chartoken[47] = DIVT;    chartoken[48] = ILLEGALTOKE;    chartoken[49] = ILLEGALTOKE;    chartoken[50] = ILLEGALTOKE;    chartoken[51] = ILLEGALTOKE;    chartoken[52] = ILLEGALTOKE;    chartoken[53] = ILLEGALTOKE;    chartoken[54] = ILLEGALTOKE;    chartoken[55] = ILLEGALTOKE;    chartoken[56] = ILLEGALTOKE;    chartoken[57] = ILLEGALTOKE;    chartoken[58] = COLON;    chartoken[59] = SEMICOLON;    chartoken[60] = ILLEGALTOKE;    chartoken[61] = ILLEGALTOKE;    chartoken[62] = ILLEGALTOKE;    chartoken[63] = ILLEGALTOKE;    chartoken[64] = ILLEGALTOKE;    chartoken[65] = ILLEGALTOKE;    chartoken[66] = ILLEGALTOKE;    chartoken[67] = ILLEGALTOKE;    chartoken[68] = ILLEGALTOKE;    chartoken[69] = ILLEGALTOKE;    chartoken[70] = ILLEGALTOKE;    chartoken[71] = ILLEGALTOKE;    chartoken[72] = ILLEGALTOKE;    chartoken[73] = ILLEGALTOKE;    chartoken[74] = ILLEGALTOKE;    chartoken[75] = ILLEGALTOKE;    chartoken[76] = ILLEGALTOKE;    chartoken[77] = ILLEGALTOKE;    chartoken[78] = ILLEGALTOKE;    chartoken[79] = ILLEGALTOKE;    chartoken[80] = ILLEGALTOKE;    chartoken[81] = ILLEGALTOKE;    chartoken[82] = ILLEGALTOKE;    chartoken[83] = ILLEGALTOKE;    chartoken[84] = ILLEGALTOKE;    chartoken[85] = ILLEGALTOKE;    chartoken[86] = ILLEGALTOKE;    chartoken[87] = ILLEGALTOKE;    chartoken[88] = ILLEGALTOKE;    chartoken[89] = ILLEGALTOKE;    chartoken[90] = ILLEGALTOKE;    chartoken[91] = LEFTBRACKET;    chartoken[92] = ILLEGALTOKE;    chartoken[93] = RIGHTBRACKET;    chartoken[94] = UPARROW;    chartoken[95] = ILLEGALTOKE;    chartoken[96] = ILLEGALTOKE;    chartoken[97] = ILLEGALTOKE;    chartoken[98] = ILLEGALTOKE;    chartoken[99] = ILLEGALTOKE;    chartoken[100] = ILLEGALTOKE;    chartoken[101] = ILLEGALTOKE;    chartoken[102] = ILLEGALTOKE;    chartoken[103] = ILLEGALTOKE;    chartoken[104] = ILLEGALTOKE;    chartoken[105] = ILLEGALTOKE;    chartoken[106] = ILLEGALTOKE;    chartoken[107] = ILLEGALTOKE;    chartoken[108] = ILLEGALTOKE;    chartoken[109] = ILLEGALTOKE;    chartoken[110] = ILLEGALTOKE;    chartoken[111] = ILLEGALTOKE;    chartoken[112] = ILLEGALTOKE;    chartoken[113] = ILLEGALTOKE;    chartoken[114] = ILLEGALTOKE;    chartoken[115] = ILLEGALTOKE;    chartoken[116] = ILLEGALTOKE;    chartoken[117] = ILLEGALTOKE;    chartoken[118] = ILLEGALTOKE;    chartoken[119] = ILLEGALTOKE;    chartoken[120] = ILLEGALTOKE;    chartoken[121] = ILLEGALTOKE;    chartoken[122] = ILLEGALTOKE;    chartoken[123] = ILLEGALTOKE;    chartoken[124] = ILLEGALTOKE;    chartoken[125] = ILLEGALTOKE;    chartoken[126] = ILLEGALTOKE;    chartoken[127] = ILLEGALTOKE;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?