// Copyright (c) 2001-2003, Jonathan Bachrach, Tom White. See file LICENSE. import net.sf.jse.IdentifierFragment; import net.sf.jse.Fragment; import net.sf.jse.SyntaxMatchFailure; public syntax property { case #{ ?modifiers:* property ?:type ?:name ?init:*; }: { Fragment getterName = new IdentifierFragment("get".concat(capitalize(name.getName()))); Fragment setter = #{ }; Fragment setterName = new IdentifierFragment("set".concat(capitalize(name.getName()))); return #{ private ?type ?name ?init; ?modifiers ?type ?getterName() { return ?name; } ?modifiers void ?setterName (?type x) { this.?name = x; } }; } // Need this method since IdentifierFragment.capitalize() doesn't do the right thing... private static String capitalize(String s) { if (s.length() == 0) { return s; } char chars[] = s.toCharArray(); chars[0] = Character.toUpperCase(chars[0]); return new String(chars); } }