mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-21 10:49:33 -06:00
nonExist now does the expected thing
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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]
|
||||
|
||||
Reference in New Issue
Block a user