diff options
Diffstat (limited to 'src/runtime/c/pgf')
| -rw-r--r-- | src/runtime/c/pgf/expr.c | 28 | ||||
| -rw-r--r-- | src/runtime/c/pgf/expr.h | 3 |
2 files changed, 20 insertions, 11 deletions
diff --git a/src/runtime/c/pgf/expr.c b/src/runtime/c/pgf/expr.c index 0192ba816..7f0bb9eef 100644 --- a/src/runtime/c/pgf/expr.c +++ b/src/runtime/c/pgf/expr.c @@ -96,6 +96,22 @@ pgf_expr_apply(PgfApplication* app, GuPool* pool) return expr; } +PgfExpr +pgf_expr_string(GuString str, GuPool* pool) +{ + PgfLiteral lit; + PgfLiteralStr* plit = + gu_new_flex_variant(PGF_LITERAL_STR, + PgfLiteralStr, + val, strlen(str)+1, + &lit, pool); + strcpy(plit->val, str); + return gu_new_variant_i(pool, + PGF_EXPR_LIT, + PgfExprLit, + lit); +} + typedef struct PgfExprParser PgfExprParser; typedef enum { @@ -411,17 +427,7 @@ pgf_expr_parser_term(PgfExprParser* parser) char* str = gu_buf_data(parser->token_value); pgf_expr_parser_token(parser); - PgfLiteral lit; - PgfLiteralStr* plit = - gu_new_flex_variant(PGF_LITERAL_STR, - PgfLiteralStr, - val, strlen(str)+1, - &lit, parser->expr_pool); - strcpy(plit->val, str); - return gu_new_variant_i(parser->expr_pool, - PGF_EXPR_LIT, - PgfExprLit, - lit); + return pgf_expr_string(str, parser->expr_pool); } case PGF_TOKEN_FLT: { char* str = diff --git a/src/runtime/c/pgf/expr.h b/src/runtime/c/pgf/expr.h index 07933556b..f197fbc6c 100644 --- a/src/runtime/c/pgf/expr.h +++ b/src/runtime/c/pgf/expr.h @@ -147,6 +147,9 @@ PgfExpr pgf_expr_apply(PgfApplication*, GuPool* pool); PgfExpr +pgf_expr_string(GuString, GuPool* pool); + +PgfExpr pgf_read_expr(GuIn* in, GuPool* pool, GuExn* err); PgfType* |
