module languages/casl/syntax/Struct imports languages/casl/syntax/BasicItems exports sorts Spec Spec-Defn View-Defn Spec-Name Symb-Map-Items Group-Spec Opt-End %% Spec-Name Spec-Defn Spec-1 Spec-2 AnnotSpec-1 %% View-Name View-Defn View-Type Some-Generics %% Spec Group-Spec Renaming Restriction %% Fit Fit-Arg Symb-Items Symb-Map-Items %% Some-Symb-Kind Type %% Symb Symb-Map Symb-Or-Map Some-Params Some-Imports %% Param Opt-End context-free syntax %% Spec Spec-3 -> Spec-2 Spec-2 -> Spec-1 Spec-1 -> Spec Basic-Spec -> Spec-3 Spec-3 Renaming -> Spec-3 Spec-3 Restriction -> Spec-3 Spec-2 "and" {Spec-2 "and"}+ -> Spec-1 Spec-1 "then" {Spec-1 "then"}+ -> Spec Ann "free" Group-Spec -> Spec-3 Ann "local" Spec "within" Spec-2 -> Spec-2 Ann "closed" Group-Spec -> Spec-3 Ann Group-Spec -> Spec-3 %% Group-Spec Spec-Name -> Group-Spec "{" Spec "}" -> Group-Spec Spec-Name Fit+ -> Group-Spec %% new Fit, not in concrete syntax "[" Fit-Arg "]" -> Fit %% Renaming "with" {Symb-Map-Items ","}+ -> Renaming %% Restriction "hide" {Symb-Items ","}+ -> Restriction "reveal" {Symb-Map-Items ","}+ -> Restriction %% Spec-Defn "spec" Spec-Name "=" Spec Opt-End -> Spec-Defn "spec" Spec-Name Some-Generics "=" Spec Opt-End -> Spec-Defn %% Some-Generics Some-Params -> Some-Generics Some-Params Some-Imports -> Some-Generics %% Some-Params Param+ -> Some-Params "[" Spec "]" -> Param %% Imports "given" {Group-Spec ","}+ -> Some-Imports %% Fit-Arg Spec "fit" {Symb-Map-Items ","}+ -> Fit-Arg Spec -> Fit-Arg "view" View-Name -> Fit-Arg "view" View-Name Fit+ -> Fit-Arg %% View-Defn "view" View-Name ":" View-Type Opt-End -> View-Defn "view" View-Name ":" View-Type "=" {Symb-Map-Items ","}+ Opt-End -> View-Defn "view" View-Name Some-Generics ":" View-Type Opt-End -> View-Defn "view" View-Name Some-Generics ":" View-Type "=" {Symb-Map-Items ","}+ Opt-End -> View-Defn %% View-Type Group-Spec "to" Group-Spec -> View-Type %% Symb-Items Symb -> Symb-Items Some-Symb-Kind {Symb ","}+ -> Symb-Items %% Symb-Map-Items Symb-Or-Map -> Symb-Map-Items Some-Symb-Kind {Symb-Or-Map ","}+ -> Symb-Map-Items %% Some-Symb-Kind Sort-S -> Some-Symb-Kind Op-S -> Some-Symb-Kind Pred-S -> Some-Symb-Kind %% Symb Id -> Symb Id ":" Type -> Symb %% Type Op-Type -> Type Pred-Type -> Type %% Symb-Map Symb "|->" Symb -> Symb-Map %% Symb-Or-Map Symb -> Symb-Or-Map Symb-Map -> Symb-Or-Map Simple-Id -> Spec-Name Simple-Id -> View-Name %% Opt-End ("end" Ann)? -> Opt-End