Ejemplo n.º 1
0
        public WhileNode Walk()
        {
            var condition = new TranslationTranslator(node.GetChild(0)).Walk();
            var statement = new StatementTranslator(node.GetChild(1)).Walk();

            return new WhileNode
                       {
                           Expression = condition,
                           Statement = statement,
                       };
        }
        public AssignmentNode Walk()
        {
            var key = new PrimaryTranslator(node.GetChild(0)).Walk();
            var value = new TranslationTranslator(node.GetChild(1)).Walk();

            switch ((JavaNodeType)node.Type)
            {
                case JavaNodeType.ASSIGN:
                    return new AssignmentNode.NormalAssignNode { Left = key, Right = value };
                case JavaNodeType.PLUS_ASSIGN:
                    return new AssignmentNode.AddAssignNode { Left = key, Right = value };
                case JavaNodeType.MINUS_ASSIGN:
                    return new AssignmentNode.MinusAssignNode { Left = key, Right = value };
                case JavaNodeType.STAR_ASSIGN:
                    return new AssignmentNode.MultiplyAssignNode { Left = key, Right = value };
                case JavaNodeType.DIV_ASSIGN:
                    return new AssignmentNode.DivideAssignNode { Left = key, Right = value };
                case JavaNodeType.MOD_ASSIGN:
                    return new AssignmentNode.ModAssignNode { Left = key, Right = value };
                default:
                    throw new NotImplementedException();
            }
        }