summaryrefslogtreecommitdiff
path: root/misc/pascal/include/pedefs.h
blob: 56adebe9a1b9e5c4509136e2aedefb48a8232cf1 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
/***********************************************************************
 * pedefs.h
 * Definitions of error codes
 *
 *   Copyright (C) 2008-2009 Gregory Nutt. All rights reserved.
 *   Author: Gregory Nutt <spudmonkey@racsa.co.cr>
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in
 *    the documentation and/or other materials provided with the
 *    distribution.
 * 3. Neither the name NuttX nor the names of its contributors may be
 *    used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
 * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 *
 ***********************************************************************/

#ifndef __PEDEFS_H
#define __PEDEFS_H

/***********************************************************************
 * Included Files
 ***********************************************************************/

#include <stdint.h>

/***********************************************************************
 * Pre-processor Definitions
 ***********************************************************************/

/***********************************************************************
 * COMPILATION TIME ERRORS
 * eASSIGN              Expected ':='
 * eBEGIN               Expected 'BEGIN'
 * eCOLON               Expected ':'
 * eCOMMA               Expected ','
 * eCOUNT               Error count exceeded (FATAL)
 * eDO                  Expected 'DO'
 * eDUPFILE             Attempt to re-define file
 * eDUPSYM              Attempt to declare duplicate symbol
 * eEND                 Expected 'END'
 * eEQ                  Expected '='
 * eEXPONENT            Error in exponent of real constant
 * eFILE                Expected file identifier declared in PROGRAM
 * eHUH                 Internal error (FATAL)
 * eIDENT               Expected identifier
 * eIMPLEMENTATION      Expected implementation section in unit file
 * eINCLUDE             Include file OPEN error (FATAL)
 * eINTCONST            Expected integer constant
 * eINTERFACE           Expected interface section in unit file
 * eINTOVF              Integer overflow (or underflow)
 * eINTVAR              Integer variable name expected
 * eINVALIDFUNC         Unrecognized built-in function
 * eINVALIDPROC         Unrecognized built-in procedure
 * eINVARG              Invalid procedure/function argument type
 * eINVCONST            Invalid constant in declaration
 * eINVSIGNEDCONST      Invalid constant after sign
 * eINVFACTOR           Invalid factor
 * eINVFILE             Invalid file identifier (as declared in PROGRAM)
 * eINVLABEL            Invalid label
 * eINVPTR              Invalid pointer type
 * eINVTYPE             Invalid type identifier
 * eINVVARPARM          Invalid/unsupported VAR parameter type
 * eLBRACKET            Expected '['
 * eLPAREN              Expected '('
 * eMULTLABEL           Attempt to multiply define label
 * eNOSQUOTE            EOL encounter in a string, probable missing "'"
 * eNOTYET              Not implemented yet
 * eNPARMS              Number of parameters in function or procedure
 *                      call does not match number in declaration
 * eOF                  Expected 'OF'
 * eOVF                 Internal table overflow (FATAL)
 * ePERIOD              Expected '.'
 * ePOFFCONFUSION       Internal logic error in POFF file generation
 * ePOFFWRITEERROR      Error writing to POFF file
 * ePROGRAM             Expected 'PROGRAM'
 * ePTRADR              Expected pointer address (probably got value) form
 * ePTRVAL              Expected pointer value form, got value form
 * eRBRACKET            Expected ']'
 * eRPAREN              Expected ')'
 * eRPARENorCOMMA       Expected ')' or ','
 * eSEEKFAIL            Seek to file position failed
 * eSEMICOLON           Expected ';'
 * eSTRING              Expected a string
 * eTHEN                Expected 'THEN'
 * eTOorDOWNTO          Expected 'TO' or 'DOWNTO' in for statement
 * eTRUNC               String truncated
 * eUNDECLABEL          Attempt to define an undeclared label.
 * eUNDEFILE            Undefined file buffer
 * eUNDEFLABEL          A declared label was not defined.
 * eUNDEFSYM            Undefined symbol
 * eUNTIL               Expected 'UNTIL'
 * eEXPRTYPE	        Illegal expression type for this operation
 * eTERMTYPE            Illegal term type for this operation
 * eFACTORTYPE          Illegal factor type for this operation
 * eREADPARM            Illegal parameter in READ statement
 * eWRITEPARM           Illegal parameter in WRITE statement
 * eARRAYTYPE           Illegal type for ARRAY OF
 * ePOINTERTYPE         Illegal pointer type
 * eVARPARMTYPE         Illegal VAR parameter type
 * eSUBRANGE            Expected ".."
 * eSUBRANGETYPE	Illegal subrange type
 * eSET                 Expected valid/consistent type for SET OF
 * sSETRANGE		Value out of range for SET OF
 * eSCALARTYPE          Illegal scalar type
 * eBADSHORTINT         Short integer is out of range
 * eSYMTABINTERNAL      Internal error in symbol table
 * eRECORDDECLARE       Error in RECORD declaration
 * eRECORDOBJECT        Expected a field of RECORD
 * eRECORDVAR           Expected a RECORD variable in WITH
 * eUNIT                Expected UNIT at beginning of unit file
 * eUNITNAME            File does not contain the expected UNIT
 * eARGIGNORED          An argument was provided, but ignored
 *
 * LINK TIME ERRORS
 * eUNDEFINEDSYMBOL     A necessary symbol was not defined
 * eMULTIDEFSYMBOL      A symbol was defined multiple times
 *
 * ERRORS WHICH MAY OCCUR AT EITHER COMPILATION, LINK OR RUNTIME
 * eNOMEMORY            Memory allocation failed
 * ePOFFREADERROR       Error reading a POFF file
 * ePOFFBADFORMAT       The file format does not like valid POFF
 * eRCVDSIGNAL          Received SIGSEGV (or other) signal.
 *
 * RUN TIME ERRORS
 * eBADPC		Program Counter is out-of-range
 * eBADSP		Stack reference is out-of-range
 * eSTRSTKOVERFLOW      String stack overflow
 * eILLEGALOPCODE	Non-executable instruction found
 * eEXIT		oEND P-Code encountered
 * eBADSYSIOFUNC	Illegal SYSIO sub-function
 * eBADSYSLIBCALL	Illegal runtime library call
 * eBADFPOPCODE		Illegal FLOAT POINT op-code
 * eFAILEDLIBCALL       Runtime library call returned failure
 * eINTEGEROVERFLOW     Integer overflow
 **********************************************************************/

/* This is the error code that indicates that no error has occurred */

#define eNOERROR       ((uint16_t) 0x00)

/* This is the maximum number of errors that will be reported before
 * compilation is terminated.
 */

#define MAX_ERRORS 100

/* COMPILATION TIME ERRORS */

#define eASSIGN          ((uint16_t) 0x01)
#define eBEGIN           ((uint16_t) 0x02)
#define eCOLON           ((uint16_t) 0x03)
#define eCOMMA           ((uint16_t) 0x04)
#define eCOUNT           ((uint16_t) 0x05)
#define eDO              ((uint16_t) 0x06)
#define eDUPFILE         ((uint16_t) 0x07)
#define eDUPSYM          ((uint16_t) 0x08)
#define eEND             ((uint16_t) 0x09)
#define eEQ              ((uint16_t) 0x0a)
#define eEXPONENT        ((uint16_t) 0x0b)
#define eFILE            ((uint16_t) 0x0c)
#define eHUH             ((uint16_t) 0x0d)
#define eIDENT           ((uint16_t) 0x0e)
#define eIMPLEMENTATION  ((uint16_t) 0x0f)

#define eINCLUDE         ((uint16_t) 0x10)
#define eINTCONST        ((uint16_t) 0x11)
#define eINTERFACE       ((uint16_t) 0x12)
#define eINTOVF          ((uint16_t) 0x13)
#define eINTVAR          ((uint16_t) 0x14)
#define eINVALIDFUNC     ((uint16_t) 0x15)
#define eINVALIDPROC     ((uint16_t) 0x16)
#define eINVARG          ((uint16_t) 0x17)
#define eINVCONST        ((uint16_t) 0x18)
#define eINVSIGNEDCONST  ((uint16_t) 0x19)
#define eINVFACTOR       ((uint16_t) 0x1a)
#define eINVFILE         ((uint16_t) 0x1b)
#define eINVLABEL        ((uint16_t) 0x1c)
#define eINVPTR          ((uint16_t) 0x1d)
#define eINVTYPE         ((uint16_t) 0x1e)
#define eINVVARPARM      ((uint16_t) 0x1f)

#define eLBRACKET        ((uint16_t) 0x20)
#define eLPAREN          ((uint16_t) 0x21)
#define eMULTLABEL       ((uint16_t) 0x22)
#define eNOSQUOTE        ((uint16_t) 0x23)
#define eNOTYET          ((uint16_t) 0x24)
#define eNPARMS          ((uint16_t) 0x25)
#define eOF              ((uint16_t) 0x26)
#define eOVF             ((uint16_t) 0x27)
#define ePERIOD          ((uint16_t) 0x28)
#define ePOFFCONFUSION   ((uint16_t) 0x29)
#define ePOFFWRITEERROR  ((uint16_t) 0x2a)
#define ePROGRAM         ((uint16_t) 0x2b)
#define ePTRADR          ((uint16_t) 0x2c)
#define ePTRVAL          ((uint16_t) 0x2d)
#define eRBRACKET        ((uint16_t) 0x2e)
#define eRPAREN          ((uint16_t) 0x2f)

#define eRPARENorCOMMA   ((uint16_t) 0x30)
#define eSEEKFAIL        ((uint16_t) 0x31)
#define eSEMICOLON       ((uint16_t) 0x32)
#define eSTRING          ((uint16_t) 0x33)
#define eTHEN            ((uint16_t) 0x34)
#define eTOorDOWNTO      ((uint16_t) 0x35)
#define eTRUNC           ((uint16_t) 0x36)
#define eUNDECLABEL      ((uint16_t) 0x37)
#define eUNDEFILE        ((uint16_t) 0x38)
#define eUNDEFLABEL      ((uint16_t) 0x39)
#define eUNDEFSYM        ((uint16_t) 0x3a)
#define eUNTIL           ((uint16_t) 0x3b)
#define eEXPRTYPE        ((uint16_t) 0x3c)
#define eTERMTYPE        ((uint16_t) 0x3d)
#define eFACTORTYPE      ((uint16_t) 0x3e)
#define eREADPARM        ((uint16_t) 0x3f)

#define eWRITEPARM       ((uint16_t) 0x40)
#define eARRAYTYPE       ((uint16_t) 0x41)
#define ePOINTERTYPE     ((uint16_t) 0x42)
#define eVARPARMTYPE     ((uint16_t) 0x43)
#define eSUBRANGE        ((uint16_t) 0x44)
#define eSUBRANGETYPE    ((uint16_t) 0x45)
#define eSET             ((uint16_t) 0x46)
#define eSETRANGE        ((uint16_t) 0x47)
#define eSCALARTYPE      ((uint16_t) 0x48)
#define eBADSHORTINT     ((uint16_t) 0x49)
#define eSYMTABINTERNAL  ((uint16_t) 0x4a)
#define eRECORDDECLARE   ((uint16_t) 0x4b)
#define eRECORDOBJECT    ((uint16_t) 0x4c)
#define eRECORDVAR       ((uint16_t) 0x4d)
#define eUNIT            ((uint16_t) 0x4e)
#define eUNITNAME        ((uint16_t) 0x4f)

#define eARGIGNORED      ((uint16_t) 0x50)

/* LINK TIME ERRORS */

#define eUNDEFINEDSYMBOL ((uint16_t) 0x60)
#define eMULTIDEFSYMBOL  ((uint16_t) 0x61)

/* ERRORS WHICH MAY OCCUR AT EITHER COMPILATION OR RUNTIME */

#define eNOMEMORY        ((uint16_t) 0x70)
#define ePOFFREADERROR   ((uint16_t) 0x71)
#define ePOFFBADFORMAT   ((uint16_t) 0x72)
#define eRCVDSIGNAL      ((uint16_t) 0x73)

/* RUN TIME ERRORS */

#define eBADPC	         ((uint16_t) 0x80)
#define eBADSP	         ((uint16_t) 0x81)
#define eSTRSTKOVERFLOW  ((uint16_t) 0x82)
#define eILLEGALOPCODE   ((uint16_t) 0x83)
#define eEXIT            ((uint16_t) 0x84)
#define eBADSYSIOFUNC    ((uint16_t) 0x85)
#define eBADSYSLIBCALL   ((uint16_t) 0x86)
#define eBADFPOPCODE     ((uint16_t) 0x87)
#define eINTEGEROVERFLOW ((uint16_t) 0x89)
#define eFAILEDLIBCALL   ((uint16_t) 0x90)

#endif /* __PEDEFS_H */