diff options
Diffstat (limited to 'src/runtime/c/pgf')
| -rw-r--r-- | src/runtime/c/pgf/expr.h | 8 | ||||
| -rw-r--r-- | src/runtime/c/pgf/parser.c | 2 | ||||
| -rw-r--r-- | src/runtime/c/pgf/reader.c | 20 |
3 files changed, 17 insertions, 13 deletions
diff --git a/src/runtime/c/pgf/expr.h b/src/runtime/c/pgf/expr.h index e560d3a83..b775bd9b5 100644 --- a/src/runtime/c/pgf/expr.h +++ b/src/runtime/c/pgf/expr.h @@ -197,16 +197,16 @@ pgf_literal_hash(GuHash h, PgfLiteral lit); PGF_API_DECL GuHash pgf_expr_hash(GuHash h, PgfExpr e); -PGF_API size_t +PGF_API_DECL size_t pgf_expr_size(PgfExpr expr); -PGF_API GuSeq* +PGF_API_DECL GuSeq* pgf_expr_functions(PgfExpr expr, GuPool* pool); -PGF_API PgfExpr +PGF_API_DECL PgfExpr pgf_expr_substitute(PgfExpr expr, GuSeq* meta_values, GuPool* pool); -PGF_API PgfType* +PGF_API_DECL PgfType* pgf_type_substitute(PgfType* type, GuSeq* meta_values, GuPool* pool); typedef struct PgfPrintContext PgfPrintContext; diff --git a/src/runtime/c/pgf/parser.c b/src/runtime/c/pgf/parser.c index 20deba9da..cb59b2a55 100644 --- a/src/runtime/c/pgf/parser.c +++ b/src/runtime/c/pgf/parser.c @@ -10,7 +10,7 @@ #include <math.h> #include <stdlib.h> -#define PGF_PARSER_DEBUG +//#define PGF_PARSER_DEBUG //#define PGF_COUNTS_DEBUG //#define PGF_RESULT_DEBUG diff --git a/src/runtime/c/pgf/reader.c b/src/runtime/c/pgf/reader.c index d7094c9d5..82b6f8abf 100644 --- a/src/runtime/c/pgf/reader.c +++ b/src/runtime/c/pgf/reader.c @@ -328,16 +328,20 @@ pgf_read_patt(PgfReader* rdr) uint8_t tag = pgf_read_tag(rdr); switch (tag) { case PGF_PATT_APP: { - PgfPattApp *papp = - gu_new_variant(PGF_PATT_APP, - PgfPattApp, - &patt, rdr->opool); - papp->ctor = pgf_read_cid(rdr, rdr->opool); + PgfCId ctor = pgf_read_cid(rdr, rdr->opool); gu_return_on_exn(rdr->err, gu_null_variant); - - papp->n_args = pgf_read_len(rdr); + + size_t n_args = pgf_read_len(rdr); gu_return_on_exn(rdr->err, gu_null_variant); - + + PgfPattApp *papp = + gu_new_flex_variant(PGF_PATT_APP, + PgfPattApp, + args, n_args, + &patt, rdr->opool); + papp->ctor = ctor; + papp->n_args = n_args; + for (size_t i = 0; i < papp->n_args; i++) { papp->args[i] = pgf_read_patt(rdr); gu_return_on_exn(rdr->err, gu_null_variant); |
