summaryrefslogtreecommitdiff
path: root/src/runtime
diff options
context:
space:
mode:
Diffstat (limited to 'src/runtime')
-rw-r--r--src/runtime/c/pgf/data.h5
-rw-r--r--src/runtime/c/pgf/linearizer.c4
-rw-r--r--src/runtime/c/pgf/parser.c7
-rw-r--r--src/runtime/c/pgf/printer.c4
-rw-r--r--src/runtime/c/pgf/reader.c7
-rw-r--r--src/runtime/haskell/PGF/Binary.hs2
-rw-r--r--src/runtime/haskell/PGF/Data.hs1
7 files changed, 29 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);
}
diff --git a/src/runtime/haskell/PGF/Binary.hs b/src/runtime/haskell/PGF/Binary.hs
index 0d743c1f4..865f98417 100644
--- a/src/runtime/haskell/PGF/Binary.hs
+++ b/src/runtime/haskell/PGF/Binary.hs
@@ -152,6 +152,7 @@ instance Binary Symbol where
put (SymVar n l) = putWord8 2 >> put (n,l)
put (SymKS ts) = putWord8 3 >> put ts
put (SymKP d vs) = putWord8 4 >> put (d,vs)
+ put SymNE = putWord8 5
get = do tag <- getWord8
case tag of
0 -> liftM2 SymCat get get
@@ -159,6 +160,7 @@ instance Binary Symbol where
2 -> liftM2 SymVar get get
3 -> liftM SymKS get
4 -> liftM2 (\d vs -> SymKP d vs) get get
+ 5 -> return SymNE
_ -> decodingError
instance Binary PArg where
diff --git a/src/runtime/haskell/PGF/Data.hs b/src/runtime/haskell/PGF/Data.hs
index 357dcc92e..58ced6a1e 100644
--- a/src/runtime/haskell/PGF/Data.hs
+++ b/src/runtime/haskell/PGF/Data.hs
@@ -60,6 +60,7 @@ data Symbol
| SymVar {-# UNPACK #-} !Int {-# UNPACK #-} !Int
| SymKS [Token]
| SymKP [Token] [Alternative]
+ | SymNE -- non exist
deriving (Eq,Ord,Show)
data Production
= PApply {-# UNPACK #-} !FunId [PArg]