-
Notifications
You must be signed in to change notification settings - Fork 0
/
ast.yaml
252 lines (203 loc) · 5.4 KB
/
ast.yaml
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
#
# CEKF - VM supporting amb
# Copyright (C) 2022-2024 Bill Hails
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
config:
name: ast
description: Abstract Syntax Tree structures generated by the parser.
parserInfo: true
limited_includes:
- bigint.h
- file_id.h
structs:
AstProg:
preamble: AstDefinitions
namespaces: AstNamespaceArray
body: AstExpressions
AstNest:
definitions: AstDefinitions
expressions: AstExpressions
AstNamespaceImpl:
id: file_id
definitions: AstDefinitions
AstNamespace:
symbol: HashSymbol
reference: index # index into a table of namespace implementations
AstDefinitions:
definition: AstDefinition
next: AstDefinitions
AstDefine:
symbol: HashSymbol
expression: AstExpression
AstAlias:
name: HashSymbol
type: AstType
AstExprAlias:
name: HashSymbol
value: AstExpression
AstDefMacro:
name: HashSymbol
definition: AstAltFunction
AstTypeDef:
userType: AstUserType
typeBody: AstTypeBody
AstUserType:
symbol: HashSymbol
typeSymbols: AstTypeSymbols
AstTypeSymbols:
typeSymbol: HashSymbol
next: AstTypeSymbols
AstTypeBody:
typeConstructor: AstTypeConstructor
next: AstTypeBody
AstTypeConstructor:
symbol: HashSymbol
args: AstTypeConstructorArgs
AstTypeFunction:
symbol: AstLookupOrSymbol
typeList: AstTypeList
AstTypeList:
type: AstType
next: AstTypeList
AstTypeMap:
key: HashSymbol
type: AstType
next: AstTypeMap
AstType:
typeClause: AstTypeClause
next: AstType
AstCompositeFunction:
unsafe: bool = false
function: AstFunction
next: AstCompositeFunction
AstFunction:
argList: AstArgList
nest: AstNest
AstArgList:
arg: AstArg
next: AstArgList
AstTaggedArgList:
tag: HashSymbol
arg: AstArg
next: AstTaggedArgList
AstAltArgs: # temp struct used by the parser for `fn (...) | (...) { ... }` alternative arguments
argList: AstArgList
next: AstAltArgs
AstAltFunction: # ditto
altArgs: AstAltArgs
nest: AstNest
AstUnpack:
symbol: AstLookupOrSymbol
argList: AstArgList
AstUnpackStruct:
symbol: AstLookupOrSymbol
argList: AstTaggedArgList
AstNamedArg:
name: HashSymbol
arg: AstArg
AstFunCall:
function: AstExpression
arguments: AstExpressions
AstExpressions:
expression: AstExpression
next: AstExpressions
AstLookupSymbol:
nsid: int
nsSymbol: HashSymbol
symbol: HashSymbol
AstLookup:
nsid: int
nsSymbol: HashSymbol
expression: AstExpression
AstIff:
test: AstExpression
consequent: AstNest
alternative: AstNest
AstPrint:
exp: AstExpression
AstStruct:
symbol: AstLookupOrSymbol
expressions: AstTaggedExpressions
AstTaggedExpressions:
tag: HashSymbol
expression: AstExpression
next: AstTaggedExpressions
enums:
AstPosition:
- PREFIX
- INFIX
- POSTFIX
unions:
AstTypeConstructorArgs:
list: AstTypeList
map: AstTypeMap
AstLookupOrSymbol:
symbol: HashSymbol
lookup: AstLookupSymbol
AstDefinition:
define: AstDefine
typeDef: AstTypeDef
macro: AstDefMacro
alias: AstAlias
blank: void_ptr
AstTypeClause:
integer: void_ptr
character: void_ptr
var: HashSymbol
typeFunction: AstTypeFunction
typeTuple: AstTypeList
AstArg:
wildcard: void_ptr
symbol: HashSymbol
lookup: AstLookupSymbol
named: AstNamedArg
unpack: AstUnpack
unpackStruct: AstUnpackStruct
number: MaybeBigInt
character: character
tuple: AstArgList
AstExpression:
back: void_ptr
wildcard: void_ptr
alias: AstExprAlias
funCall: AstFunCall
lookup: AstLookup
symbol: HashSymbol
number: MaybeBigInt
character: character
fun: AstCompositeFunction
nest: AstNest
iff: AstIff
print: AstPrint
tuple: AstExpressions
env: void_ptr
structure: AstStruct
assertion: AstExpression
error: AstExpression
hashes:
AstIntTable:
entries: int
arrays:
AstNamespaceArray:
dimension: 1
entries: AstNamespaceImpl
AstFileIdArray:
dimension: 1
entries: file_id
AstStringArray:
dimension: 1
entries: string
primitives: !include primitives.yaml