public override void BeforeVisitCatchAll(AstNodeBase node)
 {
     base.BeforeVisitCatchAll(node);
     ScopeAstNodeBase scopeNode = node as ScopeAstNodeBase;
     if(scopeNode != null)
         _scopeStack.Push(scopeNode.GetExtension<ScopeExtension>().SymbolTable);
 }
 public override void AfterVisitCatchAll(AstNodeBase node)
 {
     ScopeAstNodeBase scopeNode = node as ScopeAstNodeBase;
     if (scopeNode != null)
         _scopeStack.Pop();
     base.AfterVisitCatchAll(node);
 }
Exemple #3
0
 public override void AfterVisitCatchAll(AstNodeBase node)
 {
     var loopStatement = node as LoopStatementBase;
     if (loopStatement != null)
     {
         DebugAssert.AreSameObject(loopStatement, _loopStack.Peek(), "top of loop stack is not current loop statement");
         _loopStack.Pop();
     }
     base.AfterVisitCatchAll(node);
 }
Exemple #4
0
 public virtual void BeforeVisitCatchAll(AstNodeBase node)
 {
 }
Exemple #5
0
 public virtual void AfterVisitCatchAll(AstNodeBase node)
 {
 }
 public void Push(AstNodeBase node, Expression expr)
 {
     _stack.Push(new DebugExpression { Location = node.Location, Expression = expr });
 }
Exemple #7
0
 public override void BeforeVisitCatchAll(AstNodeBase node)
 {
     base.BeforeVisitCatchAll(node);
     var loopStatement = node as LoopStatementBase;
     if(loopStatement != null)
         _loopStack.Push(loopStatement);
 }
Exemple #8
0
 /// <summary>
 /// Seems a little silly, sure, but I like the pattern of calling this 
 /// better than the alternative...
 /// </summary>
 /// <param name="node"></param>
 public void Write(AstNodeBase node)
 {
     node.WriteString(this);
 }
Exemple #9
0
 public StatementBlock(HappySourceLocation startsAt, HappySourceLocation endsAt, AstNodeBase[] stmts)
     : base(startsAt, endsAt)
 {
     this.Statements = stmts;
 }