finished reading the abstract syntax

This commit is contained in:
krangelov
2021-08-05 12:37:12 +02:00
parent 17629e4821
commit 84789c9fbf
11 changed files with 559 additions and 86 deletions

View File

@@ -18,18 +18,53 @@ public:
double read_double();
uint64_t read_uint();
int64_t read_int() { return (int64_t) read_uint(); };
uint8_t read_tag() { return read_uint8(); }
size_t read_len() { return (size_t) read_uint(); };
uint8_t read_tag() { return read_uint8(); }
template<class V>
ref<V> read_name() { return read_name(offsetof(V,name)); };
ref<V> read_name(PgfText V::* field) {
return read_name_internal((size_t) &(((V*) NULL)->*field));
};
ref<PgfText> read_name() {
return read_name_internal(0);
};
template<class V>
ref<V> read_text(PgfText V::* field) {
return read_text_internal((size_t) &(((V*) NULL)->*field));
};
ref<PgfText> read_text() {
return read_text_internal(0);
};
template<class V>
Namespace<V> read_namespace(ref<V> (PgfReader::*read_value)());
template <class C, class V>
ref<C> read_vector(PgfVector<V> C::* field, void (PgfReader::*read_value)(ref<V> val));
template<class V>
ref<PgfVector<V>> read_vector(void (PgfReader::*read_value)(ref<V> val));
PgfLiteral read_literal();
PgfExpr read_expr();
void read_expr(ref<PgfExpr> r) { *r = read_expr(); };
void read_hypo(ref<PgfHypo> hypo);
ref<PgfType> read_type();
ref<PgfFlag> read_flag();
PgfPatt read_patt();
void read_patt2(ref<PgfPatt> r) { *r = read_patt(); };
void read_defn(ref<ref<PgfEquation>> defn);
ref<PgfAbsFun> read_absfun();
ref<PgfAbsCat> read_abscat();
void read_abstract(PgfAbstr* abstract);
void read_pgf(PgfPGFRoot* pgf);
@@ -37,7 +72,8 @@ public:
private:
std::istream *in;
moffset read_name(size_t size);
moffset read_name_internal(size_t struct_size);
moffset read_text_internal(size_t struct_size);
};
#endif