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(); } }
private PrimaryNode WalkMethodCall() { PrimaryNode key = new PrimaryTranslator(node.GetChild(0)).Walk(); var arguments = new List<TranslateNode>(); ITree argumentList = node.GetChild(1); for (int i = 0; i < argumentList.ChildCount; i++) { arguments.Add(new TranslationTranslator(argumentList.GetChild(i)).Walk()); } PrimaryNode.TermMethodExpression meth; if (key is PrimaryNode.TermIdentifierExpression) { var id = key as PrimaryNode.TermIdentifierExpression; meth = new PrimaryNode.TermMethodExpression { Identifier = id.Identifier }; key = meth; } else if (key is PrimaryNode.TermFieldExpression) { var field = key as PrimaryNode.TermFieldExpression; var id = field.SecondChild as PrimaryNode.TermIdentifierExpression; meth = new PrimaryNode.TermMethodExpression { Identifier = id.Identifier }; key = new PrimaryNode.TermFieldExpression { Child = field.Child, SecondChild = meth }; } else { throw new NotImplementedException(); } meth.Arguments = arguments; return key; }