-- NPGSParseTableImpl.mesa -- an NPGS production from NPGSScan.mesa, May 24, 1990 1:52:23 pm PDT. DIRECTORY NPGSParseTable; NPGSParseTableImpl: CEDAR PROGRAM EXPORTS NPGSParseTable = { OPEN NPGSParseTable; InitScanTable: PUBLIC PROC RETURNS [ScanTableRef] = { tab: ScanTableRef _ NEW[ScanTable _ ALL[0]]; -- 94 entries tab[77C] _ 3; tab[174C] _ 4; RETURN [tab]; }; InitHashTable: PUBLIC PROC RETURNS [HashTableRef] = { null: VocabHashEntry = [0, 0]; tab: HashTableRef _ NEW[HashTable _ ALL[null]]; -- 30 entries tab[4] _ [5, 0]; tab[11] _ [1, 0]; tab[15] _ [2, 0]; tab[17] _ [18, 0]; tab[18] _ [17, 0]; tab[19] _ [16, 0]; tab[20] _ [15, 18]; tab[21] _ [14, 20]; tab[22] _ [6, 29]; tab[23] _ [8, 0]; tab[24] _ [9, 0]; tab[25] _ [10, 0]; tab[26] _ [13, 21]; tab[27] _ [12, 26]; tab[28] _ [11, 19]; tab[29] _ [7, 27]; RETURN [tab]; }; InitIndexTable: PUBLIC PROC RETURNS [IndexTableRef] = { tab: IndexTableRef _ NEW[IndexTable _ [ -- 20 entries 0, 6, 9, 10, 11, 14, 15, 23, 31, 39, -- 10 47, 54, 61, 68, 77, 88, 95, 100, 104, 107]]; RETURN [tab]; }; InitVocabulary: PUBLIC PROC RETURNS [VocabularyRef] = { i: CARDINAL _ 0; appText: PROC [r: REF TEXT] = { FOR k: NAT IN [0..r.length) DO tab[i+k] _ r[k]; ENDLOOP; i _ i + r.length; }; tab: VocabularyRef _ NEW[Vocabulary[107]]; -- 107 chars -- 0 appText["symbolnum?|::=C||TABLE1||TABLE2||TABLE3||TABLE4||I"]; -- 50 appText["NPUT||CHAIN||LISTS||PRINTLR||PRINTLALR||FIRST||IDS"]; -- 100 appText["GOALeof"]; tab.length _ i; RETURN [tab]; }; InitProdData: PUBLIC PROC RETURNS [ProdDataRef] = { i: CARDINAL _ 1; lag: ProductionInfo _ [0, 0]; dup: PROC = {tab[i] _ lag; i _ i + 1}; appR: PROC [r: CARDINAL] = {lag.rule _ r; tab[i] _ lag; i _ i + 1}; appL: PROC [lhs: CARDINAL] = {lag.lhs _ lhs; tab[i] _ lag; i _ i + 1}; appRL: PROC [r, lhs: CARDINAL] = {tab[i] _ lag _ [r, lhs]; i _ i + 1}; tab: ProdDataRef _ NEW[ProdData _ ALL[lag]]; -- 38 entries appL[2]; appRL[1, 3]; dup[]; appRL[2, 5]; -- 5 appR[28]; appRL[3, 9]; appR[4]; appR[5]; appR[6]; -- 10 appR[7]; appR[8]; appR[9]; appRL[10, 6]; appR[11]; -- 15 appL[7]; appR[12]; appRL[13, 8]; appR[14]; appRL[15, 10]; -- 20 appR[28]; dup[]; appRL[16, 11]; appR[17]; appR[18]; -- 25 appR[19]; appR[20]; appR[21]; appR[22]; appRL[23, 12]; -- 30 appR[24]; dup[]; appR[25]; appR[26]; appR[27]; -- 35 appRL[28, 4]; dup[]; appL[13]; RETURN [tab]; }; InitNStarts: PUBLIC PROC RETURNS [NStartsRef] = { tab: NStartsRef _ NEW[NStarts _ [ -- 7 entries 0, 0, 3, 0, 2, 1, 0]]; RETURN [tab]; }; InitNLengths: PUBLIC PROC RETURNS [NLengthsRef] = { tab: NLengthsRef _ NEW[NLengths _ [ -- 7 entries 0, 0, 1, 1, 1, 1, 1]]; RETURN [tab]; }; InitNSymbols: PUBLIC PROC RETURNS [NSymbolsRef] = { tab: NSymbolsRef _ NEW[NSymbols _ [ -- 4 entries 12, 11, 10, 10]]; RETURN [tab]; }; InitNActions: PUBLIC PROC RETURNS [NActionsRef] = { i: CARDINAL _ 0; dup: PROC = {tab[i] _ tab[i-1]; i _ i + 1}; app0: PROC [transition: CARDINAL] = { tab[i] _ [[FALSE, 0], transition]; i _ i + 1; }; app1: PROC [pLength: CARDINAL, transition: CARDINAL] = { tab[i] _ [[FALSE, pLength], transition]; i _ i + 1; }; app1t: PROC [transition: CARDINAL] = { tab[i] _ [[FALSE, 1], transition]; i _ i + 1; }; app2: PROC [pLength: CARDINAL, transition: CARDINAL] = { tab[i] _ [[TRUE, pLength], transition]; i _ i + 1; }; null: ActionEntry _ [[FALSE, 0], 0]; tab: NActionsRef _ NEW[NActions _ ALL[null]]; -- 4 entries -- 0 app0[17]; app0[3]; app0[21]; app0[25]; RETURN [tab]; }; InitNTDefaults: PUBLIC PROC RETURNS [NTDefaultsRef] = { i: CARDINAL _ 2; dup: PROC = {tab[i] _ tab[i-1]; i _ i + 1}; app0: PROC [transition: CARDINAL] = { tab[i] _ [[FALSE, 0], transition]; i _ i + 1; }; app1: PROC [pLength: CARDINAL, transition: CARDINAL] = { tab[i] _ [[FALSE, pLength], transition]; i _ i + 1; }; app1t: PROC [transition: CARDINAL] = { tab[i] _ [[FALSE, 1], transition]; i _ i + 1; }; app2: PROC [pLength: CARDINAL, transition: CARDINAL] = { tab[i] _ [[TRUE, pLength], transition]; i _ i + 1; }; null: ActionEntry _ [[FALSE, 0], 0]; tab: NTDefaultsRef _ NEW[NTDefaults _ ALL[null]]; -- 14 entries i _ i + 1; app0[19]; app1[3, 1]; app0[13]; app0[4]; app0[2]; app0[24]; app1[2, 5]; app0[9]; app0[6]; app0[11]; app0[5]; RETURN [tab]; }; InitTStarts: PUBLIC PROC RETURNS [TStartsRef] = { tab: TStartsRef _ NEW[TStarts _ [ -- 27 entries 0, 0, 53, 47, 35, 31, 24, 19, 22, 23, -- 10 16, 30, 15, 7, 39, 40, 42, 44, 46, 2, -- 20 1, 58, 59, 60, 61, 63, 64]]; RETURN [tab]; }; InitTLengths: PUBLIC PROC RETURNS [TLengthsRef] = { tab: TLengthsRef _ NEW[TLengths _ [ -- 27 entries 0, 1, 5, 6, 4, 4, 6, 3, 1, 1, -- 10 3, 1, 1, 8, 1, 2, 2, 2, 1, 5, -- 20 1, 1, 1, 1, 2, 1, 1]]; RETURN [tab]; }; InitTSymbols: PUBLIC PROC RETURNS [TSymbolsRef] = { tab: TSymbolsRef _ NEW[TSymbols _ [ -- 65 entries 3, 0, 1, 2, 3, 18, 0, 7, 11, 12, -- 10 13, 14, 15, 16, 17, 5, 2, 6, 0, 2, -- 20 6, 0, 5, 6, 1, 2, 3, 4, 6, 0, -- 30 1, 1, 2, 3, 0, 2, 3, 8, 0, 1, -- 40 2, 0, 5, 0, 1, 4, 5, 1, 2, 3, -- 50 4, 19, 0, 2, 3, 9, 10, 0, 1, 1, -- 60 5, 1, 10, 1, 1]]; RETURN [tab]; }; InitTActions: PUBLIC PROC RETURNS [TActionsRef] = { i: CARDINAL _ 0; dup: PROC = {tab[i] _ tab[i-1]; i _ i + 1}; app0: PROC [transition: CARDINAL] = { tab[i] _ [[FALSE, 0], transition]; i _ i + 1; }; app1: PROC [pLength: CARDINAL, transition: CARDINAL] = { tab[i] _ [[FALSE, pLength], transition]; i _ i + 1; }; app1t: PROC [transition: CARDINAL] = { tab[i] _ [[FALSE, 1], transition]; i _ i + 1; }; app2: PROC [pLength: CARDINAL, transition: CARDINAL] = { tab[i] _ [[TRUE, pLength], transition]; i _ i + 1; }; null: ActionEntry _ [[FALSE, 0], 0]; tab: TActionsRef _ NEW[TActions _ ALL[null]]; -- 65 entries -- 0 app0[20]; app2[0, 4]; app0[12]; app0[10]; app0[7]; app0[8]; app2[0, 19]; app1t[13]; app1t[6]; app1t[7]; app1t[8]; app1t[9]; app1t[10]; app1t[11]; app1t[12]; app1[2, 22]; app1[2, 30]; app2[1, 20]; app2[1, 29]; app1[2, 31]; -- 20 app2[1, 21]; app2[1, 34]; app0[14]; app0[15]; app0[16]; app0[10]; app0[7]; app1[2, 26]; app2[0, 19]; app2[3, 1]; app0[18]; app0[12]; app0[10]; app0[7]; app2[0, 19]; app1t[20]; app1t[21]; app1t[16]; app2[0, 19]; app0[22]; -- 40 app1[3, 33]; app2[2, 32]; app1[3, 24]; app2[2, 28]; app0[23]; app1[3, 27]; app1[3, 23]; app0[16]; app0[10]; app0[7]; app1[2, 26]; app2[2, 36]; app2[0, 19]; app1t[20]; app1t[21]; app1t[17]; app1[4, 2]; app2[0, 19]; app1[3, 14]; app1[4, 37]; -- 60 app1[4, 25]; app0[26]; app1[5, 3]; app1[3, 15]; app1[3, 18]; RETURN [tab]; }; }.