| ||||||||
| ||||||||
| ||||||||
| Description | ||||||||
Parsing the architectural part of heterogenous specifications. www.cofi.info from 25 March 2001 C.2.3 Architectural Specifications TODO: - make sure the precedence is OK - annotations - see specific TODOs in functions | ||||||||
| Synopsis | ||||||||
| Parsing functions | ||||||||
| annotedArchSpec :: (AnyLogic, LogicGraph) -> AParser (Annoted ARCH_SPEC) | ||||||||
| Parse annotated architectural specification | ||||||||
| archSpec :: (AnyLogic, LogicGraph) -> AParser (Annoted ARCH_SPEC) | ||||||||
| Parse architectural specification ARCH-SPEC ::= BASIC-ARCH-SPEC | GROUP-ARCH-SPEC | ||||||||
| groupArchSpec :: (AnyLogic, LogicGraph) -> AParser (Annoted ARCH_SPEC) | ||||||||
| Parse group architectural specification GROUP-ARCH-SPEC ::= { ARCH-SPEC } | ARCH-SPEC-NAME | ||||||||
| basicArchSpec :: (AnyLogic, LogicGraph) -> AParser (Annoted ARCH_SPEC) | ||||||||
| Parse basic architectural specification BASIC-ARCH-SPEC ::= unitunits UNIT-DECL-DEFNS result UNIT-EXPRESSION ; | ||||||||
| unitDeclDefns :: (AnyLogic, LogicGraph) -> AParser [Annoted UNIT_DECL_DEFN] | ||||||||
| Parse a nonempty list of unit declarations or definitions separated by semicolons, with optional semicolon at the end. UNIT-DECL-DEFNS ::= UNIT-DECL-DEFN ; ... ; UNIT-DECL-DEFN ; | ||||||||
| unitDeclDefn :: (AnyLogic, LogicGraph) -> AParser UNIT_DECL_DEFN | ||||||||
| Parse unit declaration or definition UNIT-DECL-DEFN ::= UNIT-DECL | UNIT-DEFN | ||||||||
| unitDecl :: (AnyLogic, LogicGraph) -> AParser UNIT_DECL_DEFN | ||||||||
| Parse unit declaration UNIT-DECL ::= UNIT-NAME : UNIT-SPEC | UNIT-NAME : UNIT-SPEC given GROUP-UNIT-TERMS | ||||||||
| unitSpec :: (AnyLogic, LogicGraph) -> AParser UNIT_SPEC | ||||||||
| Parse unit specification UNIT-SPEC ::= SPEC-NAME | UNIT-ARGS GROUP-SPEC | arch spec GROUP-ARCH-SPEC | closed UNIT-SPEC TODO: check the precedence | ||||||||
| unitArgs :: (AnyLogic, LogicGraph) -> AParser ([Annoted SPEC], [Pos]) | ||||||||
Parse a (possibly empty) list of group specs separated by * and ending with ->. UNIT-ARGS ::= GROUP-SPEC * ... * GROUP-SPEC -> returns the list of (annotated) group specs and a list of * and -> positions | ||||||||
| nonemptyUnitArgs :: (AnyLogic, LogicGraph) -> AParser ([Annoted SPEC], [Pos]) | ||||||||
Parse a nonempty list of group specs separated by * and ending with ->. UNIT-ARGS ::= GROUP-SPEC * ... * GROUP-SPEC -> returns the list of (annotated) group specs and a list of * and -> positions | ||||||||
| groupUnitTerms :: (AnyLogic, LogicGraph) -> AParser [Annoted UNIT_TERM] | ||||||||
| Parse a nonempty list of group unit terms separated by commas. The positions of commas are stored in annotations. GROUP-UNIT-TERMS ::= GROUP-UNIT-TERM ,..., GROUP-UNIT-TERM | ||||||||
| groupUnitTerm :: (AnyLogic, LogicGraph) -> AParser UNIT_TERM | ||||||||
| Parse group unit term GROUP-UNIT-TERM ::= UNIT-NAME | UNIT-NAME FIT-ARG-UNITS | { UNIT-TERM } | ||||||||
| fitArgUnits :: (AnyLogic, LogicGraph) -> AParser ([FIT_ARG_UNIT], [Pos]) | ||||||||
Parse the (possibly empty) list of arguments for unit application. FIT-ARG-UNITS ::= [ FIT-ARG-UNIT ] ... [ FIT-ARG-UNIT ] returns a list of arguments for unit application and a list of [ and ] positions | ||||||||
| fitArgUnit :: (AnyLogic, LogicGraph) -> AParser FIT_ARG_UNIT | ||||||||
| Parse an argument for unit application. FIT-ARG-UNIT ::= UNIT-TERM | UNIT-TERM fit SYMB-MAP-ITEMS-LIST The SYMB-MAP-ITEMS-LIST is parsed using parseItemsMap. | ||||||||
| unitTerm :: (AnyLogic, LogicGraph) -> AParser (Annoted UNIT_TERM) | ||||||||
| Parse unit term. UNIT-TERM ::= UNIT-TERM RENAMING | UNIT-TERM RESTRICTION | UNIT-TERM and ... and UNIT-TERM | local UNIT-DEFNS within UNIT-TERM | GROUP-UNIT-TERM This will be done by subsequent functions in order to preserve the operator precedence; see other unitTerm functions. | ||||||||
| unitTermAmalgamation :: (AnyLogic, LogicGraph) -> AParser (Annoted UNIT_TERM) | ||||||||
| Parse unit amalgamation. UNIT-TERM-AMALGAMATION ::= UNIT-TERM-LOCAL and ... and UNIT-TERM-LOCAL | ||||||||
| unitTermLocal :: (AnyLogic, LogicGraph) -> AParser (Annoted UNIT_TERM) | ||||||||
| Parse local unit term UNIT-TERM-LOCAL ::= local UNIT-DEFNS within UNIT-TERM-LOCAL | UNIT-TERM-TRANS-RED | ||||||||
| unitTermTransRed :: (AnyLogic, LogicGraph) -> AParser (Annoted UNIT_TERM) | ||||||||
| Parse translation or reduction unit term The original grammar UNIT-TERM-TRANS-RED ::= UNIT-TERM-TRANS-RED RENAMING | UNIT-TERM-TRANS-RED RESTRICTION | GROUP-UNIT-TERM has been rewritten to UNIT-TERM-TRANS-RED ::= GROUP-UNIT-TERM UNIT-TERM-TRANS-RED' UNIT-TERM-TRANS-RED' ::= RENAMING UNIT-TERM-TRANS-RED' | RESTRICTION UNIT-TERM-TRANS-RED' | EPSILON in order to eliminate left-hand-side recursion. | ||||||||
| unitTermTransRed' | ||||||||
| ||||||||
| renaming :: (AnyLogic, LogicGraph) -> AParser RENAMING | ||||||||
| Parse renaming RENAMING ::= with SYMB-MAP-ITEMS-LIST SYMB-MAP-ITEMS-LIST is parsed using parseMapping | ||||||||
| restriction :: (AnyLogic, LogicGraph) -> AParser RESTRICTION | ||||||||
| Parse restriction RESTRICTION ::= hide SYMB-ITEMS-LIST | reveal SYMB-MAP-ITEMS-LIST SYMB-ITEMS-LIST is parsed using parseHiding; SYMB-MAP-ITEMS-LIST is parsed using parseItemsMap | ||||||||
| unitExpr :: (AnyLogic, LogicGraph) -> AParser (Annoted UNIT_EXPRESSION) | ||||||||
| Parse unit expression UNIT-EXPRESSION ::= lambda UNIT-BINDINGS . UNIT-TERM | UNIT-TERM | ||||||||
| unitBindings :: (AnyLogic, LogicGraph) -> AParser ([UNIT_BINDING], [Pos]) | ||||||||
Parse a nonempty list of unit bindings separated by semicolons. returns the list of unit bindings and a list of semicolon positions | ||||||||
| unitBinding :: (AnyLogic, LogicGraph) -> AParser UNIT_BINDING | ||||||||
| Parse unit binding UNIT-BINDING ::= UNIT-NAME : UNIT-SPEC | ||||||||
| unitDefns :: (AnyLogic, LogicGraph) -> AParser [Annoted UNIT_DECL_DEFN] | ||||||||
| Parse a nonempty list of unit definitions separated by semicolons, with optional semicolon at the end. UNIT-DEFNS ::= UNIT-DEFN ; ... ; UNIT-DEFN ; | ||||||||
| unitDefn :: (AnyLogic, LogicGraph) -> AParser UNIT_DECL_DEFN | ||||||||
| Parse an unit definition UNIT-DEFN ::= UNIT-NAME = UNIT-EXPRESSION | ||||||||
| Produced by Haddock version 0.6 | ||||||||