public BinaryOperation(String op, Expression leftOperand, Expression rightOperand)
     : base("")
 {
     Operator = op;
     LeftOperand  = leftOperand;
     RightOperand = rightOperand;
 }
Пример #2
0
        public static Block Parse(String body)
        {
            var block = new Block();
            var lexer = new Lexer(body);

            while (lexer.HasNext())
            {
                // Conditional
                if (lexer.PeekToken() == "if")
                {
                    lexer.SkipToken();      // Absorb if
                    Expression condition = new Expression(lexer.ReadBlock("(", ")"));
                    Block b = Block.Parse(lexer.ReadBlock("{", "}"));
                    IfStatement statement = new IfStatement(condition, b);
                    block.Statements.Add(statement);
                }
                else if(lexer.PeekToken(2) == "=")
                {
                    var type = lexer.ReadToken();
                    var name = lexer.ReadToken();
                    lexer.SkipToken();
                    var value = lexer.ReadUntil(";");
                    var variableDefinition = new VariableDefinition(name, type, value);
                    block.Statements.Add(variableDefinition);
                }
                else
                {
                    string str = lexer.ReadUntil(";");
                    block.Statements.Add( Expression.Parse(str) );
                    lexer.SkipToken();  // Skip ;
                }
            }

            return block;
        }
 public VariableDefinition(String name, String type, String value = "")
 {
     VariableName = name;
     Type = type;
     Value = Expression.Parse(value);
 }
Пример #4
0
 public IfStatement(Expression condition, Block block)
     : base(condition, block)
 {
 }
 public UnaryOperation(String op, Expression operand)
     : base("")
 {
     Operator = op;
     Operand  = operand;
 }
 public VariableReference(Expression left, Expression right)
     : base(".", left, right)
 {
 }
Пример #7
0
 public Conditional(Expression condition, Block block)
 {
     Condition = condition;
     Body = block;
 }