[Language] Name = Java Extension = java Keywords = abstract, assert, boolean, break, byte, case, catch, char, class, const = continue, default, double, do, else, enum, extends, false, final, finally = float, for, goto, if, implements, import, instanceof, int, interface, long = native, new, null, package, private, protected, public, return, short, static = strictfp, super, switch, synchronized, this, throw, throws, transient, true, try = void, volatile, while Conflicts = input Case Sensitive = true Options = ; ======================================================= ; Literals ; ======================================================= [Types] Integer = int Real = double Boolean = boolean String = String [Function ID] Convention = camel Normal = {Name} Conflict = func_{Name} [Variable ID] Convention = camel Normal = {Name} Conflict = var_{Name} [String Literal] Text = "{Characters}" Replace Char 1 = " Replace By 1 = \" Replace Char 2 = \ Replace By 2 = \\ [Boolean Literal] true = true false = false [Integer Literal] Text = {Integral} [Real Literal] Text = {Integral}.{Fractional} [Variable Access] Precedence = 100 Text = {Name} | ~subscript = {Name}[{Subscript}] | subscript ; ======================================================= ; Expressions ; ======================================================= ; 1. or ; 2. and ; 3. == ; 4. Relational >, < ... ; 5. Addition ; 6. Multiply ; 7. Cast () ; 8. Unary: Not, ! ; 100. Atom, paranthesis [Or] Precedence = 1 Needed 1 = 1 Needed 2 = 2 Text = {1} {pipe}{pipe} {2} [And] Precedence = 2 Needed 1 = 2 Needed 2 = 3 Text = {1} && {2} [Equals] Precedence = 3 | ~string-string = 100 | string-string Needed 1 = 4 | ~string-string = 100 | string-string Needed 2 = 4 | ~string-string = 1 | string-string Text = {1} == {2} | ~string-string = {1}.equals({2}) | string-string [Not Equals] Precedence = 3 | ~string-string = 100 | string-string Needed 1 = 4 | ~string-string = 100 | string-string Needed 2 = 4 | ~string-string = 1 | string-string Text = {1} != {2} | ~string-string = !{1}.equals({2}) | string-string [Less Than] Precedence = 4 Needed 1 = 5 | ~string-string = 100 | string-string Needed 2 = 5 | ~string-string = 1 | string-string Text = {1} < {2} | ~string-string = {1}.compareTo({2}) < 0 | string-string [Less Equal Than] Precedence = 4 Needed 1 = 5 | ~string-string = 100 | string-string Needed 2 = 5 | ~string-string = 1 | string-string Text = {1} <= {2} | ~string-string = {1}.compareTo({2}) <= 0 | string-string [Greater Than] Precedence = 4 Needed 1 = 5 | ~string-string = 100 | string-string Needed 2 = 5 | ~string-string = 1 | string-string Text = {1} > {2} | ~string-string = {1}.compareTo({2}) > 0 | string-string [Greater Equal Than] Precedence = 4 Needed 1 = 5 | ~string-string = 100 | string-string Needed 2 = 5 | ~string-string = 1 | string-string Text = {1} >= {2} | ~string-string = {1}.compareTo({2}) >= 0 | string-string [Concatenate] Precedence = 5 Needed 1 = 5 | string-1 = 1 | ~string-1 Needed 2 = 6 Text = {1} + {2} | string-1 = Integer.toString({1}) + {2} | integer-1 = Double.toString({1}) + {2} | real-1 = Boolean.toString({1}) + {2} | boolean-1 [Add] Type = real | ~integer-integer = integer | integer-integer Precedence = 5 Needed 1 = 5 Needed 2 = 6 Text = {1} + {2} [Subtract] Type = real | ~integer-integer = integer | integer-integer Precedence = 5 Needed 1 = 5 Needed 2 = 6 Text = {1} - {2} [Multiply] Type = real | ~integer-integer = integer | integer-integer Precedence = 6 Needed 1 = 6 Needed 2 = 7 Text = {1} * {2} [Divide] Type = real Precedence = 6 Needed 1 = 6 | ~integer-integer = 100 | integer-integer Needed 2 = 7 Text = {1} / {2} | ~integer-integer = (double) {1} / {2} | integer-integer [Modulus] Precedence = 6 Needed 1 = 6 Needed 2 = 7 Text = {1} % {2} [Power] Type = real Precedence = 100 Needed 1 = 0 Needed 2 = 0 Text = Math.pow({1}, {2}) [Not] Type = boolean Precedence = 7 Needed 1 = 7 Text = !{1} [Negate] Type = real | ~integer = integer | integer Precedence = 7 Needed 1 = 7 Text = -{1} [Subexpression] Precedence = 100 Text = ({Expression}) ; ======================================================= ; Intrinsic Functions ; ======================================================= [Abs] Precedence = 100 Needed 1 = 0 Text = Math.abs({1}) [ArcCos] Precedence = 100 Needed 1 = 0 Text = Math.acos({1}) [ArcSin] Precedence = 100 Needed 1 = 0 Text = Math.asin({1}) [ArcTan] Precedence = 100 Needed 1 = 0 Text = Math.atan({1}) [Char] Precedence = 100 Needed 1 = 100 Needed 2 = 0 Text = {1}.charAt({2}) [Cos] Precedence = 100 Needed 1 = 0 Text = Math.cos({1}) [Int] Precedence = 100 Needed 1 = 0 Text = Math.floor({1}) [Len] Precedence = 100 Needed 1 = 100 Text = {1}.length() [Log] Precedence = 100 Needed 1 = 0 Text = Math.log({1}) [Log10] Precedence = 100 Needed 1 = 0 Text = Math.log10({1}) [Pi] Precedence = 100 Text = Math.PI [Random] Precedence = 100 Needed 1 = 0 Text = random.nextInt({1}) [Sin] Precedence = 100 Needed 1 = 0 Text = Math.sin({1}) [Sgn] Precedence = 100 Needed 1 = 0 Text = Math.signum({1}) [Size] Precedence = 100 Needed 1 = 100 Text = {1}.length [Sqrt] Precedence = 100 Needed 1 = 0 Text = Math.sqrt({1}) [Tan] Precedence = 100 Needed 1 = 0 Text = Math.tan({1}) [ToChar] Precedence = 100 Needed 1 = 100 Text = (char) {1} [ToCode] Precedence = 100 Needed 1 = 100 Text = (int) {1}[0] [ToFixed] Type = string Precedence = 100 Needed 1 = 0 Needed 2 = 0 Text = toFixed({1},{2}) [ToInteger] Precedence = 100 Needed 1 = 0 Text = Integer.parseInt({1}) [ToReal] Precedence = 100 Needed 1 = 0 Text = Integer.parseDouble({1}) [ToString] Precedence = 100 Needed 1 = 100 Text = {1}.toString() ; ======================================================= ; Function call ; ======================================================= [Function Call] Precedence = 100 Text = {name}({arguments}) [Argument] Separator = ,{space} Text = {expression} ; ======================================================= ; Program ; ======================================================= [Program] Text = import java.util.*; = import java.lang.Math; = = public class JavaApplication {{ = private static Random random = new Random(); | random | 1 = private static Scanner input = new Scanner(System.in); | input | 1 = | random, ~input = | ~random, input = | random, input = -->MAIN | | 1 = -->FUNCTIONS | | 1 = | tofixed | 1 = private static String toFixed(double value, int digits) {{ | tofixed | 1 = return String.format("%." + digits + "f", value); | tofixed | 2 = } | tofixed | 1 = } [Main] Text = public static void main(String[] args) {{ = -->BLOCK | | 1 = } ; ======================================================= ; Function ; ======================================================= [Parameter] Separator = ,{space} Text = {type} {name} | ~array = {type}[] {name} | array [Function] Text = = public static {type} {name}({parameters}) {{ | return = public static void {name}({parameters}) {{ | ~return = -->BLOCK | | 1 = | return | 1 = return {return}; | return | 1 = } ; ======================================================= ; Statements ; ======================================================= [Assign] Text = {Variable} = {Expression}; [Call] Text = {Name}({Arguments}); [Comment] Text = // {Text} [Declare Name] Separator = ,{space} Text = {name} | ~array = {name} = new {Type}[{Size}] | array [Declare] Text = {Type} {Variables}; | ~array = {Type}[] {Variables}; | array [Do] Text = do {{ = -->BLOCK | | 1 = } while ({condition}); [For] Text = for ({Variable} = {Start}; {Variable} <= {End}; {Variable}++) {{ | inc, ~step = for ({Variable} = {Start}; {Variable} <= {End}; {Variable} += {step}) {{ | inc, step = for ({Variable} = {Start}; {Variable} >= {End}; {Variable}--) {{ | ~inc, ~step = for ({Variable} = {Start}; {Variable} >= {End}; {Variable} -= {step}) {{ | ~inc, step = -->BLOCK | | 1 = } [Input] Text = {Variable} = input.nextInt(); | integer = {Variable} = input.nextDouble(); | real = {Variable} = input.nextBoolean(); | boolean = {Variable} = input.nextLine(); | string = {Variable} = input.nextLine(); | none [If] Text = if ({condition}) {{ = -->TRUEBLOCK | | 1 = } else {{ | else = -->FALSEBLOCK | else | 1 = } [Output] Text = System.out.println({Expression}); | newline = System.out.print({Expression}); | ~newline [While] Text = while ({condition}) {{ = -->BLOCK | | 1 = }