Example #1
0
        static Declaration ParseOperand(Expression exp, Block block, Token arg1, Token arg2)
        {
            Declaration decl = null;

            switch (exp.Tokens[0])
            {
            case "+":
            case "-":
            case "*":
            case "/":
                decl = MathStatement.BuildStatements(block, exp, arg1, arg2);
                break;

            case StoreToken:
                decl = block.CreateTempDeclaration(TypeHelper.GetType(block, arg2));
                var assignCopy = AssignmentHelper.ParseSingle(block, decl, arg2);
                block.Statements.Add(assignCopy);

                var storeStatement = new Store(Datum.Parse(block, arg1),
                                               Datum.Parse(block, Tokenizer.ToToken(decl.Name)));
                block.Statements.Add(storeStatement);
                break;

            case "=":
                decl = block.FindDeclaration(arg1);
                ValueStatement initialAssign = AssignmentHelper.ParseSingle(block, decl, arg2);
                block.Statements.Add(initialAssign);
                break;

            case "==":
            case "<=":
            case "<":
            case ">":
            case ">=":
            case "!=":
                Token       condLHS;
                Token       condRHS;
                Declaration tmpDecl = block.FindDeclaration(arg1);
                if (tmpDecl == null)
                {
                    condRHS = arg1;
                    condLHS = arg2;
                }
                else
                {
                    condLHS = arg1;
                    condRHS = arg2;
                }
                decl = ConditionStatement.BuildStatements(block, exp, condLHS, condRHS);
                break;

            case "%":

                break;
            }
            return(decl);
        }
Example #2
0
        public static void Parse(Block block, Declaration LValue, List <Token> tokenList)
        {
            Annotation ann = new Annotation(LValue + " = " + string.Join <Token>(" ", tokenList) + ";");

            block.Statements.Add(ann);

            Token token = InternalParse(block, new Expression(tokenList));

            var finalAssign = AssignmentHelper.ParseSingle(block, LValue, token);

            block.Statements.Add(finalAssign);
        }