From 3546df22c00ae5fb8dd4702d9439c006fc6b5142 Mon Sep 17 00:00:00 2001 From: Sayan Dutta Date: Sat, 28 Mar 2020 22:44:24 +0530 Subject: [PATCH] Fixes > A pointer bug which caused the child tree to not propagate up through the tree --- examples/algebrica/ast/expression/operator.go | 21 +++++++------------ 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/examples/algebrica/ast/expression/operator.go b/examples/algebrica/ast/expression/operator.go index 201aeb5..1732273 100644 --- a/examples/algebrica/ast/expression/operator.go +++ b/examples/algebrica/ast/expression/operator.go @@ -10,27 +10,22 @@ type Operator struct { E node.Expression } -func (o Operator) Parse(tokens *goply.TokenStream) error { +func (o *Operator) Parse(tokens *goply.TokenStream) error { if tokens.EOS() { return ast.EndOfTokenStreamErr } - var op node.Operator if o.E != nil { - op = &Binary{Left: o.E} + o.E = &Binary{Left: o.E} } else { - op = &Binary{} + // no left context unary operator + o.E = &Binary{} } - err := op.Parse(tokens) - if err != nil { - return err - } - o.E = op - return nil + return o.E.Parse(tokens) } -func (o Operator) String() string { +func (o *Operator) String() string { return o.E.String() } -func (o Operator) Expression() {} -func (o Operator) Operator() {} +func (o *Operator) Expression() {} +func (o *Operator) Operator() {}