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(); } }