Grammar Rules for Java

Numerical Expression:
<expression> --> <integer literal> | <double literal>
<expression> --> <variable name>
<expression> --> ( <expression> )
<expression> --> <expression> + <expression>
<expression> --> <expression> - <expression>
<expression> --> <expression> * <expression>
<expression> --> <expression> / <expression>

Variable Names:
<variable name> --> <Letter> <Letter or Digit>
<Letter or Digit> --> <Letter> < Letter or Digit *> | <Digit> < Letter or Digit *> | nothing
<Letter> --> A | B | ... | Z | a | b ... | z
<Digit> --> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9



String literal:
<string literal > --> " <Letter or Digit> " <more string literal>
<more string literal> --> + <string>
<more string literal> --> nothing
<more string literal> --> + <variable name> <more string literal>

Number:
<integer literal> --> <digit> <digit*>
<double literal> --> <digit> <digit*> <decimal part> <exp>
<digit*> --> <digit> <digit*> | nothing
<decimal part> --> '.' <digit> <digit*> | nothing
<exp> --> 'E' <sign> <digit> <digit*> | nothing
<sign> --> + | - | nothing
<digit> --> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

Assignment Statements:
<Assignment statement> --> <variable name> = <expression>;

Type:
<type> --> int | float | double | short | char | String

Output Statement:
<output> --> System.out.println( <string>);

Declaration:
<declaration> --> <type> <variable name>;
<declaration> --> <type> <variable name> = <expression>;

Input Statement:
<input> --> <variable name> = IBIO.inputChar ( <string literal>);
<input> --> <variable name> = IBIO.inputString ( <string literal>);
<input> --> <variable name> = IBIO.inputDouble ( <string literal>);
<input> --> <variable name> = IBIO.inputInt ( <string literal>);
<input> --> <type> <variable name> = IBIO.inputChar ( <string literal>);
<input> --> <type> <variable name> = IBIO.inputString ( <string literal>);
<input> --> <type> <variable name> = IBIO.inputDouble ( <string literal>);
<input> --> <type> <variable name> = IBIO.inputInt ( <string literal>);