diff options
Diffstat (limited to 'include/cps')
| -rw-r--r-- | include/cps/Lexer.h | 6 | ||||
| -rw-r--r-- | include/cps/TypeAST.h | 8 |
2 files changed, 13 insertions, 1 deletions
diff --git a/include/cps/Lexer.h b/include/cps/Lexer.h index d83e808..3652df0 100644 --- a/include/cps/Lexer.h +++ b/include/cps/Lexer.h @@ -84,7 +84,11 @@ enum Token { tok_type = -600, tok_endtype = -601, tok_set = -602, // reserved: SET types are recognised but not implemented - tok_define = -603 // reserved: DEFINE (set literals) likewise + tok_define = -603, // reserved: DEFINE (set literals) likewise + tok_class = -604, + tok_endclass = -605, + tok_public = -606, + tok_private = -607 }; class Lexer { diff --git a/include/cps/TypeAST.h b/include/cps/TypeAST.h index 601b49b..a23f836 100644 --- a/include/cps/TypeAST.h +++ b/include/cps/TypeAST.h @@ -60,6 +60,14 @@ public: const std::vector<RecordFieldDecl> &getFields() const { return Fields; } }; +// CLASS <name> with explicitly PUBLIC/PRIVATE fields, ending in ENDCLASS. +// Storage and value semantics are inherited from record declarations. +class ClassTypeDeclAST : public RecordTypeDeclAST { +public: + ClassTypeDeclAST(const std::string &Name, std::vector<RecordFieldDecl> Fields) + : RecordTypeDeclAST(Name, std::move(Fields)) {} +}; + // ---- Designators: chained accesses usable as lvalue or rvalue (ยง4.2) ---- enum class AccessKind : uint8_t { Index, Field, Deref }; |
