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 + -
显示快捷键?