hoshi-lang dev
Yet another programming language
Loading...
Searching...
No Matches
parser.hpp
Go to the documentation of this file.
1//
2// Created by XIaokang00010 on 2023/2/11.
3//
4
5#ifndef HOSHI_LANG_PARSER_HPP
6#define HOSHI_LANG_PARSER_HPP
7
8#include "lexer.hpp"
9#include "ast.hpp"
10
11namespace yoi {
12 void parse(basicLiterals *&o, lexer &lex);
13
14 void parse(identifier *&o, lexer &lex);
15
16 void parse(identifierWithTypeSpec *&o, lexer &lex);
17
18 void parse(defTemplateArgSpec *&o, lexer &lex);
19
20 void parse(defTemplateArg *&o, lexer &lex);
21
22 void parse(templateArgSpec *&o, lexer &lex);
23
24 void parse(templateArg *&o, lexer &lex);
25
26 void parse(invocationArguments *&o, lexer &lex);
27
28 void parse(definitionArguments *&o, lexer &lex);
29
31
32 void parse(funcTypeSpec *&o, lexer &lex);
33
34 void parse(typeSpec *&o, lexer &lex);
35
36 void parse(subscript *&o, lexer &lex);
37
38 void parse(abstractExpr *&o, lexer &lex);
39
41
43
45
46 void parse(subscriptExpr *&o, lexer &lex);
47
48 void parse(memberExpr *&o, lexer &lex);
49
50 void parse(primary *&o, lexer &lex);
51
53
54 void parse(uniqueExpr *&o, lexer &lex);
55
56 void parse(leftExpr *&o, lexer &lex);
57
58 void parse(mulExpr *&o, lexer &lex);
59
60 void parse(addExpr *&o, lexer &lex);
61
62 void parse(shiftExpr *&o, lexer &lex);
63
64 void parse(relationalExpr *&o, lexer &lex);
65
66 void parse(equalityExpr *&o, lexer &lex);
67
68 void parse(andExpr *&o, lexer &lex);
69
70 void parse(exclusiveExpr *&o, lexer &lex);
71
72 void parse(inclusiveExpr *&o, lexer &lex);
73
74 void parse(logicalAndExpr *&o, lexer &lex);
75
76 void parse(logicalOrExpr *&o, lexer &lex);
77
78 void parse(rExpr *&o, lexer &lex);
79
80 void parse(codeBlock *&o, lexer &lex);
81
82 void parse(useStmt *&o, lexer &lex);
83
84 void parse(funcDefStmt *&o, lexer &lex);
85
87
88 void parse(interfaceDefInner *&o, lexer &lex);
89
90 void parse(interfaceDefStmt *&o, lexer &lex);
91
93
94 void parse(dataStructDefStmt *&o, lexer &lex);
95
96 void parse(structDefInner *&o, lexer &lex);
97
98 void parse(structDefStmt *&o, lexer &lex);
99
100 void parse(implInnerPair *&o, lexer &lex);
101
102 void parse(implInner *&o, lexer &lex);
103
104 void parse(implStmt *&o, lexer &lex);
105
106 void parse(finalizerDecl *&o, lexer &lex);
107
108 void parse(finalizerDef *&o, lexer &lex);
109
111
113
114 void parse(letStmt *&o, lexer &lex);
115
116 void parse(globalStmt *&o, lexer &lex);
117
119
120 void parse(ifStmt *&o, lexer &lex);
121
122 void parse(whileStmt *&o, lexer &lex);
123
124 void parse(forStmt *&o, lexer &lex);
125
126 void parse(forEachStmt *&o, lexer &lex);
127
128 void parse(returnStmt *&o, lexer &lex);
129
130 void parse(continueStmt *&o, lexer &lex);
131
132 void parse(breakStmt *&o, lexer &lex);
133
134 void parse(inCodeBlockStmt *&o, lexer &lex);
135
136 void parse(innerMethodDecl *&o, lexer &lex);
137
138 void parse(innerMethodDef *&o, lexer &lex);
139
140 void parse(constructorDecl *&o, lexer &lex);
141
142 void parse(constructorDef *&o, lexer &lex);
143
144 void parse(hoshiModule *&o, lexer &lex);
145
146 void parse(importInner *&o, lexer &lex);
147
148 void parse(importDecl *&o, lexer &lex);
149
150 void parse(exportDecl *&o, lexer &lex);
151
152 void parse(tryCatchStmt *&o, lexer &lex);
153
154 void parse(throwStmt *&o, lexer &lex);
155
156 void parse(catchParam *&o, lexer &lex);
157
158 void parse(typeIdExpression *&o, lexer &lex);
159
161
162 void parse(newExpression *&o, lexer &lex);
163
164 void parse(lambdaExpr *&o, lexer &lex);
165
166 void parse(funcExpr *&o, lexer &lex);
167
168 void parse(marcoPair *&o, lexer &lex);
169
170 void parse(marcoDescriptor *&o, lexer &lex);
171
172 void parse(typeAliasStmt *&o, lexer &lex);
173
175
176 void parse(enumerationPair *&o, lexer &lex);
177
178 void parse(yieldStmt *&o, lexer &lex);
179
180 void parse(decltypeExpr *&o, lexer &lex);
181
182 void parse(satisfyStmt *&o, lexer &lex);
183
184 void parse(conceptStmt *&o, lexer &lex);
185
187
188 void parse(satisfyClause *&o, lexer &lex);
189}
190
191#endif //HOSHI_LANG_PARSER_HPP
void parse(yoi::basicLiterals *&o, yoi::lexer &lex)
Definition parser.cpp:25