1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147
|
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under MIT X11 license (for details please see \doc\license.txt)
using System;
using System.IO;
namespace ICSharpCode.NRefactory.VB.Ast
{
public class SelectStatement : Statement
{
public Expression Expression {
get { return GetChildByRole(Roles.Expression); }
set { SetChildByRole(Roles.Expression, value); }
}
public AstNodeCollection<CaseStatement> Cases {
get { return GetChildrenByRole(CaseStatement.CaseStatementRole); }
}
protected internal override bool DoMatch(AstNode other, ICSharpCode.NRefactory.PatternMatching.Match match)
{
throw new NotImplementedException();
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitSelectStatement(this, data);
}
}
public class CaseStatement : Statement
{
public static readonly Role<CaseStatement> CaseStatementRole = new Role<CaseStatement>("CaseStatement");
public AstNodeCollection<CaseClause> Clauses {
get { return GetChildrenByRole(CaseClause.CaseClauseRole); }
}
public BlockStatement Body {
get { return GetChildByRole(Roles.Body); }
set { SetChildByRole(Roles.Body, value); }
}
protected internal override bool DoMatch(AstNode other, ICSharpCode.NRefactory.PatternMatching.Match match)
{
throw new NotImplementedException();
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitCaseStatement(this, data);
}
}
public abstract class CaseClause : AstNode
{
#region Null
public new static readonly CaseClause Null = new NullCaseClause();
sealed class NullCaseClause : CaseClause
{
public override bool IsNull {
get {
return true;
}
}
public override S AcceptVisitor<T, S> (IAstVisitor<T, S> visitor, T data)
{
return default (S);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
return other == null || other.IsNull;
}
}
#endregion
public static readonly Role<CaseClause> CaseClauseRole = new Role<CaseClause>("CaseClause", CaseClause.Null);
public Expression Expression {
get { return GetChildByRole(Roles.Expression); }
set { SetChildByRole(Roles.Expression, value); }
}
}
public class SimpleCaseClause : CaseClause
{
protected internal override bool DoMatch(AstNode other, ICSharpCode.NRefactory.PatternMatching.Match match)
{
throw new NotImplementedException();
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitSimpleCaseClause(this, data);
}
}
public class RangeCaseClause : CaseClause
{
public static readonly Role<Expression> ToExpressionRole = ForStatement.ToExpressionRole;
public Expression ToExpression {
get { return GetChildByRole(ToExpressionRole); }
set { SetChildByRole(ToExpressionRole, value); }
}
protected internal override bool DoMatch(AstNode other, ICSharpCode.NRefactory.PatternMatching.Match match)
{
throw new NotImplementedException();
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitRangeCaseClause(this, data);
}
}
public class ComparisonCaseClause : CaseClause
{
public static readonly Role<VBTokenNode> OperatorRole = BinaryOperatorExpression.OperatorRole;
public ComparisonOperator Operator { get; set; }
protected internal override bool DoMatch(AstNode other, ICSharpCode.NRefactory.PatternMatching.Match match)
{
throw new NotImplementedException();
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitComparisonCaseClause(this, data);
}
}
public enum ComparisonOperator
{
Equality = BinaryOperatorType.Equality,
InEquality = BinaryOperatorType.InEquality,
LessThan = BinaryOperatorType.LessThan,
GreaterThan = BinaryOperatorType.GreaterThan,
LessThanOrEqual = BinaryOperatorType.LessThanOrEqual,
GreaterThanOrEqual = BinaryOperatorType.GreaterThanOrEqual
}
}
|