More fixes to restore parsing capability.
This commit is contained in:
parent
90af218524
commit
7409b050be
2 changed files with 22 additions and 16 deletions
36
textual.cc
36
textual.cc
|
|
@ -62,21 +62,23 @@ namespace {
|
|||
}
|
||||
#endif
|
||||
|
||||
if (! expr::compute_amount(expr, amount, xact))
|
||||
throw new parse_error("Amount expression failed to compute");
|
||||
if (expr) {
|
||||
if (! expr::compute_amount(expr, amount, xact))
|
||||
throw new parse_error("Amount expression failed to compute");
|
||||
|
||||
#if 0
|
||||
if (expr->kind == expr::node_t::VALUE) {
|
||||
expr = NULL;
|
||||
} else {
|
||||
DEBUG_IF("ledger.textual.parse") {
|
||||
std::cout << "Value expression tree:" << std::endl;
|
||||
ledger::dump_value_expr(std::cout, expr.get());
|
||||
if (expr->kind == expr::node_t::VALUE) {
|
||||
expr = NULL;
|
||||
} else {
|
||||
DEBUG_IF("ledger.textual.parse") {
|
||||
std::cout << "Value expression tree:" << std::endl;
|
||||
ledger::dump_value_expr(std::cout, expr.get());
|
||||
}
|
||||
}
|
||||
}
|
||||
#else
|
||||
expr = value_expr();
|
||||
expr = value_expr();
|
||||
#endif
|
||||
}
|
||||
|
||||
DEBUG("ledger.textual.parse", "line " << linenum << ": " <<
|
||||
"The transaction amount is " << xact->amount);
|
||||
|
|
@ -178,12 +180,16 @@ transaction_t * parse_transaction(char * line, account_t * account,
|
|||
EXPR_PARSE_NO_REDUCE);
|
||||
saw_amount = true;
|
||||
|
||||
xact->amount.reduce();
|
||||
DEBUG("ledger.textual.parse", "line " << linenum << ": " <<
|
||||
"Reduced amount is " << xact->amount);
|
||||
if (! xact->amount.is_null()) {
|
||||
xact->amount.reduce();
|
||||
DEBUG("ledger.textual.parse", "line " << linenum << ": " <<
|
||||
"Reduced amount is " << xact->amount);
|
||||
}
|
||||
|
||||
unsigned long end = (long)in.tellg();
|
||||
xact->amount_expr.expr_str = string(line, beg, end - beg);
|
||||
if (xact->amount_expr) {
|
||||
unsigned long end = (long)in.tellg();
|
||||
xact->amount_expr.expr_str = string(line, beg, end - beg);
|
||||
}
|
||||
}
|
||||
catch (error * err) {
|
||||
err_desc = "While parsing transaction amount:";
|
||||
|
|
|
|||
|
|
@ -794,7 +794,7 @@ public:
|
|||
}
|
||||
|
||||
operator bool() const throw() {
|
||||
return ptr != NULL;
|
||||
return ptr.get() != NULL;
|
||||
}
|
||||
operator string() const throw() {
|
||||
return expr_str;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue