mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-09 04:59:31 -06:00
missed graphviz.h
This commit is contained in:
78
src/runtime/c/pgf/graphviz.h
Normal file
78
src/runtime/c/pgf/graphviz.h
Normal file
@@ -0,0 +1,78 @@
|
||||
#ifndef GRAPHVIZ_H
|
||||
#define GRAPHVIZ_H
|
||||
|
||||
class PGF_INTERNAL_DECL PgfLinearizationGraphvizOutput : public PgfLinearizationOutputIface {
|
||||
struct ParseNode;
|
||||
|
||||
struct ParseLevel {
|
||||
size_t n_nodes;
|
||||
ParseNode **nodes;
|
||||
};
|
||||
|
||||
struct ParseNode {
|
||||
int id;
|
||||
ParseNode* parent;
|
||||
PgfText *fun;
|
||||
PgfText *label;
|
||||
|
||||
ParseNode(ParseLevel *level, int id, ParseNode *parent, PgfText *fun, PgfText *label);
|
||||
};
|
||||
|
||||
ParseNode* parent;
|
||||
size_t level;
|
||||
|
||||
size_t n_internals;
|
||||
ParseLevel **internals;
|
||||
|
||||
ParseLevel leaves;
|
||||
|
||||
PgfText *meta;
|
||||
|
||||
void generate_graphviz_level(PgfPrinter *printer, PgfGraphvizOptions* opts, ParseLevel *level);
|
||||
|
||||
public:
|
||||
PgfLinearizationGraphvizOutput();
|
||||
~PgfLinearizationGraphvizOutput();
|
||||
|
||||
PgfText *generate_graphviz(PgfGraphvizOptions* opts);
|
||||
|
||||
virtual void symbol_token(PgfText *tok);
|
||||
virtual void begin_phrase(PgfText *cat, int fid, PgfText *ann, PgfText *fun);
|
||||
virtual void end_phrase(PgfText *cat, int fid, PgfText *ann, PgfText *fun);
|
||||
virtual void symbol_ne();
|
||||
virtual void symbol_bind();
|
||||
virtual void symbol_meta(PgfMetaId id);
|
||||
};
|
||||
|
||||
class PGF_INTERNAL_DECL PgfAbstractGraphvizOutput : public PgfUnmarshaller {
|
||||
PgfAbstr *abstr;
|
||||
PgfMarshaller *m;
|
||||
PgfPrinter printer;
|
||||
PgfGraphvizOptions* opts;
|
||||
|
||||
int id;
|
||||
size_t n_vars;
|
||||
|
||||
public:
|
||||
PgfAbstractGraphvizOutput(PgfAbstr *abstr, PgfGraphvizOptions* opts, PgfMarshaller *m);
|
||||
|
||||
PgfText *generate_graphviz(PgfExpr expr);
|
||||
|
||||
virtual PgfExpr eabs(PgfBindType bind_type, PgfText *name, PgfExpr body);
|
||||
virtual PgfExpr eapp(PgfExpr fun, PgfExpr arg);
|
||||
virtual PgfExpr elit(PgfLiteral lit);
|
||||
virtual PgfExpr emeta(PgfMetaId meta_id);
|
||||
virtual PgfExpr efun(PgfText *name);
|
||||
virtual PgfExpr evar(int index);
|
||||
virtual PgfExpr etyped(PgfExpr expr, PgfType ty);
|
||||
virtual PgfExpr eimplarg(PgfExpr expr);
|
||||
virtual PgfLiteral lint(size_t size, uintmax_t *val);
|
||||
virtual PgfLiteral lflt(double val);
|
||||
virtual PgfLiteral lstr(PgfText *val);
|
||||
virtual PgfType dtyp(size_t n_hypos, PgfTypeHypo *hypos,
|
||||
PgfText *cat,
|
||||
size_t n_exprs, PgfExpr *exprs);
|
||||
virtual void free_ref(object x);
|
||||
};
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user