コード例 #1
0
ファイル: AstVisitorBase.cs プロジェクト: dlurton/Happy
 public virtual void BeforeVisit(ReturnStatement node)
 {
     this.BeforeVisitCatchAll(node);
 }
コード例 #2
0
ファイル: Parser.cs プロジェクト: dlurton/Happy
        AstNodeBase ParseReturn()
        {
            HappySourceLocation location = this.AssertExpect(HappyTokenKind.KeywordReturn).Location;
            ExpressionNodeBase returnExpression = null;

            if(_lexer.PeekToken().HappyTokenKind != HappyTokenKind.EndOfStatement)
                returnExpression = this.ParseExpression(ExpressionContext.Expression);

            AstNodeBase retval = new ReturnStatement(location, returnExpression);
            return retval;
        }
コード例 #3
0
ファイル: AstVisitorBase.cs プロジェクト: dlurton/Happy
 public virtual void AfterVisit(ReturnStatement node)
 {
     this.AfterVisitCatchAll(node);
 }
コード例 #4
0
 public override void AfterVisit(ReturnStatement node)
 {
     Expression @return = node.ReturnExp == null ? Expression.Constant(null) : _expressionStack.Pop();
     _expressionStack.Push(node, Expression.Goto(_returnLabelTarget, Expression.Convert(@return, typeof(object))));
     base.AfterVisit(node);
 }