Statement ::= ( StatementBlock | IfStatement | SwitchStatement | WhileStatement | DoWhileStatement | ForStatement | ForEachStatement | VariableStatement | ConstructorStatement | ExpressionStatement | BreakStatement | ContinueStatement | ReturnStatement ). StatementBlock ::= "{" (Statement)* "}". IfStatement ::= "if" "(" Expression ")" Statement ("else" Statement)?. SwitchStatement ::= "switch" "(" Expression ")" "{" ("case" Expression ":" (Statement)*)* ("default" ":" (Statement)*)? "}" WhileStatement ::= "while" "(" Expression ")" Statement. DoWhileStatement ::= "do" Statement "while" "(" Expression ")" ";". ForStatement ::= "for" "(" VariableDeclaration ";" Expression ";" Expression ")" Statement. ForEachStatement ::= "for" "(" VariableDeclaration ":" Expression ")" Statement. VariableStatement ::= VariableDeclaration VariableInit ";". ConstructorStatement ::= ("super" | "this") "(" (ArgsList)? ")" ";". ExpressionStatement ::= Expression ";". BreakStatement ::= "break" ";". ContinueStatement ::= "continue" ";". ReturnStatement ::= "return" (Expression)? ";". |
int i = 2; if (i>2) { } switch(i) { case 2 : return true; case 4 : return true; default : return false; } while (i>2) { } for (int j = 0; j<10; j++) { } List list = [1,2,3]; for (Object element : list) { } |
Metadata ::= ID "=" MetadataValue. MetadataValue ::= MetadataValueSingle | MetadataValueList | MetadataValueMap. MetadataValueSingle ::= INTEGER | Double | CHAR | STRING | BOOLEAN | QName. MetadataValueList ::= "[" (MetadataValue ("," MetadataValue)*)? "]". MetadataValueMap ::= "[" (MetadataValueMapEntry ("," MetadataValueMapEntry)*)? "]". MetadataValueMapEntry ::= MetadataValue ":" MetadataValue. |
See operators in ODL or queries in QDL for examples.
Integer ::= (0..9)+. Double ::= (0..9)* "." (0..9)+. Boolean ::= ("true" | "false"). Char ::= "'" Unicode-Character "'". String ::= '"' (Unicode-Character)* '"'. Range ::= (0..9)+ ".." (0..9)+. List ::= "[" (Expression ("," Expression)*)? "]". Map ::= "[" (MapKeyValue ("," MapKeyValue)*)? "]". MapKeyValue ::= Expression ":" Expression. Null ::= "null". |
Range r = 1..10; List l = [1, 2, 3]; Map m = ["key1":1, "key2":2]; |
ID ::= ("a".."z"|"A".."Z"|"_")("a".."z"|"A".."Z"|"_"|"0".."9")*. QName ::= ID ("." ID)* Namespace ::= "use" QualifiedNameWithWildcard ";". QualifiedNameWildcard ::= QualifiedName (".*")? |
use java::util::*; use de::uniol::inf::is::odysseus::core::ISubscription; use com::google::common::collect::ImmutableMap; |
GPLCode ::= "$*" GPL Code "*$" |
$* public static void main(String[] args) { } *$ |
Comment ::= SingeLineComment | MultiLineComment. SingeLineComment ::= "//" Text (("\r")? "\n")?. MultiLineComment ::= "/*" Text "*/". |
// This is a single line comment /* * This is a multi line comment */ |