using System;
using System.Collections.Generic;
using System.Text;
public abstract class Statement
{
}
public class DeclareVariable : Statement
{
public string Identifier;
public Expression Expression;
}
public class DeclareFunction : Statement
{
public string FunctionName;
public DeclareVariable Parameter1;
public DeclareVariable Parameter2;
public DeclareVariable Parameter3;
public String ReturnType;
public Statement Body;
}
public class CallFunction : Statement
{
public string FunctionName;
public Expression Parameter1;
public Expression Parameter2;
public Expression Parameter3;
public Identifier ReturnVariable;
}
public class Write : Statement
{
public Expression Expression;
}
public class Assignment : Statement
{
public string Identifier;
public Expression Expression;
}
public class For : Statement
{
public string Identifier;
public Expression From;
public Expression To;
public Statement Body;
}
public class IfThenElse : Statement
{
public Expression If;
public Statement Then;
public Statement Else;
}
public class IfThen : Statement
{
public Expression LeftExpression;
public RelationalOperands Operand;
public Expression RightExpression;
public Statement ThenBody;
public Statement ElseBody;
}
public class While : Statement
{
public Expression LeftExpression;
public RelationalOperands Operand;
public Expression RightExpression;
public Statement Body;
}
public class ReadInput : Statement
{
public string Identifier;
}
public class StatementSequence : Statement
{
public Statement Left;
public Statement Right;
}
public abstract class Expression
{
}
public class AlphaNumericValue : Expression
{
public string Value;
}
public class NumericValue : Expression
{
public int Value;
}
public class Identifier : Expression
{
public string IdentifierName;
}
public class ArithmaticExpression : Expression
{
public Expression Left;
public Expression Right;
public ArithmaticOperands Operand;
}
public enum ArithmaticOperands
{
Add,
Subtract,
Multiply,
Division
}
public class LogicalExpression : Expression
{
public Expression Left;
public Expression Right;
public LogicalOperands Operand;
}
public enum LogicalOperands
{
Or,
And,
Xor,
Not
}
public class RelationalExpression : Expression
{
public Expression Left;
public Expression Right;
public RelationalOperands Operand;
}
public class CompareVariable : Statement
{
public string Identifier;
public Expression Expression;
public RelationalOperands Operand;
}
public enum RelationalOperands
{
EqualTo,
NotEqualTo,
LessThan,
LessThanOrEqualTo,
GreaterThan,
GreaterThanOrEqualTo
}