private final Constructor _constructor;
public String toString() { return "BindableConstructor["+_constructor+"]"; }
public BindableConstructor(Constructor _constructor) { this._constructor = _constructor; }
- public String getSimpleName() { return _constructor.getName(); }
+ public String getSimpleName() { return _constructor.getDeclaringClass().getSimpleName(); }
public <A extends Annotation> A getAnnotation(Class<A> c) { return _constructor.getAnnotation(c); }
public Object impose(Object[] fields) { return Reflection.impose(_constructor, fields); }
public Annotation[][] getArgAnnotations() { return _constructor.getParameterAnnotations(); }
private final Class _class;
public String toString() { return "BindableClass["+_class+"]"; }
public BindableClass(Class _class) { this._class = _class; }
- public String getSimpleName() {
- String s = _class.getSimpleName();
- if (s.indexOf('$') != -1)
- return s.substring(s.indexOf('$')+1);
- return s;
- }
+ public String getSimpleName() { return _class.getSimpleName(); }
public <A extends Annotation> A getAnnotation(Class<A> c) { return (A)_class.getAnnotation(c); }
public Object impose(Object[] fields) { return Reflection.impose(_class, fields); }
public Annotation[][] getArgAnnotations() {
import java.lang.reflect.*;
import java.io.*;
+@Retention(RetentionPolicy.RUNTIME)
public @interface bind {
/**
* Constructors, classes, and methods with this attribute will
@Retention(RetentionPolicy.RUNTIME) public static @interface nonterminal { String value() default ""; }
*/
- @Retention(RetentionPolicy.RUNTIME) public static @interface raw { }
+ @Retention(RetentionPolicy.RUNTIME)
+ public static @interface raw { }
/**
* Constructors, classes, and methods with this attribute will
* name is used.
*/
- @Retention(RetentionPolicy.RUNTIME) public static @interface as { String value() default ""; }
+ @Retention(RetentionPolicy.RUNTIME)
+ public static @interface as { String value() default ""; }
/**
* arg-compatible, or if one of its constructors is arg-compatible.
*
*/
- @Retention(RetentionPolicy.RUNTIME) public static @interface arg { String value() default ""; }
+ @Retention(RetentionPolicy.RUNTIME)
+ public static @interface arg { String value() default ""; }
}
return buildSequence(p)!=null;
bind b = getBind();
+ System.out.println(_bindable.getClass().getSimpleName() + ": " + _bindable.getSimpleName());
if (b != null && getName().equals(p.tag))
return buildSequence(p)!=null;
public static class MG {
- public static @bind.as class Grammar {
+ public static @bind class Grammar {
public NonTerminal get(String s) {
for(NonTerminal nt : nonterminals)
if (nt.name.equals(s))