forked from GitHub/gf-core
accidentally commited a wrong version of expr.cxx
This commit is contained in:
@@ -1,17 +1,17 @@
|
|||||||
#include "pgf/data.h"
|
#include "pgf/data.h"
|
||||||
|
|
||||||
PGF_INTERNAL
|
PGF_INTERNAL
|
||||||
hobject pgf_unmarshall_literal(PgfBridge *b, PgfLiteral l)
|
uintptr_t pgf_unmarshall_literal(PgfUnmarshaller *u, PgfLiteral l)
|
||||||
{
|
{
|
||||||
switch (ref<PgfLiteral>::get_tag(l)) {
|
switch (ref<PgfLiteral>::get_tag(l)) {
|
||||||
case PgfLiteralInt::tag: {
|
case PgfLiteralInt::tag: {
|
||||||
return b->lint(ref<PgfLiteralInt>::untagged(l)->val);
|
return u->lint(ref<PgfLiteralInt>::untagged(l)->val);
|
||||||
}
|
}
|
||||||
case PgfLiteralFlt::tag: {
|
case PgfLiteralFlt::tag: {
|
||||||
return b->lflt(ref<PgfLiteralInt>::untagged(l)->val);
|
return u->lflt(ref<PgfLiteralInt>::untagged(l)->val);
|
||||||
}
|
}
|
||||||
case PgfLiteralStr::tag: {
|
case PgfLiteralStr::tag: {
|
||||||
return b->lstr(&ref<PgfLiteralStr>::untagged(l)->val);
|
return u->lstr(&ref<PgfLiteralStr>::untagged(l)->val);
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
throw pgf_error("Unknown literal tag");
|
throw pgf_error("Unknown literal tag");
|
||||||
@@ -19,55 +19,55 @@ hobject pgf_unmarshall_literal(PgfBridge *b, PgfLiteral l)
|
|||||||
}
|
}
|
||||||
|
|
||||||
PGF_INTERNAL
|
PGF_INTERNAL
|
||||||
hobject pgf_unmarshall_expr(PgfBridge *b, PgfExpr e)
|
uintptr_t pgf_unmarshall_expr(PgfUnmarshaller *u, PgfExpr e)
|
||||||
{
|
{
|
||||||
switch (ref<PgfExpr>::get_tag(e)) {
|
switch (ref<PgfExpr>::get_tag(e)) {
|
||||||
case PgfExprAbs::tag: {
|
case PgfExprAbs::tag: {
|
||||||
auto eabs = ref<PgfExprAbs>::untagged(e);
|
auto eabs = ref<PgfExprAbs>::untagged(e);
|
||||||
hobject body = pgf_unmarshall_expr(b,eabs->body);
|
uintptr_t body = pgf_unmarshall_expr(u,eabs->body);
|
||||||
hobject res = b->eabs(eabs->bind_type,&eabs->name,body);
|
uintptr_t res = u->eabs(eabs->bind_type,&eabs->name,body);
|
||||||
b->free_ref(body);
|
u->free_ref(body);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
case PgfExprApp::tag: {
|
case PgfExprApp::tag: {
|
||||||
auto eapp = ref<PgfExprApp>::untagged(e);
|
auto eapp = ref<PgfExprApp>::untagged(e);
|
||||||
hobject fun = pgf_unmarshall_expr(b,eapp->fun);
|
uintptr_t fun = pgf_unmarshall_expr(u,eapp->fun);
|
||||||
hobject arg = pgf_unmarshall_expr(b,eapp->arg);
|
uintptr_t arg = pgf_unmarshall_expr(u,eapp->arg);
|
||||||
hobject res = b->eapp(fun,arg);
|
uintptr_t res = u->eapp(fun,arg);
|
||||||
b->free_ref(arg);
|
u->free_ref(arg);
|
||||||
b->free_ref(fun);
|
u->free_ref(fun);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
case PgfExprLit::tag: {
|
case PgfExprLit::tag: {
|
||||||
auto elit = ref<PgfExprLit>::untagged(e);
|
auto elit = ref<PgfExprLit>::untagged(e);
|
||||||
hobject lit = pgf_unmarshall_literal(b,elit->lit);
|
uintptr_t lit = pgf_unmarshall_literal(u,elit->lit);
|
||||||
hobject res = b->elit(lit);
|
uintptr_t res = u->elit(lit);
|
||||||
b->free_ref(lit);
|
u->free_ref(lit);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
case PgfExprMeta::tag: {
|
case PgfExprMeta::tag: {
|
||||||
return b->emeta(ref<PgfExprMeta>::untagged(e)->id);
|
return u->emeta(ref<PgfExprMeta>::untagged(e)->id);
|
||||||
}
|
}
|
||||||
case PgfExprFun::tag: {
|
case PgfExprFun::tag: {
|
||||||
return b->efun(&ref<PgfExprFun>::untagged(e)->name);
|
return u->efun(&ref<PgfExprFun>::untagged(e)->name);
|
||||||
}
|
}
|
||||||
case PgfExprVar::tag: {
|
case PgfExprVar::tag: {
|
||||||
return b->evar(ref<PgfExprVar>::untagged(e)->var);
|
return u->evar(ref<PgfExprVar>::untagged(e)->var);
|
||||||
}
|
}
|
||||||
case PgfExprTyped::tag: {
|
case PgfExprTyped::tag: {
|
||||||
auto etyped = ref<PgfExprTyped>::untagged(e);
|
auto etyped = ref<PgfExprTyped>::untagged(e);
|
||||||
hobject expr = pgf_unmarshall_expr(b,etyped->expr);
|
uintptr_t expr = pgf_unmarshall_expr(u,etyped->expr);
|
||||||
hobject type = pgf_unmarshall_type(b,etyped->type);
|
uintptr_t type = pgf_unmarshall_type(u,etyped->type);
|
||||||
hobject res = b->etyped(expr,type);
|
uintptr_t res = u->etyped(expr,type);
|
||||||
b->free_ref(type);
|
u->free_ref(type);
|
||||||
b->free_ref(expr);
|
u->free_ref(expr);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
case PgfExprImplArg::tag: {
|
case PgfExprImplArg::tag: {
|
||||||
auto eimpl = ref<PgfExprImplArg>::untagged(e);
|
auto eimpl = ref<PgfExprImplArg>::untagged(e);
|
||||||
hobject expr = pgf_unmarshall_expr(b,eimpl->expr);
|
uintptr_t expr = pgf_unmarshall_expr(u,eimpl->expr);
|
||||||
hobject res = b->eimplarg(expr);
|
uintptr_t res = u->eimplarg(expr);
|
||||||
b->free_ref(expr);
|
u->free_ref(expr);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
@@ -76,43 +76,43 @@ hobject pgf_unmarshall_expr(PgfBridge *b, PgfExpr e)
|
|||||||
}
|
}
|
||||||
|
|
||||||
PGF_INTERNAL
|
PGF_INTERNAL
|
||||||
hobject pgf_unmarshall_type(PgfBridge *b, PgfType *tp)
|
uintptr_t pgf_unmarshall_type(PgfUnmarshaller *u, PgfType *tp)
|
||||||
{
|
{
|
||||||
PgfTypeHypo *hypos = (PgfTypeHypo *)
|
PgfTypeHypo *hypos = (PgfTypeHypo *)
|
||||||
alloca(tp->hypos->len * sizeof(PgfTypeHypo));
|
alloca(tp->hypos->len * sizeof(PgfTypeHypo));
|
||||||
for (size_t i = 0; i < tp->hypos->len; i++) {
|
for (size_t i = 0; i < tp->hypos->len; i++) {
|
||||||
hypos[i].bind_type = tp->hypos->data[i].bind_type;
|
hypos[i].bind_type = tp->hypos->data[i].bind_type;
|
||||||
hypos[i].cid = &(*tp->hypos->data[i].cid);
|
hypos[i].cid = &(*tp->hypos->data[i].cid);
|
||||||
hypos[i].type = pgf_unmarshall_type(b, tp->hypos->data[i].type);
|
hypos[i].type = pgf_unmarshall_type(u, tp->hypos->data[i].type);
|
||||||
}
|
}
|
||||||
|
|
||||||
hobject *exprs = (hobject *)
|
uintptr_t *exprs = (uintptr_t *)
|
||||||
alloca(tp->exprs->len * sizeof(hobject));
|
alloca(tp->exprs->len * sizeof(uintptr_t));
|
||||||
for (size_t i = 0; i < tp->exprs->len; i++) {
|
for (size_t i = 0; i < tp->exprs->len; i++) {
|
||||||
exprs[i] = pgf_unmarshall_expr(b, tp->exprs->data[i]);
|
exprs[i] = pgf_unmarshall_expr(u, tp->exprs->data[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
hobject res = b->dtyp(tp->hypos->len, hypos,
|
uintptr_t res = u->dtyp(tp->hypos->len, hypos,
|
||||||
&tp->name,
|
&tp->name,
|
||||||
tp->exprs->len, exprs);
|
tp->exprs->len, exprs);
|
||||||
|
|
||||||
for (size_t i = 0; i < tp->hypos->len; i++) {
|
for (size_t i = 0; i < tp->hypos->len; i++) {
|
||||||
b->free_ref(hypos[i].type);
|
u->free_ref(hypos[i].type);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (size_t i = 0; i < tp->exprs->len; i++) {
|
for (size_t i = 0; i < tp->exprs->len; i++) {
|
||||||
b->free_ref(exprs[i]);
|
u->free_ref(exprs[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
PgfExprParser::PgfExprParser(PgfText *input, PgfBridge *bridge)
|
PgfExprParser::PgfExprParser(PgfText *input, PgfUnmarshaller *unmarshaller)
|
||||||
{
|
{
|
||||||
inp = input;
|
inp = input;
|
||||||
pos = (const char*) &inp->text;
|
pos = (const char*) &inp->text;
|
||||||
ch = ' ';
|
ch = ' ';
|
||||||
b = bridge;
|
u = unmarshaller;
|
||||||
token_value = NULL;
|
token_value = NULL;
|
||||||
|
|
||||||
token();
|
token();
|
||||||
@@ -358,49 +358,49 @@ bool PgfExprParser::lookahead(int ch)
|
|||||||
return (this->ch == ch);
|
return (this->ch == ch);
|
||||||
}
|
}
|
||||||
|
|
||||||
hobject PgfExprParser::parse_term()
|
uintptr_t PgfExprParser::parse_term()
|
||||||
{
|
{
|
||||||
switch (token_tag) {
|
switch (token_tag) {
|
||||||
case PGF_TOKEN_LPAR: {
|
case PGF_TOKEN_LPAR: {
|
||||||
token();
|
token();
|
||||||
hobject expr = parse_expr();
|
uintptr_t expr = parse_expr();
|
||||||
if (token_tag == PGF_TOKEN_RPAR) {
|
if (token_tag == PGF_TOKEN_RPAR) {
|
||||||
token();
|
token();
|
||||||
return expr;
|
return expr;
|
||||||
} else {
|
} else {
|
||||||
if (expr != 0)
|
if (expr != 0)
|
||||||
b->free_ref(expr);
|
u->free_ref(expr);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case PGF_TOKEN_LTRIANGLE: {
|
case PGF_TOKEN_LTRIANGLE: {
|
||||||
token();
|
token();
|
||||||
hobject expr = parse_expr();
|
uintptr_t expr = parse_expr();
|
||||||
if (expr == 0)
|
if (expr == 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (token_tag != PGF_TOKEN_COLON) {
|
if (token_tag != PGF_TOKEN_COLON) {
|
||||||
b->free_ref(expr);
|
u->free_ref(expr);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
token();
|
token();
|
||||||
|
|
||||||
hobject type = parse_type();
|
uintptr_t type = parse_type();
|
||||||
if (type == 0) {
|
if (type == 0) {
|
||||||
b->free_ref(expr);
|
u->free_ref(expr);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (token_tag != PGF_TOKEN_RTRIANGLE) {
|
if (token_tag != PGF_TOKEN_RTRIANGLE) {
|
||||||
b->free_ref(expr);
|
u->free_ref(expr);
|
||||||
b->free_ref(type);
|
u->free_ref(type);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
token();
|
token();
|
||||||
|
|
||||||
hobject e = b->etyped(expr,type);
|
uintptr_t e = u->etyped(expr,type);
|
||||||
b->free_ref(expr);
|
u->free_ref(expr);
|
||||||
b->free_ref(type);
|
u->free_ref(type);
|
||||||
return e;
|
return e;
|
||||||
}
|
}
|
||||||
case PGF_TOKEN_QUESTION: {
|
case PGF_TOKEN_QUESTION: {
|
||||||
@@ -411,33 +411,33 @@ hobject PgfExprParser::parse_term()
|
|||||||
id = atoi((const char*) &token_value->text);
|
id = atoi((const char*) &token_value->text);
|
||||||
token();
|
token();
|
||||||
}
|
}
|
||||||
return b->emeta(id);
|
return u->emeta(id);
|
||||||
}
|
}
|
||||||
case PGF_TOKEN_IDENT: {
|
case PGF_TOKEN_IDENT: {
|
||||||
hobject e = b->efun(token_value);
|
uintptr_t e = u->efun(token_value);
|
||||||
token();
|
token();
|
||||||
return e;
|
return e;
|
||||||
}
|
}
|
||||||
case PGF_TOKEN_INT: {
|
case PGF_TOKEN_INT: {
|
||||||
int n = atoi((const char*) &token_value->text);
|
int n = atoi((const char*) &token_value->text);
|
||||||
uint32_t lit = b->lint(n);
|
uint32_t lit = u->lint(n);
|
||||||
uint32_t e = b->elit(lit);
|
uint32_t e = u->elit(lit);
|
||||||
b->free_ref(lit);
|
u->free_ref(lit);
|
||||||
token();
|
token();
|
||||||
return e;
|
return e;
|
||||||
}
|
}
|
||||||
case PGF_TOKEN_STR: {
|
case PGF_TOKEN_STR: {
|
||||||
uint32_t lit = b->lstr(token_value);
|
uint32_t lit = u->lstr(token_value);
|
||||||
uint32_t e = b->elit(lit);
|
uint32_t e = u->elit(lit);
|
||||||
b->free_ref(lit);
|
u->free_ref(lit);
|
||||||
token();
|
token();
|
||||||
return e;
|
return e;
|
||||||
}
|
}
|
||||||
case PGF_TOKEN_FLT: {
|
case PGF_TOKEN_FLT: {
|
||||||
double d = atof((const char*) &token_value->text);
|
double d = atof((const char*) &token_value->text);
|
||||||
uint32_t lit = b->lflt(d);
|
uint32_t lit = u->lflt(d);
|
||||||
uint32_t e = b->elit(lit);
|
uint32_t e = u->elit(lit);
|
||||||
b->free_ref(lit);
|
u->free_ref(lit);
|
||||||
token();
|
token();
|
||||||
return e;
|
return e;
|
||||||
}
|
}
|
||||||
@@ -446,9 +446,9 @@ hobject PgfExprParser::parse_term()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
hobject PgfExprParser::parse_arg()
|
uintptr_t PgfExprParser::parse_arg()
|
||||||
{
|
{
|
||||||
hobject arg;
|
uintptr_t arg;
|
||||||
|
|
||||||
if (token_tag == PGF_TOKEN_LCURLY) {
|
if (token_tag == PGF_TOKEN_LCURLY) {
|
||||||
token();
|
token();
|
||||||
@@ -458,13 +458,13 @@ hobject PgfExprParser::parse_arg()
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (token_tag != PGF_TOKEN_RCURLY) {
|
if (token_tag != PGF_TOKEN_RCURLY) {
|
||||||
b->free_ref(arg);
|
u->free_ref(arg);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
token();
|
token();
|
||||||
|
|
||||||
hobject e = b->eimplarg(arg);
|
uintptr_t e = u->eimplarg(arg);
|
||||||
b->free_ref(arg);
|
u->free_ref(arg);
|
||||||
arg = e;
|
arg = e;
|
||||||
} else {
|
} else {
|
||||||
arg = parse_term();
|
arg = parse_term();
|
||||||
@@ -553,9 +553,9 @@ PgfBind *PgfExprParser::parse_binds(PgfBind *next)
|
|||||||
return next;
|
return next;
|
||||||
}
|
}
|
||||||
|
|
||||||
hobject PgfExprParser::parse_expr()
|
uintptr_t PgfExprParser::parse_expr()
|
||||||
{
|
{
|
||||||
hobject expr;
|
uintptr_t expr;
|
||||||
|
|
||||||
if (token_tag == PGF_TOKEN_LAMBDA) {
|
if (token_tag == PGF_TOKEN_LAMBDA) {
|
||||||
token();
|
token();
|
||||||
@@ -574,8 +574,8 @@ hobject PgfExprParser::parse_expr()
|
|||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
while (bs != NULL) {
|
while (bs != NULL) {
|
||||||
hobject abs_expr = b->eabs(bs->bind_type, &bs->var, expr);
|
uintptr_t abs_expr = u->eabs(bs->bind_type, &bs->var, expr);
|
||||||
b->free_ref(expr);
|
u->free_ref(expr);
|
||||||
expr = abs_expr;
|
expr = abs_expr;
|
||||||
|
|
||||||
PgfBind *tmp = bs;
|
PgfBind *tmp = bs;
|
||||||
@@ -606,11 +606,11 @@ error:
|
|||||||
token_tag != PGF_TOKEN_COMMA &&
|
token_tag != PGF_TOKEN_COMMA &&
|
||||||
token_tag != PGF_TOKEN_SEMI &&
|
token_tag != PGF_TOKEN_SEMI &&
|
||||||
token_tag != PGF_TOKEN_UNKNOWN) {
|
token_tag != PGF_TOKEN_UNKNOWN) {
|
||||||
hobject arg = parse_arg();
|
uintptr_t arg = parse_arg();
|
||||||
if (arg == 0)
|
if (arg == 0)
|
||||||
return expr;
|
return expr;
|
||||||
|
|
||||||
expr = b->eapp(expr, arg);
|
expr = u->eapp(expr, arg);
|
||||||
}
|
}
|
||||||
|
|
||||||
return expr;
|
return expr;
|
||||||
@@ -666,9 +666,9 @@ bool PgfExprParser::parse_hypos(size_t *n_hypos, PgfTypeHypo **hypos)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
hobject PgfExprParser::parse_type()
|
uintptr_t PgfExprParser::parse_type()
|
||||||
{
|
{
|
||||||
hobject type = 0;
|
uintptr_t type = 0;
|
||||||
|
|
||||||
size_t n_hypos = 0;
|
size_t n_hypos = 0;
|
||||||
PgfTypeHypo *hypos = NULL;
|
PgfTypeHypo *hypos = NULL;
|
||||||
@@ -676,7 +676,7 @@ hobject PgfExprParser::parse_type()
|
|||||||
PgfText *cat = NULL;
|
PgfText *cat = NULL;
|
||||||
|
|
||||||
size_t n_args = 0;
|
size_t n_args = 0;
|
||||||
hobject *args = NULL;
|
uintptr_t *args = NULL;
|
||||||
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
if (token_tag == PGF_TOKEN_LPAR) {
|
if (token_tag == PGF_TOKEN_LPAR) {
|
||||||
@@ -708,7 +708,7 @@ hobject PgfExprParser::parse_type()
|
|||||||
|
|
||||||
size_t n_end = n_hypos;
|
size_t n_end = n_hypos;
|
||||||
|
|
||||||
hobject type = parse_type();
|
uintptr_t type = parse_type();
|
||||||
if (type == 0)
|
if (type == 0)
|
||||||
goto exit;
|
goto exit;
|
||||||
|
|
||||||
@@ -734,11 +734,11 @@ hobject PgfExprParser::parse_type()
|
|||||||
token_tag != PGF_TOKEN_RPAR &&
|
token_tag != PGF_TOKEN_RPAR &&
|
||||||
token_tag != PGF_TOKEN_RTRIANGLE &&
|
token_tag != PGF_TOKEN_RTRIANGLE &&
|
||||||
token_tag != PGF_TOKEN_RARROW) {
|
token_tag != PGF_TOKEN_RARROW) {
|
||||||
hobject arg = parse_arg();
|
uintptr_t arg = parse_arg();
|
||||||
if (arg == 0)
|
if (arg == 0)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
args = (hobject*) realloc(args, sizeof(hobject)*(n_args+1));
|
args = (uintptr_t*) realloc(args, sizeof(uintptr_t)*(n_args+1));
|
||||||
args[n_args++] = arg;
|
args[n_args++] = arg;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -749,11 +749,11 @@ hobject PgfExprParser::parse_type()
|
|||||||
PgfTypeHypo *bt = &hypos[n_hypos];
|
PgfTypeHypo *bt = &hypos[n_hypos];
|
||||||
bt->bind_type = PGF_BIND_TYPE_EXPLICIT;
|
bt->bind_type = PGF_BIND_TYPE_EXPLICIT;
|
||||||
bt->cid = textdup(&wildcard);
|
bt->cid = textdup(&wildcard);
|
||||||
bt->type = b->dtyp(0,NULL,cat,n_args,args);
|
bt->type = u->dtyp(0,NULL,cat,n_args,args);
|
||||||
n_hypos++;
|
n_hypos++;
|
||||||
|
|
||||||
while (n_args > 0) {
|
while (n_args > 0) {
|
||||||
b->free_ref(args[--n_args]);
|
u->free_ref(args[--n_args]);
|
||||||
}
|
}
|
||||||
|
|
||||||
free(args); args = NULL;
|
free(args); args = NULL;
|
||||||
@@ -765,12 +765,12 @@ hobject PgfExprParser::parse_type()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
type = b->dtyp(n_hypos,hypos,cat,n_args,args);
|
type = u->dtyp(n_hypos,hypos,cat,n_args,args);
|
||||||
|
|
||||||
exit:
|
exit:
|
||||||
while (n_hypos > 0) {
|
while (n_hypos > 0) {
|
||||||
PgfTypeHypo *hypo = &hypos[--n_hypos];
|
PgfTypeHypo *hypo = &hypos[--n_hypos];
|
||||||
b->free_ref(hypo->type);
|
u->free_ref(hypo->type);
|
||||||
free(hypo->cid);
|
free(hypo->cid);
|
||||||
}
|
}
|
||||||
free(hypos);
|
free(hypos);
|
||||||
@@ -778,134 +778,9 @@ exit:
|
|||||||
free(cat);
|
free(cat);
|
||||||
|
|
||||||
while (n_args > 0) {
|
while (n_args > 0) {
|
||||||
b->free_ref(args[--n_args]);
|
u->free_ref(args[--n_args]);
|
||||||
}
|
}
|
||||||
free(args);
|
free(args);
|
||||||
|
|
||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
|
|
||||||
PgfExprPrinter::PgfExprPrinter(PgfBridge *bridge)
|
|
||||||
{
|
|
||||||
b = bridge;
|
|
||||||
}
|
|
||||||
|
|
||||||
void PgfExprPrinter::put_lit(hobject lit)
|
|
||||||
{
|
|
||||||
b->match_lit(this, lit);
|
|
||||||
}
|
|
||||||
|
|
||||||
void PgfExprPrinter::put_expr(hobject expr)
|
|
||||||
{
|
|
||||||
b->match_expr(this, expr);
|
|
||||||
}
|
|
||||||
|
|
||||||
void PgfExprPrinter::put_type(hobject ty)
|
|
||||||
{
|
|
||||||
b->match_type(this, ty);
|
|
||||||
}
|
|
||||||
|
|
||||||
void PgfExprPrinter::put_str(const char* s)
|
|
||||||
{
|
|
||||||
printf("%s",s);
|
|
||||||
}
|
|
||||||
|
|
||||||
void PgfExprPrinter::put_text(PgfText *text)
|
|
||||||
{
|
|
||||||
printf("%s",text->text);
|
|
||||||
}
|
|
||||||
|
|
||||||
hobject PgfExprPrinter::eabs(PgfBindType btype, PgfText *name, hobject body)
|
|
||||||
{
|
|
||||||
put_str("\\");
|
|
||||||
if (btype == PGF_BIND_TYPE_IMPLICIT)
|
|
||||||
put_str("{");
|
|
||||||
put_text(name);
|
|
||||||
if (btype == PGF_BIND_TYPE_IMPLICIT)
|
|
||||||
put_str("}");
|
|
||||||
put_str(" -> ");
|
|
||||||
put_expr(body);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
hobject PgfExprPrinter::eapp(hobject fun, hobject arg)
|
|
||||||
{
|
|
||||||
put_expr(fun);
|
|
||||||
put_str(" ");
|
|
||||||
put_expr(arg);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
hobject PgfExprPrinter::elit(hobject lit)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
hobject PgfExprPrinter::emeta(PgfMetaId meta)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
hobject PgfExprPrinter::efun(PgfText *name)
|
|
||||||
{
|
|
||||||
put_text(name);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
hobject PgfExprPrinter::evar(int index)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
hobject PgfExprPrinter::etyped(hobject expr, hobject typ)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
hobject PgfExprPrinter::eimplarg(hobject expr)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
hobject PgfExprPrinter::lint(int v)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
hobject PgfExprPrinter::lflt(double v)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
hobject PgfExprPrinter::lstr(PgfText *v)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
hobject PgfExprPrinter::dtyp(int n_hypos, PgfTypeHypo *hypos,
|
|
||||||
PgfText *cat,
|
|
||||||
int n_exprs, hobject *exprs)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void PgfExprPrinter::match_lit(PgfBridge *bridge, hobject lit)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void PgfExprPrinter::match_expr(PgfBridge *bridge, hobject expr)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void PgfExprPrinter::match_type(PgfBridge *bridge, hobject type)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void PgfExprPrinter::free_ref(hobject x)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void PgfExprPrinter::free_me()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user