1 /*
2 
3     This file is part of the Maude 2 interpreter.
4 
5     Copyright 1997-2003 SRI International, Menlo Park, CA 94025, USA.
6 
7     This program is free software; you can redistribute it and/or modify
8     it under the terms of the GNU General Public License as published by
9     the Free Software Foundation; either version 2 of the License, or
10     (at your option) any later version.
11 
12     This program is distributed in the hope that it will be useful,
13     but WITHOUT ANY WARRANTY; without even the implied warranty of
14     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15     GNU General Public License for more details.
16 
17     You should have received a copy of the GNU General Public License
18     along with this program; if not, write to the Free Software
19     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
20 
21 */
22 
23 
24 /************************************************
25  ** SCP Parsing Algorithm                      **
26  **  	Maude Implementation                   **
27  **		Jose F. Quesada                **
28  **		CSL - SRI Int.  1998           **
29  ************************************************/
30 
31 /*******
32  ******* scp_kernel.hh
33  *******/
34 
35 #ifndef _scp_kernel_hh_
36 #define _scp_kernel_hh_
37 
38 class ScpBaseNT
39 {
40   friend class ScpParser;
41   int	smallestPrec;
42   int	largestPrec;
43   int	firstAbs;
44   int	lastAbs;
45 };
46 
47 class ScpAbslNT
48 {
49   friend class ScpParser;
50   int	baseNT;
51   int	precNT;
52   int	nextNT;
53   int	lhsdefs;
54   char  adjbubble;
55   int	bubblecov;
56   int   bubbletermn;
57   int   bubbleev;
58 };
59 
60 class ScpProdtn
61 {
62   friend class ScpParser;
63   int	lhs;
64   int	lrhs;
65   int	rhs;
66   int   lgather;
67   int	bubble;
68 };
69 
70 class ScpCov
71 {
72   friend class ScpParser;
73   int	prodtn;
74   int	next;
75   int   ldernext;
76 };
77 
78 class ScpBubble
79 {
80   friend class ScpParser;
81   int	abslnt;
82   int	lbound;
83   int	ubound;
84   int	lparen;
85   int 	rparen;
86   int   addrbubexcept;
87   int	except;
88   int	lexcept;
89   int	prodtn;
90 };
91 
92 class ScpEvent
93 {
94   friend class ScpParser;
95   int   prodtn;
96   int   dot;
97   int   fpos;
98   int   nextsymbol;
99   int   addrnextsymbol;
100   int   nextevent;
101   int   subsumed;
102   int   prevevent;
103   int   prevnode;
104 };
105 
106 class ScpNode
107 {
108   friend class ScpParser;
109   int   fpos;
110   int   lpos;
111   int   symbol;
112   int   nextnode;
113   int   initanal;
114   int   skipanal;
115 };
116 
117 class ScpAnal
118 {
119   friend class ScpParser;
120   int prodtn;
121   int prevnode;
122   int prevevent;
123   int nextanal;
124 };
125 
126 #endif // _scp_kernel_hh
127