diff options
| author | kr.angelov <kr.angelov@gmail.com> | 2014-12-19 08:58:02 +0000 |
|---|---|---|
| committer | kr.angelov <kr.angelov@gmail.com> | 2014-12-19 08:58:02 +0000 |
| commit | f44f9a1b00568e205fd68be0f0ea7728e7502a49 (patch) | |
| tree | 323cba6bfa7b924edf462cda201e458701ddc84e /src/runtime/c | |
| parent | bb1c1dd27c8adc007ef64546cae67ac729b05422 (diff) | |
added mkStr to the Haskell binding
Diffstat (limited to 'src/runtime/c')
| -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* |
