From 426bc49a52b4efa0ef0129d713842d8c9abdf0ff Mon Sep 17 00:00:00 2001 From: "kr.angelov" Date: Fri, 27 Sep 2013 15:09:48 +0000 Subject: a major refactoring in the C and the Haskell runtimes. Note incompatible change in the PGF format!!! The following are the outcomes: - Predef.nonExist is fully supported by both the Haskell and the C runtimes - Predef.BIND is now an internal compiler defined token. For now it behaves just as usual for the Haskell runtime, i.e. it generates &+. However, the special treatment will let us to handle it properly in the C runtime. - This required a major change in the PGF format since both nonExist and BIND may appear inside 'pre' and this was not supported before. --- src/runtime/python/pypgf.c | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) (limited to 'src/runtime/python/pypgf.c') diff --git a/src/runtime/python/pypgf.c b/src/runtime/python/pypgf.c index 27655166b..b5ff53af0 100644 --- a/src/runtime/python/pypgf.c +++ b/src/runtime/python/pypgf.c @@ -1518,17 +1518,13 @@ typedef struct { } PgfBracketLznState; static void -pgf_bracket_lzn_symbol_tokens(PgfLinFuncs** funcs, PgfTokens* toks) +pgf_bracket_lzn_symbol_token(PgfLinFuncs** funcs, PgfToken tok) { PgfBracketLznState* state = gu_container(funcs, PgfBracketLznState, funcs); - size_t len = gu_seq_length(toks); - for (size_t i = 0; i < len; i++) { - PgfToken tok = gu_seq_get(toks, PgfToken, i); - PyObject* str = gu2py_string(tok); - PyList_Append(state->list, str); - Py_DECREF(str); - } + PyObject* str = gu2py_string(tok); + PyList_Append(state->list, str); + Py_DECREF(str); } static void @@ -1600,7 +1596,7 @@ pgf_bracket_lzn_end_phrase(PgfLinFuncs** funcs, PgfCId cat, int fid, int lindex, } static PgfLinFuncs pgf_bracket_lin_funcs = { - .symbol_tokens = pgf_bracket_lzn_symbol_tokens, + .symbol_token = pgf_bracket_lzn_symbol_token, .expr_literal = pgf_bracket_lzn_expr_literal, .begin_phrase = pgf_bracket_lzn_begin_phrase, .end_phrase = pgf_bracket_lzn_end_phrase -- cgit v1.2.3