diff options
| author | kr.angelov <kr.angelov@gmail.com> | 2013-08-23 13:17:45 +0000 |
|---|---|---|
| committer | kr.angelov <kr.angelov@gmail.com> | 2013-08-23 13:17:45 +0000 |
| commit | a20cd77d251192b8912587de17ebb87fa3cfb053 (patch) | |
| tree | 24cba6146320eeff2e0eda2ee731546c247c577b /src/runtime/c/pgf | |
| parent | 7c98267193726f4031c4551cf8a24c34c75fef94 (diff) | |
nonExist now does the expected thing
Diffstat (limited to 'src/runtime/c/pgf')
| -rw-r--r-- | src/runtime/c/pgf/data.h | 5 | ||||
| -rw-r--r-- | src/runtime/c/pgf/linearizer.c | 4 | ||||
| -rw-r--r-- | src/runtime/c/pgf/parser.c | 7 | ||||
| -rw-r--r-- | src/runtime/c/pgf/printer.c | 4 | ||||
| -rw-r--r-- | src/runtime/c/pgf/reader.c | 7 |
5 files changed, 26 insertions, 1 deletions
diff --git a/src/runtime/c/pgf/data.h b/src/runtime/c/pgf/data.h index b7a13d07d..5e32d8e5e 100644 --- a/src/runtime/c/pgf/data.h +++ b/src/runtime/c/pgf/data.h @@ -180,7 +180,8 @@ typedef enum { PGF_SYMBOL_LIT, PGF_SYMBOL_VAR, PGF_SYMBOL_KS, - PGF_SYMBOL_KP + PGF_SYMBOL_KP, + PGF_SYMBOL_NE } PgfSymbolTag; typedef struct { @@ -208,6 +209,8 @@ typedef struct PgfSymbolKP * symbol. */ } PgfSymbolKP; +typedef struct { +} PgfSymbolNE; typedef GuSeq PgfSequence; // -> PgfSymbol typedef GuList(PgfSequence) PgfSequences; diff --git a/src/runtime/c/pgf/linearizer.c b/src/runtime/c/pgf/linearizer.c index c5aac7f4f..b110f3a78 100644 --- a/src/runtime/c/pgf/linearizer.c +++ b/src/runtime/c/pgf/linearizer.c @@ -532,6 +532,10 @@ pgf_lzr_linearize(PgfConcr* concr, PgfCncTree ctree, size_t lin_idx, PgfLinFuncs } break; } + case PGF_SYMBOL_NE: { + // Nothing to be done here + break; + } default: gu_impossible(); } diff --git a/src/runtime/c/pgf/parser.c b/src/runtime/c/pgf/parser.c index ea68ba8ca..0cf588aa1 100644 --- a/src/runtime/c/pgf/parser.c +++ b/src/runtime/c/pgf/parser.c @@ -163,6 +163,8 @@ pgf_prev_extern_sym(PgfSymbol sym) return *((PgfSymbol*) (((PgfSymbolLit*) i.data)+1)); case PGF_SYMBOL_VAR: return *((PgfSymbol*) (((PgfSymbolVar*) i.data)+1)); + case PGF_SYMBOL_NE: + return *((PgfSymbol*) (((PgfSymbolNE*) i.data)+1)); default: gu_impossible(); return gu_null_variant; @@ -1410,6 +1412,10 @@ pgf_parsing_symbol(PgfParseState* before, PgfParseState* after, case PGF_SYMBOL_VAR: // XXX TODO proper support break; + case PGF_SYMBOL_NE: { + // Nothing to be done here + break; + } default: gu_impossible(); } @@ -2743,6 +2749,7 @@ pgf_parser_leftcorner_item(PgfLeftcornerFn* clo, PgfItem* item) break; } case PGF_SYMBOL_LIT: + case PGF_SYMBOL_NE: // Nothing to be done here break; case PGF_SYMBOL_VAR: diff --git a/src/runtime/c/pgf/printer.c b/src/runtime/c/pgf/printer.c index 71ccda1f4..b0822e577 100644 --- a/src/runtime/c/pgf/printer.c +++ b/src/runtime/c/pgf/printer.c @@ -258,6 +258,10 @@ pgf_print_symbol(PgfSymbol sym, GuWriter *wtr, GuExn *err) gu_printf(wtr, err, "<%d,$%d>", svar->d, svar->r); break; } + case PGF_SYMBOL_NE: { + gu_puts("nonExist", wtr, err); + break; + } default: gu_impossible(); } diff --git a/src/runtime/c/pgf/reader.c b/src/runtime/c/pgf/reader.c index a43ebdba0..f58809ef5 100644 --- a/src/runtime/c/pgf/reader.c +++ b/src/runtime/c/pgf/reader.c @@ -717,6 +717,13 @@ pgf_read_symbol(PgfReader* rdr) } break; } + case PGF_SYMBOL_NE: { + gu_new_variant(PGF_SYMBOL_NE, + PgfSymbolNE, + &sym, rdr->opool); + gu_return_on_exn(rdr->err, gu_null_variant); + break; + } default: pgf_read_tag_error(rdr); } |
