summaryrefslogtreecommitdiff
path: root/src/runtime/c
diff options
context:
space:
mode:
Diffstat (limited to 'src/runtime/c')
-rw-r--r--src/runtime/c/pgf/data.h4
-rw-r--r--src/runtime/c/pgf/linearizer.c2
-rw-r--r--src/runtime/c/pgf/parser.c8
-rw-r--r--src/runtime/c/pgf/printer.c4
-rw-r--r--src/runtime/c/pgf/reader.c7
5 files changed, 25 insertions, 0 deletions
diff --git a/src/runtime/c/pgf/data.h b/src/runtime/c/pgf/data.h
index dd482f372..e734434cd 100644
--- a/src/runtime/c/pgf/data.h
+++ b/src/runtime/c/pgf/data.h
@@ -204,6 +204,7 @@ typedef enum {
PGF_SYMBOL_KP,
PGF_SYMBOL_BIND,
PGF_SYMBOL_SOFT_BIND,
+ PGF_SYMBOL_CAPIT,
PGF_SYMBOL_NE
} PgfSymbolTag;
@@ -238,6 +239,9 @@ typedef struct {
typedef struct {
} PgfSymbolBIND;
+typedef struct {
+} PgfSymbolCAPIT;
+
typedef GuBuf PgfProductionIdx;
typedef struct {
diff --git a/src/runtime/c/pgf/linearizer.c b/src/runtime/c/pgf/linearizer.c
index f70aa405a..1b02e1b38 100644
--- a/src/runtime/c/pgf/linearizer.c
+++ b/src/runtime/c/pgf/linearizer.c
@@ -904,6 +904,8 @@ pgf_lzr_linearize_symbols(PgfLzr* lzr, PgfCncTreeApp* fapp,
}
break;
}
+ case PGF_SYMBOL_CAPIT:
+ break;
default:
gu_impossible();
}
diff --git a/src/runtime/c/pgf/parser.c b/src/runtime/c/pgf/parser.c
index 8d725a48a..abd8ff521 100644
--- a/src/runtime/c/pgf/parser.c
+++ b/src/runtime/c/pgf/parser.c
@@ -137,6 +137,8 @@ pgf_prev_extern_sym(PgfSymbol sym)
case PGF_SYMBOL_BIND:
case PGF_SYMBOL_SOFT_BIND:
return *((PgfSymbol*) (((PgfSymbolBIND*) i.data)+1));
+ case PGF_SYMBOL_CAPIT:
+ return *((PgfSymbol*) (((PgfSymbolCAPIT*) i.data)+1));
case PGF_SYMBOL_NE:
return *((PgfSymbol*) (((PgfSymbolNE*) i.data)+1));
default:
@@ -1147,6 +1149,9 @@ pgf_symbols_cmp(GuString* psent, size_t sent_len, BIND_TYPE* pbind, PgfSymbols*
*pbind = BIND_SOFT;
break;
}
+ case PGF_SYMBOL_CAPIT: {
+ break;
+ }
case PGF_SYMBOL_NE: {
return -2;
}
@@ -1719,6 +1724,9 @@ pgf_parsing_symbol(PgfParsing* ps, PgfItem* item, PgfSymbol sym)
}
break;
}
+ case PGF_SYMBOL_CAPIT: {
+ break;
+ }
default:
gu_impossible();
}
diff --git a/src/runtime/c/pgf/printer.c b/src/runtime/c/pgf/printer.c
index 10a9858c1..e3e014c4b 100644
--- a/src/runtime/c/pgf/printer.c
+++ b/src/runtime/c/pgf/printer.c
@@ -276,6 +276,10 @@ pgf_print_symbol(PgfSymbol sym, GuOut *out, GuExn *err)
gu_puts("SOFT_BIND", out, err);
break;
}
+ case PGF_SYMBOL_CAPIT: {
+ gu_puts("CAPIT", out, err);
+ break;
+ }
default:
gu_impossible();
}
diff --git a/src/runtime/c/pgf/reader.c b/src/runtime/c/pgf/reader.c
index 8ff80a67c..8314fef5f 100644
--- a/src/runtime/c/pgf/reader.c
+++ b/src/runtime/c/pgf/reader.c
@@ -709,6 +709,13 @@ pgf_read_symbol(PgfReader* rdr)
gu_return_on_exn(rdr->err, gu_null_variant);
break;
}
+ case PGF_SYMBOL_CAPIT: {
+ gu_new_variant(PGF_SYMBOL_CAPIT,
+ PgfSymbolCAPIT,
+ &sym, rdr->opool);
+ gu_return_on_exn(rdr->err, gu_null_variant);
+ break;
+ }
default:
pgf_read_tag_error(rdr);
}