Stax
Programming language
Loading...
Searching...
No Matches
ast.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <string>
4#include <variant>
5#include <vector>
6
8
9namespace stax::parser {
10
11struct Node {
12 token::Token token;
13};
14
15struct Expression {
16 Expression() = default;
17};
18
19struct Identifier {
20 Identifier() = default;
21 Identifier(const token::Token& tok, const std::string& val)
22 : token(tok), value(val) {}
23
24 token::Token token;
25 std::string value;
26};
27BOOST_DESCRIBE_STRUCT(Identifier, (), (token, value));
28
29struct Statement : public Node {};
30
38
39using ast_t = std::variant<LetStatement>;
40
41struct Program {
42 std::vector<ast_t> statements;
43};
44
45} // namespace stax::parser
Definition parser.cpp:5
std::variant< LetStatement > ast_t
Definition ast.hpp:39
BOOST_DESCRIBE_STRUCT(Identifier,(),(token, value))
Definition ast.hpp:15
Definition ast.hpp:19
token::Token token
Definition ast.hpp:24
Identifier(const token::Token &tok, const std::string &val)
Definition ast.hpp:21
std::string value
Definition ast.hpp:25
Definition ast.hpp:31
LetStatement(const Identifier &ident)
Definition ast.hpp:33
Identifier ident
Definition ast.hpp:35
Definition ast.hpp:11
token::Token token
Definition ast.hpp:12
Definition ast.hpp:41
std::vector< ast_t > statements
Definition ast.hpp:42
Definition ast.hpp:29