case-sensitive // cause that's what Java is = source = source ! = translatorcall = sourcepart = sourcepart class = classhead static = modifier public = modifier abstract = modifier protected = modifier final = modifier transient = modifier volatile = modifier synchronized = modifier = modifiers = modifiers { } = emptyclass = classdecl { } = classdecl = classbody ; = classbody = classbody = type = type [] = type <> = typeargs < > = typeargs = typeargs_opt = typeargs_opt = typeparams < > = typeparams = typeparamlist_opt = typeparamlist_opt = typeparamlist , = typeparamlist = typeparam extends = typeparam implements = typeparam = typelist , = typelist = blockorsemicolon ; = blockorsemicolon () = argsdecl2 () = argsdecl2 = throws_opt throws = throws_opt = method = constructordecl * = constructordecl // javax = classbody = classbody = classbody // inner classes! = expX = expX = expX - = expX // explist, args = actualExplist , = actualExplist = explist = explist () = args // function calls - precedence? = call = expX // method call - precedence? . = methodcall = expX // qualified identifier = qid . = qid = expX // "new" expressions new = newexp // JavaX! new = newexp = exp // bracketing expressions - gives highest precedence ( ) = expX // binary operators = exp3 = exp2 * = exp2 / = exp2 = exp1 + = exp1 - = exp1 = exp0 < = exp0 > = exp0 != = exp0 = empty // hack... = = = exp0 // m1 = minus 1... = expm1 ? : = expm1 // priority? // casts (where in hierarchy?) () = exp1 = exp = argsdecl * = argsdecl // javax , = argsdecl // variable declarations (both local and fields) // simple variable declaration = vardeclShort ; = // same with initializer = = vardeclShort // todo: multiple decls... = statement = statement -- local class declared in code // empty statement ; = statement // if statements! = else else = else if () = if // extra rule because parser has trouble with empty classes at end of stream... if () = if = statement // empty statement ; = emptyStatement = statement // return statement! ret = returnKeyword return = returnKeyword ; = return = statement // statement list = statements = statements // blocks! { } = block = statement // assigments! = = assignmentShort += = assignmentShort -= = assignmentShort *= = assignmentShort /= = assignmentShort // etc... ; = statement ; = statement ; = statement ; = statement // for! - gotta look how it is defined exactly... = for1 = for1 = for1 = for1 = for2 for (; ; ) = for = statement // foreach for ( : ) = foreach = statement // imports import ; = import import .*; = import import static ; = import import static .*; = import = sourcepart // synchronized statement synchronized() = statement // try / catch catch () = catch finally = catches = catches = catches try = try = statement