implement bracketedLinearize

This commit is contained in:
krangelov
2021-12-03 09:44:03 +01:00
parent dc344fccc0
commit baf78528d3
6 changed files with 202 additions and 80 deletions

View File

@@ -587,16 +587,36 @@ struct PgfLinearizationOutputIface
/// token binding
virtual void symbol_bind()=0;
/// capitalization
virtual void symbol_capit()=0;
/// capitalization
virtual void symbol_allcapit()=0;
/// meta variable
virtual void symbol_meta(PgfMetaId id)=0;
};
#else
typedef struct PgfLinearizationOutputIface PgfLinearizationOutputIface;
typedef struct PgfLinearizationOutputIfaceVtbl PgfLinearizationOutputIfaceVtbl;
struct PgfLinearizationOutputIfaceVtbl
{
/// Output tokens
void (*symbol_token)(PgfLinearizationOutputIface *this, PgfText *tok);
/// Begin phrase
void (*begin_phrase)(PgfLinearizationOutputIface *this, PgfText *cat, int fid, PgfText *ann, PgfText *fun);
/// End phrase
void (*end_phrase)(PgfLinearizationOutputIface *this, PgfText *cat, int fid, PgfText *ann, PgfText *fun);
/// handling nonExist
void (*symbol_ne)(PgfLinearizationOutputIface *this);
/// token binding
void (*symbol_bind)(PgfLinearizationOutputIface *this);
/// meta variable
void (*symbol_meta)(PgfLinearizationOutputIface *this, PgfMetaId id);
};
struct PgfLinearizationOutputIface
{
PgfLinearizationOutputIfaceVtbl *vtbl;
};
#endif
PGF_API_DECL
@@ -604,6 +624,12 @@ PgfText *pgf_linearize(PgfDB *db, PgfConcrRevision revision,
PgfExpr expr, PgfMarshaller *m,
PgfExn* err);
PGF_API_DECL
void pgf_bracketed_linearize(PgfDB *db, PgfConcrRevision revision,
PgfExpr expr, PgfMarshaller *m,
PgfLinearizationOutputIface *out,
PgfExn* err);
PGF_API_DECL
PgfLiteral pgf_get_global_flag(PgfDB *db, PgfRevision revision,
PgfText *name,