%% %% Jimple grammar %% module languages/jimple/Main imports languages/jimple/Expressions languages/jimple/Lexical languages/jimple/Modifiers languages/jimple/Names languages/jimple/Types languages/jimple/Statements languages/jimple/Whitespace exports sorts File context-free syntax Modifier* FileType ClassName ExtendsClause? ImplementsClause? FileBody -> File {cons("File")} sorts FileType FileBody ExtendsClause ImplementsClause context-free syntax "class" -> FileType {cons("Class")} "interface" -> FileType {cons("Interface")} "extends" ClassName -> ExtendsClause {cons("Extends")} "implements" {ClassName ","}+ -> ImplementsClause {cons("Implements")} "{" Member* "}" -> FileBody {cons("FileBody")} sorts Member Parameter ThrowsClause context-free syntax Modifier* Type Name ";" -> Member {cons("Field")} Modifier* Type Name "(" {Parameter ","}* ")" ThrowsClause? MethodBody -> Member {cons("Method")} NonVoidType -> Parameter "throws" {ClassName ","}+ -> ThrowsClause {cons("Throws")} sorts MethodBody CatchClause context-free syntax ";" -> MethodBody {cons("Empty")} "{" Declaration* Stmt* CatchClause* "}" -> MethodBody {cons("Body")} "catch" ClassName "from" LabelName "to" LabelName "with" LabelName ";" -> CatchClause {cons("Trap")} sorts Declaration context-free syntax JimpleType {LocalName ","}+ ";" -> Declaration {cons("Decl")}