module JavaRsf imports Layout Lexical Integers exports sorts RsfFile lexical syntax "#" ~[\n]* [\n] -> LAYOUT context-free restrictions LAYOUT? -/- [\#] context-free syntax RsfTuple* -> RsfFile NodeDef -> RsfTuple ArcDef -> RsfTuple AttrDef -> RsfTuple "type" NodeSpec NodeType -> NodeDef (Integer"!"Name) | Name -> NodeSpec "Collapse" | "System" | "Release" | "Constructor" | "Staticblock" | "Exception" | "Class" | "Interface" | "Method" | "Variable" | "Package" | "Unknown" | Smell -> NodeType "Cast" | "Instanceof" | "Switch" -> Smell ArcType NodeSpec NodeSpec -> ArcDef "call" | "implementedBy" | "isSuper" | "contain" | "throw" | "access" | "assign" | "hasInner" | "level" -> ArcType AttrType NodeSpec AttrValue -> AttrDef "package" | "visibility" | "static" | "abstract" | "native" | "final" | "volatile" | "synchronized" | "filename" | "return" | "author" | "lineno" | "castFrom" | "castTo" -> AttrType Boolean | VisibilitySpec | Name | Integer -> AttrValue public | private | protected | package -> VisibilitySpec "true" | "false" -> Boolean {Identifier "."}+ -> Name