@blockml/parser 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/blocks/org/blockml/bml/compiler/parser/Library.bml +143 -0
- package/blocks/org/blockml/bml/compiler/parser/ParserType.bml +40 -0
- package/blocks/org/blockml/bml/compiler/parser/README.bml +68 -0
- package/blocks/org/blockml/bml/compiler/parser/capability/AssertBlockRoot.bml +45 -0
- package/blocks/org/blockml/bml/compiler/parser/capability/BuildSubBlockIndex.bml +43 -0
- package/blocks/org/blockml/bml/compiler/parser/capability/CollectLeadingComments.bml +50 -0
- package/blocks/org/blockml/bml/compiler/parser/capability/CollectTrailingComments.bml +50 -0
- package/blocks/org/blockml/bml/compiler/parser/capability/CreateMapContext.bml +56 -0
- package/blocks/org/blockml/bml/compiler/parser/capability/DetectFormat.bml +47 -0
- package/blocks/org/blockml/bml/compiler/parser/capability/DocumentElement.bml +43 -0
- package/blocks/org/blockml/bml/compiler/parser/capability/ElementChildren.bml +43 -0
- package/blocks/org/blockml/bml/compiler/parser/capability/ElementLocalName.bml +43 -0
- package/blocks/org/blockml/bml/compiler/parser/capability/ElementPrefix.bml +43 -0
- package/blocks/org/blockml/bml/compiler/parser/capability/ElementSourceLoc.bml +46 -0
- package/blocks/org/blockml/bml/compiler/parser/capability/ExpressionFromRaw.bml +46 -0
- package/blocks/org/blockml/bml/compiler/parser/capability/ExtractNamespaceBindings.bml +47 -0
- package/blocks/org/blockml/bml/compiler/parser/capability/FqnToQName.bml +46 -0
- package/blocks/org/blockml/bml/compiler/parser/capability/GetAttribute.bml +46 -0
- package/blocks/org/blockml/bml/compiler/parser/capability/GetCharacterData.bml +43 -0
- package/blocks/org/blockml/bml/compiler/parser/capability/GetParseErrors.bml +43 -0
- package/blocks/org/blockml/bml/compiler/parser/capability/HasBmlSemanticQNameBindings.bml +43 -0
- package/blocks/org/blockml/bml/compiler/parser/capability/InferCardinality.bml +43 -0
- package/blocks/org/blockml/bml/compiler/parser/capability/IsBooleanLiteral.bml +43 -0
- package/blocks/org/blockml/bml/compiler/parser/capability/IsCData.bml +43 -0
- package/blocks/org/blockml/bml/compiler/parser/capability/IsComment.bml +43 -0
- package/blocks/org/blockml/bml/compiler/parser/capability/IsElement.bml +43 -0
- package/blocks/org/blockml/bml/compiler/parser/capability/IsTextNode.bml +43 -0
- package/blocks/org/blockml/bml/compiler/parser/capability/IsTypeReferenceEntitySugar.bml +43 -0
- package/blocks/org/blockml/bml/compiler/parser/capability/MapBlock.bml +50 -0
- package/blocks/org/blockml/bml/compiler/parser/capability/MapBlockInstanceNode.bml +46 -0
- package/blocks/org/blockml/bml/compiler/parser/capability/MapCompositionTemplate.bml +46 -0
- package/blocks/org/blockml/bml/compiler/parser/capability/MapDocumentBlock.bml +54 -0
- package/blocks/org/blockml/bml/compiler/parser/capability/MapTypeReferenceEntityInstance.bml +46 -0
- package/blocks/org/blockml/bml/compiler/parser/capability/MergeSourceInfo.bml +49 -0
- package/blocks/org/blockml/bml/compiler/parser/capability/NormalizeBooleanValue.bml +43 -0
- package/blocks/org/blockml/bml/compiler/parser/capability/Parse.bml +52 -0
- package/blocks/org/blockml/bml/compiler/parser/capability/ParseBmlMeta.bml +43 -0
- package/blocks/org/blockml/bml/compiler/parser/capability/ParseBooleanAttribute.bml +43 -0
- package/blocks/org/blockml/bml/compiler/parser/capability/ParseDirectives.bml +50 -0
- package/blocks/org/blockml/bml/compiler/parser/capability/ParseMemberValue.bml +50 -0
- package/blocks/org/blockml/bml/compiler/parser/capability/ParseTypeExpression.bml +53 -0
- package/blocks/org/blockml/bml/compiler/parser/capability/ParseVisibilityFromName.bml +47 -0
- package/blocks/org/blockml/bml/compiler/parser/capability/ParseXmlDom.bml +47 -0
- package/blocks/org/blockml/bml/compiler/parser/capability/ResolveBlockReference.bml +53 -0
- package/blocks/org/blockml/bml/compiler/parser/capability/ResolvePrefix.bml +46 -0
- package/blocks/org/blockml/bml/compiler/parser/capability/ResolveTypeName.bml +53 -0
- package/blocks/org/blockml/bml/compiler/parser/capability/SourceLoc.bml +49 -0
- package/blocks/org/blockml/bml/compiler/parser/capability/SplitQName.bml +43 -0
- package/blocks/org/blockml/bml/compiler/parser/capability/TrimText.bml +43 -0
- package/blocks/org/blockml/bml/compiler/parser/capability/TypeExpressionToString.bml +43 -0
- package/blocks/org/blockml/bml/compiler/parser/capability/VisibilityPrefix.bml +43 -0
- package/blocks/org/blockml/bml/compiler/parser/capability/XmlTriviaFromElement.bml +47 -0
- package/blocks/org/blockml/bml/compiler/parser/config/MapTimeDiagnosticCodes.bml +40 -0
- package/blocks/org/blockml/bml/compiler/parser/config/ParserConstants.bml +49 -0
- package/blocks/org/blockml/bml/compiler/parser/documentation/ArchitectureOverview.bml +61 -0
- package/blocks/org/blockml/bml/compiler/parser/documentation/AttributeClassification.bml +56 -0
- package/blocks/org/blockml/bml/compiler/parser/documentation/BlockMetadataMapping.bml +51 -0
- package/blocks/org/blockml/bml/compiler/parser/documentation/DesignDecisions.bml +53 -0
- package/blocks/org/blockml/bml/compiler/parser/documentation/Diagnostics.bml +52 -0
- package/blocks/org/blockml/bml/compiler/parser/documentation/ExpressionCapture.bml +46 -0
- package/blocks/org/blockml/bml/compiler/parser/documentation/Introduction.bml +52 -0
- package/blocks/org/blockml/bml/compiler/parser/documentation/LayerSeparation.bml +55 -0
- package/blocks/org/blockml/bml/compiler/parser/documentation/MappingPrinciples.bml +48 -0
- package/blocks/org/blockml/bml/compiler/parser/documentation/MemberMapping.bml +48 -0
- package/blocks/org/blockml/bml/compiler/parser/documentation/MemberMappingOrder.bml +46 -0
- package/blocks/org/blockml/bml/compiler/parser/documentation/PackageOwnership.bml +50 -0
- package/blocks/org/blockml/bml/compiler/parser/documentation/PublicApi.bml +58 -0
- package/blocks/org/blockml/bml/compiler/parser/documentation/RoundtripContract.bml +50 -0
- package/blocks/org/blockml/bml/compiler/parser/documentation/ScopeExclusions.bml +49 -0
- package/blocks/org/blockml/bml/compiler/parser/documentation/SingleFileScope.bml +47 -0
- package/blocks/org/blockml/bml/compiler/parser/documentation/TypeDescriptorParsing.bml +47 -0
- package/blocks/org/blockml/bml/compiler/parser/documentation/V1Scope.bml +48 -0
- package/blocks/org/blockml/bml/compiler/parser/documentation/XmlCommentsParse.bml +48 -0
- package/blocks/org/blockml/bml/compiler/parser/map/MapContext.bml +58 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/map/context.d.ts +16 -0
- package/dist/map/context.d.ts.map +1 -0
- package/dist/map/context.js +15 -0
- package/dist/map/context.js.map +1 -0
- package/dist/map/directives.d.ts +23 -0
- package/dist/map/directives.d.ts.map +1 -0
- package/dist/map/directives.js +89 -0
- package/dist/map/directives.js.map +1 -0
- package/dist/map/map-block.d.ts +6 -0
- package/dist/map/map-block.d.ts.map +1 -0
- package/dist/map/map-block.js +792 -0
- package/dist/map/map-block.js.map +1 -0
- package/dist/map/map-composition.d.ts +23 -0
- package/dist/map/map-composition.d.ts.map +1 -0
- package/dist/map/map-composition.js +241 -0
- package/dist/map/map-composition.js.map +1 -0
- package/dist/map/member-value.d.ts +4 -0
- package/dist/map/member-value.d.ts.map +1 -0
- package/dist/map/member-value.js +69 -0
- package/dist/map/member-value.js.map +1 -0
- package/dist/map/type-expression.d.ts +6 -0
- package/dist/map/type-expression.d.ts.map +1 -0
- package/dist/map/type-expression.js +266 -0
- package/dist/map/type-expression.js.map +1 -0
- package/dist/parse.d.ts +3 -0
- package/dist/parse.d.ts.map +1 -0
- package/dist/parse.js +80 -0
- package/dist/parse.js.map +1 -0
- package/dist/pipeline/format-detect.d.ts +2 -0
- package/dist/pipeline/format-detect.d.ts.map +1 -0
- package/dist/pipeline/format-detect.js +8 -0
- package/dist/pipeline/format-detect.js.map +1 -0
- package/dist/pipeline/namespaces.d.ts +7 -0
- package/dist/pipeline/namespaces.d.ts.map +1 -0
- package/dist/pipeline/namespaces.js +45 -0
- package/dist/pipeline/namespaces.js.map +1 -0
- package/dist/pipeline/root-type.d.ts +3 -0
- package/dist/pipeline/root-type.d.ts.map +1 -0
- package/dist/pipeline/root-type.js +8 -0
- package/dist/pipeline/root-type.js.map +1 -0
- package/dist/pipeline/xml-dom.d.ts +5 -0
- package/dist/pipeline/xml-dom.d.ts.map +1 -0
- package/dist/pipeline/xml-dom.js +20 -0
- package/dist/pipeline/xml-dom.js.map +1 -0
- package/dist/util/boolean.d.ts +4 -0
- package/dist/util/boolean.d.ts.map +1 -0
- package/dist/util/boolean.js +18 -0
- package/dist/util/boolean.js.map +1 -0
- package/dist/util/qname.d.ts +17 -0
- package/dist/util/qname.d.ts.map +1 -0
- package/dist/util/qname.js +189 -0
- package/dist/util/qname.js.map +1 -0
- package/dist/util/visibility.d.ts +7 -0
- package/dist/util/visibility.d.ts.map +1 -0
- package/dist/util/visibility.js +20 -0
- package/dist/util/visibility.js.map +1 -0
- package/dist/util/xml.d.ts +25 -0
- package/dist/util/xml.d.ts.map +1 -0
- package/dist/util/xml.js +133 -0
- package/dist/util/xml.js.map +1 -0
- package/package.json +42 -0
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
Parser — MapTimeDiagnosticCodes
|
|
3
|
+
FQN: org.blockml.bml.compiler.parser.config.MapTimeDiagnosticCodes
|
|
4
|
+
-->
|
|
5
|
+
<block
|
|
6
|
+
xmlns="http://blockml.org/bml"
|
|
7
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
8
|
+
xsi:schemaLocation="http://blockml.org/bml https://blockml.org/schemas/bml.xsd
|
|
9
|
+
"
|
|
10
|
+
xmlns:blockml="org.blockml.bml"
|
|
11
|
+
xmlns:bom="org.blockml.bml.bom"
|
|
12
|
+
xmlns:bomapi="org.blockml.bml.bom.api"
|
|
13
|
+
xmlns:bomblock="org.blockml.bml.bom.block"
|
|
14
|
+
xmlns:bomcommon="org.blockml.bml.bom.common"
|
|
15
|
+
xmlns:bomcomp="org.blockml.bml.bom.composition"
|
|
16
|
+
xmlns:bomdoc="org.blockml.bml.bom.document"
|
|
17
|
+
xmlns:bomtype="org.blockml.bml.bom.type"
|
|
18
|
+
xmlns:core="org.blockml.bml.core"
|
|
19
|
+
xmlns:def="org.blockml.bml.definition"
|
|
20
|
+
xmlns:parser="org.blockml.bml.compiler.parser"
|
|
21
|
+
xmlns:parcap="org.blockml.bml.compiler.parser.capability"
|
|
22
|
+
xmlns:parconfig="org.blockml.bml.compiler.parser.config"
|
|
23
|
+
xmlns:pardocumentation="org.blockml.bml.compiler.parser.documentation"
|
|
24
|
+
xmlns:parmap="org.blockml.bml.compiler.parser.map"
|
|
25
|
+
xmlns:type="org.blockml.bml.type">
|
|
26
|
+
|
|
27
|
+
<name>MapTimeDiagnosticCodes</name>
|
|
28
|
+
<type>parconfig:MapTimeDiagnosticCodes</type>
|
|
29
|
+
<baseType>parser:ParserType</baseType>
|
|
30
|
+
<is>Diagnostic codes emitted during parse pipeline and mapping</is>
|
|
31
|
+
|
|
32
|
+
<documentation>Hard-fail codes return document: null. Map-time codes may attach to ParseResult with continueOnError.</documentation>
|
|
33
|
+
|
|
34
|
+
<properties>
|
|
35
|
+
<codes type="type:Text[]">
|
|
36
|
+
<documentation>Ordered: BML_UNSUPPORTED_FORMAT, BML_MALFORMED_XML, BML_MISSING_ROOT, BML_INVALID_ROOT, BML_MAP_ERROR, BML_UNKNOWN_NAMESPACE_PREFIX, BML_UNQUALIFIED_BLOCK_REFERENCE, BML_UNKNOWN_TYPE (required)</documentation>
|
|
37
|
+
</codes>
|
|
38
|
+
</properties>
|
|
39
|
+
|
|
40
|
+
</block>
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
Parser — ParserConstants
|
|
3
|
+
FQN: org.blockml.bml.compiler.parser.config.ParserConstants
|
|
4
|
+
-->
|
|
5
|
+
<block
|
|
6
|
+
xmlns="http://blockml.org/bml"
|
|
7
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
8
|
+
xsi:schemaLocation="http://blockml.org/bml https://blockml.org/schemas/bml.xsd
|
|
9
|
+
"
|
|
10
|
+
xmlns:blockml="org.blockml.bml"
|
|
11
|
+
xmlns:bom="org.blockml.bml.bom"
|
|
12
|
+
xmlns:bomapi="org.blockml.bml.bom.api"
|
|
13
|
+
xmlns:bomblock="org.blockml.bml.bom.block"
|
|
14
|
+
xmlns:bomcommon="org.blockml.bml.bom.common"
|
|
15
|
+
xmlns:bomcomp="org.blockml.bml.bom.composition"
|
|
16
|
+
xmlns:bomdoc="org.blockml.bml.bom.document"
|
|
17
|
+
xmlns:bomtype="org.blockml.bml.bom.type"
|
|
18
|
+
xmlns:core="org.blockml.bml.core"
|
|
19
|
+
xmlns:def="org.blockml.bml.definition"
|
|
20
|
+
xmlns:parser="org.blockml.bml.compiler.parser"
|
|
21
|
+
xmlns:parcap="org.blockml.bml.compiler.parser.capability"
|
|
22
|
+
xmlns:parconfig="org.blockml.bml.compiler.parser.config"
|
|
23
|
+
xmlns:pardocumentation="org.blockml.bml.compiler.parser.documentation"
|
|
24
|
+
xmlns:parmap="org.blockml.bml.compiler.parser.map"
|
|
25
|
+
xmlns:type="org.blockml.bml.type">
|
|
26
|
+
|
|
27
|
+
<name>ParserConstants</name>
|
|
28
|
+
<type>parconfig:ParserConstants</type>
|
|
29
|
+
<baseType>parser:ParserType</baseType>
|
|
30
|
+
<is>Well-known URIs and V1 root element name</is>
|
|
31
|
+
|
|
32
|
+
<documentation>Shared across pipeline, qname resolution, and namespace extraction.</documentation>
|
|
33
|
+
|
|
34
|
+
<properties>
|
|
35
|
+
<XSI_NS type="type:Text">
|
|
36
|
+
<documentation>XSI_NS. TS type: type:Text. (required)</documentation>
|
|
37
|
+
</XSI_NS>
|
|
38
|
+
<BML_XMLNS type="type:Text">
|
|
39
|
+
<documentation>BML_XMLNS. TS type: type:Text. (required)</documentation>
|
|
40
|
+
</BML_XMLNS>
|
|
41
|
+
<TYPE_REFERENCE_ENTITY type="type:Text">
|
|
42
|
+
<documentation>TYPE_REFERENCE_ENTITY. TS type: type:Text. (required)</documentation>
|
|
43
|
+
</TYPE_REFERENCE_ENTITY>
|
|
44
|
+
<V1_ROOT_ELEMENT type="type:Text">
|
|
45
|
+
<documentation>V1_ROOT_ELEMENT. TS type: type:Text. (required)</documentation>
|
|
46
|
+
</V1_ROOT_ELEMENT>
|
|
47
|
+
</properties>
|
|
48
|
+
|
|
49
|
+
</block>
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
Parser Documentation — ArchitectureOverview
|
|
3
|
+
FQN: org.blockml.bml.compiler.parser.documentation.ArchitectureOverview
|
|
4
|
+
-->
|
|
5
|
+
<block
|
|
6
|
+
xmlns="http://blockml.org/bml"
|
|
7
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
8
|
+
xsi:schemaLocation="http://blockml.org/bml https://blockml.org/schemas/bml.xsd
|
|
9
|
+
"
|
|
10
|
+
xmlns:blockml="org.blockml.bml"
|
|
11
|
+
xmlns:bom="org.blockml.bml.bom"
|
|
12
|
+
xmlns:bomapi="org.blockml.bml.bom.api"
|
|
13
|
+
xmlns:bomblock="org.blockml.bml.bom.block"
|
|
14
|
+
xmlns:bomcommon="org.blockml.bml.bom.common"
|
|
15
|
+
xmlns:bomcomp="org.blockml.bml.bom.composition"
|
|
16
|
+
xmlns:bomdoc="org.blockml.bml.bom.document"
|
|
17
|
+
xmlns:bomtype="org.blockml.bml.bom.type"
|
|
18
|
+
xmlns:core="org.blockml.bml.core"
|
|
19
|
+
xmlns:def="org.blockml.bml.definition"
|
|
20
|
+
xmlns:parser="org.blockml.bml.compiler.parser"
|
|
21
|
+
xmlns:parcap="org.blockml.bml.compiler.parser.capability"
|
|
22
|
+
xmlns:parconfig="org.blockml.bml.compiler.parser.config"
|
|
23
|
+
xmlns:pardocumentation="org.blockml.bml.compiler.parser.documentation"
|
|
24
|
+
xmlns:parmap="org.blockml.bml.compiler.parser.map"
|
|
25
|
+
xmlns:type="org.blockml.bml.type"
|
|
26
|
+
xmlns:doc="org.blockml.bml.documentation">
|
|
27
|
+
|
|
28
|
+
<name>ArchitectureOverview</name>
|
|
29
|
+
<type>pardocumentation:ArchitectureOverview</type>
|
|
30
|
+
<baseType>core:Documentation</baseType>
|
|
31
|
+
<is>Parse pipeline [1]–[5] and module decomposition</is>
|
|
32
|
+
|
|
33
|
+
<documentation>Entry point: parse(source, options?) → ParseResult (B26).
|
|
34
|
+
|
|
35
|
+
Stage 1 pipeline:
|
|
36
|
+
[1] Format detect (B24) — detectFormat(); strip UTF-8 BOM; first '<' → xml
|
|
37
|
+
[2] XML DOM (B18) — parseXmlDom() via @xmldom/xmldom
|
|
38
|
+
[3] Root type resolver — assertBlockRoot(); V1: <block> only
|
|
39
|
+
[4] Namespace resolver — extractNamespaceBindings(), mergeSourceInfo(); FQN resolution
|
|
40
|
+
[5] BML → BOM mapper — mapDocumentBlock() → BomDocument
|
|
41
|
+
|
|
42
|
+
Module decomposition (packages/parser/src/):
|
|
43
|
+
• parse.ts → parcap:Parse orchestrates [1]–[5]
|
|
44
|
+
• pipeline/format-detect.ts → parcap:DetectFormat
|
|
45
|
+
• pipeline/xml-dom.ts → parcap:ParseXmlDom, GetParseErrors, DocumentElement
|
|
46
|
+
• pipeline/root-type.ts → parcap:AssertBlockRoot
|
|
47
|
+
• pipeline/namespaces.ts → parcap:ExtractNamespaceBindings, MergeSourceInfo
|
|
48
|
+
• map/context.ts → parmap:MapContext, parcap:CreateMapContext
|
|
49
|
+
• map/map-block.ts → parcap:MapDocumentBlock, MapBlock
|
|
50
|
+
• map/map-composition.ts → composition tree mapping
|
|
51
|
+
• map/type-expression.ts → parcap:ParseTypeExpression
|
|
52
|
+
• map/member-value.ts → parcap:ParseMemberValue
|
|
53
|
+
• map/directives.ts → parcap:ParseDirectives, ParseBmlMeta
|
|
54
|
+
• util/* → visibility, boolean, qname, xml helpers</documentation>
|
|
55
|
+
|
|
56
|
+
<references>
|
|
57
|
+
<see type="pardocumentation:V1Scope" relation="ReadNext"></see>
|
|
58
|
+
<see type="parcap:Parse" relation="Defines"></see>
|
|
59
|
+
</references>
|
|
60
|
+
|
|
61
|
+
</block>
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
Parser Documentation — AttributeClassification
|
|
3
|
+
FQN: org.blockml.bml.compiler.parser.documentation.AttributeClassification
|
|
4
|
+
-->
|
|
5
|
+
<block
|
|
6
|
+
xmlns="http://blockml.org/bml"
|
|
7
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
8
|
+
xsi:schemaLocation="http://blockml.org/bml https://blockml.org/schemas/bml.xsd
|
|
9
|
+
"
|
|
10
|
+
xmlns:blockml="org.blockml.bml"
|
|
11
|
+
xmlns:bom="org.blockml.bml.bom"
|
|
12
|
+
xmlns:bomapi="org.blockml.bml.bom.api"
|
|
13
|
+
xmlns:bomblock="org.blockml.bml.bom.block"
|
|
14
|
+
xmlns:bomcommon="org.blockml.bml.bom.common"
|
|
15
|
+
xmlns:bomcomp="org.blockml.bml.bom.composition"
|
|
16
|
+
xmlns:bomdoc="org.blockml.bml.bom.document"
|
|
17
|
+
xmlns:bomtype="org.blockml.bml.bom.type"
|
|
18
|
+
xmlns:core="org.blockml.bml.core"
|
|
19
|
+
xmlns:def="org.blockml.bml.definition"
|
|
20
|
+
xmlns:parser="org.blockml.bml.compiler.parser"
|
|
21
|
+
xmlns:parcap="org.blockml.bml.compiler.parser.capability"
|
|
22
|
+
xmlns:parconfig="org.blockml.bml.compiler.parser.config"
|
|
23
|
+
xmlns:pardocumentation="org.blockml.bml.compiler.parser.documentation"
|
|
24
|
+
xmlns:parmap="org.blockml.bml.compiler.parser.map"
|
|
25
|
+
xmlns:type="org.blockml.bml.type"
|
|
26
|
+
xmlns:doc="org.blockml.bml.documentation">
|
|
27
|
+
|
|
28
|
+
<name>AttributeClassification</name>
|
|
29
|
+
<type>pardocumentation:AttributeClassification</type>
|
|
30
|
+
<baseType>core:Documentation</baseType>
|
|
31
|
+
<is>Fixed priority chain for XML attributes (Rules 1–3)</is>
|
|
32
|
+
|
|
33
|
+
<documentation>When mapping an XML element, every attribute is classified — first matching rule wins:
|
|
34
|
+
|
|
35
|
+
Rule 1 — XML infrastructure:
|
|
36
|
+
• xmlns* → SourceInfo.namespaceBindings (incl. xmlns:xsi — B25)
|
|
37
|
+
• xsi:schemaLocation / xsi:noNamespaceSchemaLocation → SourceInfo (B25)
|
|
38
|
+
• other xsi:* → ignore (not memberValues)
|
|
39
|
+
|
|
40
|
+
Rule 2 — bml:* attributes:
|
|
41
|
+
• Composition meta (bml:id, bml:version, …) → BlockInstance fields
|
|
42
|
+
• Directives (bml:each, bml:if, …) → directives[]
|
|
43
|
+
• Unknown bml:* → BML_UNKNOWN_DIRECTIVE (error at map time — B2)
|
|
44
|
+
|
|
45
|
+
Rule 3 — All other attributes:
|
|
46
|
+
• memberValues[name] (camelCase)
|
|
47
|
+
• ${ expr } → ExpressionValue { raw } (B4)
|
|
48
|
+
|
|
49
|
+
Serialize side of Rule 1 (B25 re-emit) → @blockml/serializer.</documentation>
|
|
50
|
+
|
|
51
|
+
<references>
|
|
52
|
+
<see type="pardocumentation:XmlCommentsParse" relation="ReadNext"></see>
|
|
53
|
+
<see type="parcap:ParseDirectives" relation="SeeAlso"></see>
|
|
54
|
+
</references>
|
|
55
|
+
|
|
56
|
+
</block>
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
Parser Documentation — BlockMetadataMapping
|
|
3
|
+
FQN: org.blockml.bml.compiler.parser.documentation.BlockMetadataMapping
|
|
4
|
+
-->
|
|
5
|
+
<block
|
|
6
|
+
xmlns="http://blockml.org/bml"
|
|
7
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
8
|
+
xsi:schemaLocation="http://blockml.org/bml https://blockml.org/schemas/bml.xsd
|
|
9
|
+
"
|
|
10
|
+
xmlns:blockml="org.blockml.bml"
|
|
11
|
+
xmlns:bom="org.blockml.bml.bom"
|
|
12
|
+
xmlns:bomapi="org.blockml.bml.bom.api"
|
|
13
|
+
xmlns:bomblock="org.blockml.bml.bom.block"
|
|
14
|
+
xmlns:bomcommon="org.blockml.bml.bom.common"
|
|
15
|
+
xmlns:bomcomp="org.blockml.bml.bom.composition"
|
|
16
|
+
xmlns:bomdoc="org.blockml.bml.bom.document"
|
|
17
|
+
xmlns:bomtype="org.blockml.bml.bom.type"
|
|
18
|
+
xmlns:core="org.blockml.bml.core"
|
|
19
|
+
xmlns:def="org.blockml.bml.definition"
|
|
20
|
+
xmlns:parser="org.blockml.bml.compiler.parser"
|
|
21
|
+
xmlns:parcap="org.blockml.bml.compiler.parser.capability"
|
|
22
|
+
xmlns:parconfig="org.blockml.bml.compiler.parser.config"
|
|
23
|
+
xmlns:pardocumentation="org.blockml.bml.compiler.parser.documentation"
|
|
24
|
+
xmlns:parmap="org.blockml.bml.compiler.parser.map"
|
|
25
|
+
xmlns:type="org.blockml.bml.type"
|
|
26
|
+
xmlns:doc="org.blockml.bml.documentation">
|
|
27
|
+
|
|
28
|
+
<name>BlockMetadataMapping</name>
|
|
29
|
+
<type>pardocumentation:BlockMetadataMapping</type>
|
|
30
|
+
<baseType>core:Documentation</baseType>
|
|
31
|
+
<is>Block definition metadata field mapping</is>
|
|
32
|
+
|
|
33
|
+
<documentation>Map <block> child elements to BlockDefinition fields:
|
|
34
|
+
|
|
35
|
+
Identity: name, type, baseType, is, isNot, version, definition
|
|
36
|
+
Structural: since, status, summary, documentation, abstract, final
|
|
37
|
+
Aggregations: keywords, changelog, examples, references, constraints, aliases,
|
|
38
|
+
language, genericTypes, contracts, properties, aggregations, associations,
|
|
39
|
+
capabilities, subBlocks, embeddedBlocks
|
|
40
|
+
|
|
41
|
+
• xmlRendering (bml:xml metadata) stored on BlockDefinition — NOT in directives[] (B23/D3)
|
|
42
|
+
• authoredPlacement stored for dual element|attribute forms (D9)
|
|
43
|
+
• authoredCharacterDataForm for text vs CDATA (D8)
|
|
44
|
+
• Visibility prefixes stripped → logical name + visibility (B14 parse half)</documentation>
|
|
45
|
+
|
|
46
|
+
<references>
|
|
47
|
+
<see type="pardocumentation:MemberMapping" relation="ReadNext"></see>
|
|
48
|
+
<see type="def:BlockDefinition" relation="SeeAlso"></see>
|
|
49
|
+
</references>
|
|
50
|
+
|
|
51
|
+
</block>
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
Parser Documentation — DesignDecisions
|
|
3
|
+
FQN: org.blockml.bml.compiler.parser.documentation.DesignDecisions
|
|
4
|
+
-->
|
|
5
|
+
<block
|
|
6
|
+
xmlns="http://blockml.org/bml"
|
|
7
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
8
|
+
xsi:schemaLocation="http://blockml.org/bml https://blockml.org/schemas/bml.xsd
|
|
9
|
+
"
|
|
10
|
+
xmlns:blockml="org.blockml.bml"
|
|
11
|
+
xmlns:bom="org.blockml.bml.bom"
|
|
12
|
+
xmlns:bomapi="org.blockml.bml.bom.api"
|
|
13
|
+
xmlns:bomblock="org.blockml.bml.bom.block"
|
|
14
|
+
xmlns:bomcommon="org.blockml.bml.bom.common"
|
|
15
|
+
xmlns:bomcomp="org.blockml.bml.bom.composition"
|
|
16
|
+
xmlns:bomdoc="org.blockml.bml.bom.document"
|
|
17
|
+
xmlns:bomtype="org.blockml.bml.bom.type"
|
|
18
|
+
xmlns:core="org.blockml.bml.core"
|
|
19
|
+
xmlns:def="org.blockml.bml.definition"
|
|
20
|
+
xmlns:parser="org.blockml.bml.compiler.parser"
|
|
21
|
+
xmlns:parcap="org.blockml.bml.compiler.parser.capability"
|
|
22
|
+
xmlns:parconfig="org.blockml.bml.compiler.parser.config"
|
|
23
|
+
xmlns:pardocumentation="org.blockml.bml.compiler.parser.documentation"
|
|
24
|
+
xmlns:parmap="org.blockml.bml.compiler.parser.map"
|
|
25
|
+
xmlns:type="org.blockml.bml.type"
|
|
26
|
+
xmlns:doc="org.blockml.bml.documentation">
|
|
27
|
+
|
|
28
|
+
<name>DesignDecisions</name>
|
|
29
|
+
<type>pardocumentation:DesignDecisions</type>
|
|
30
|
+
<baseType>core:Documentation</baseType>
|
|
31
|
+
<is>Normative parser design decisions</is>
|
|
32
|
+
|
|
33
|
+
<documentation>B2: unknown bml:* → error at map; unknown custom props → validator warning.
|
|
34
|
+
B3: inputType/outputType → TypeExpression at map time.
|
|
35
|
+
B4: ExpressionValue.raw only; AST via core utility.
|
|
36
|
+
B5: single-file parser scope.
|
|
37
|
+
B6: JSON not planned.
|
|
38
|
+
B7/B8: Phase A slice; XSD not Stage 1.
|
|
39
|
+
B11: XML comments bound to elements (parse side).
|
|
40
|
+
B14: strip _/__ → logical name + visibility.
|
|
41
|
+
B15/B16: boolean values vs type refs.
|
|
42
|
+
B18: @xmldom/xmldom for DOM.
|
|
43
|
+
B19: redundant aggregation type — map must not apply.
|
|
44
|
+
B23: preserve xmlRendering + D6 recipe at Stage 1.
|
|
45
|
+
B24: format detector (BOM strip, first '<').
|
|
46
|
+
B25: store xmlns:xsi + schemaLocation on SourceInfo.
|
|
47
|
+
B26: parse() entry; types in @blockml/bom.</documentation>
|
|
48
|
+
|
|
49
|
+
<references>
|
|
50
|
+
<see type="pardocumentation:RoundtripContract" relation="ReadNext"></see>
|
|
51
|
+
</references>
|
|
52
|
+
|
|
53
|
+
</block>
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
Parser Documentation — Diagnostics
|
|
3
|
+
FQN: org.blockml.bml.compiler.parser.documentation.Diagnostics
|
|
4
|
+
-->
|
|
5
|
+
<block
|
|
6
|
+
xmlns="http://blockml.org/bml"
|
|
7
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
8
|
+
xsi:schemaLocation="http://blockml.org/bml https://blockml.org/schemas/bml.xsd
|
|
9
|
+
"
|
|
10
|
+
xmlns:blockml="org.blockml.bml"
|
|
11
|
+
xmlns:bom="org.blockml.bml.bom"
|
|
12
|
+
xmlns:bomapi="org.blockml.bml.bom.api"
|
|
13
|
+
xmlns:bomblock="org.blockml.bml.bom.block"
|
|
14
|
+
xmlns:bomcommon="org.blockml.bml.bom.common"
|
|
15
|
+
xmlns:bomcomp="org.blockml.bml.bom.composition"
|
|
16
|
+
xmlns:bomdoc="org.blockml.bml.bom.document"
|
|
17
|
+
xmlns:bomtype="org.blockml.bml.bom.type"
|
|
18
|
+
xmlns:core="org.blockml.bml.core"
|
|
19
|
+
xmlns:def="org.blockml.bml.definition"
|
|
20
|
+
xmlns:parser="org.blockml.bml.compiler.parser"
|
|
21
|
+
xmlns:parcap="org.blockml.bml.compiler.parser.capability"
|
|
22
|
+
xmlns:parconfig="org.blockml.bml.compiler.parser.config"
|
|
23
|
+
xmlns:pardocumentation="org.blockml.bml.compiler.parser.documentation"
|
|
24
|
+
xmlns:parmap="org.blockml.bml.compiler.parser.map"
|
|
25
|
+
xmlns:type="org.blockml.bml.type"
|
|
26
|
+
xmlns:doc="org.blockml.bml.documentation">
|
|
27
|
+
|
|
28
|
+
<name>Diagnostics</name>
|
|
29
|
+
<type>pardocumentation:Diagnostics</type>
|
|
30
|
+
<baseType>core:Documentation</baseType>
|
|
31
|
+
<is>Map-time and pipeline diagnostic codes</is>
|
|
32
|
+
|
|
33
|
+
<documentation>Pipeline hard-fail codes (parse.ts):
|
|
34
|
+
• BML_UNSUPPORTED_FORMAT — format detect failed
|
|
35
|
+
• BML_MALFORMED_XML — DOM parse error
|
|
36
|
+
• BML_MISSING_ROOT — no document element
|
|
37
|
+
• BML_INVALID_ROOT — not <block> (V1)
|
|
38
|
+
• BML_MAP_ERROR — mapping exception
|
|
39
|
+
|
|
40
|
+
Map-time codes (mapper modules):
|
|
41
|
+
• BML_UNKNOWN_NAMESPACE_PREFIX, BML_UNQUALIFIED_BLOCK_REFERENCE
|
|
42
|
+
• BML_UNKNOWN_TYPE — type expression parse failure
|
|
43
|
+
|
|
44
|
+
Host policy: whether to abort after diagnostics is orchestrator decision.
|
|
45
|
+
Diagnostic type: org.blockml.bml.bom.common.Diagnostic.</documentation>
|
|
46
|
+
|
|
47
|
+
<references>
|
|
48
|
+
<see type="parconfig:MapTimeDiagnosticCodes" relation="Defines"></see>
|
|
49
|
+
<see type="pardocumentation:PackageOwnership" relation="ReadNext"></see>
|
|
50
|
+
</references>
|
|
51
|
+
|
|
52
|
+
</block>
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
Parser Documentation — ExpressionCapture
|
|
3
|
+
FQN: org.blockml.bml.compiler.parser.documentation.ExpressionCapture
|
|
4
|
+
-->
|
|
5
|
+
<block
|
|
6
|
+
xmlns="http://blockml.org/bml"
|
|
7
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
8
|
+
xsi:schemaLocation="http://blockml.org/bml https://blockml.org/schemas/bml.xsd
|
|
9
|
+
"
|
|
10
|
+
xmlns:blockml="org.blockml.bml"
|
|
11
|
+
xmlns:bom="org.blockml.bml.bom"
|
|
12
|
+
xmlns:bomapi="org.blockml.bml.bom.api"
|
|
13
|
+
xmlns:bomblock="org.blockml.bml.bom.block"
|
|
14
|
+
xmlns:bomcommon="org.blockml.bml.bom.common"
|
|
15
|
+
xmlns:bomcomp="org.blockml.bml.bom.composition"
|
|
16
|
+
xmlns:bomdoc="org.blockml.bml.bom.document"
|
|
17
|
+
xmlns:bomtype="org.blockml.bml.bom.type"
|
|
18
|
+
xmlns:core="org.blockml.bml.core"
|
|
19
|
+
xmlns:def="org.blockml.bml.definition"
|
|
20
|
+
xmlns:parser="org.blockml.bml.compiler.parser"
|
|
21
|
+
xmlns:parcap="org.blockml.bml.compiler.parser.capability"
|
|
22
|
+
xmlns:parconfig="org.blockml.bml.compiler.parser.config"
|
|
23
|
+
xmlns:pardocumentation="org.blockml.bml.compiler.parser.documentation"
|
|
24
|
+
xmlns:parmap="org.blockml.bml.compiler.parser.map"
|
|
25
|
+
xmlns:type="org.blockml.bml.type"
|
|
26
|
+
xmlns:doc="org.blockml.bml.documentation">
|
|
27
|
+
|
|
28
|
+
<name>ExpressionCapture</name>
|
|
29
|
+
<type>pardocumentation:ExpressionCapture</type>
|
|
30
|
+
<baseType>core:Documentation</baseType>
|
|
31
|
+
<is>Raw expression storage — no AST in Urmodell (B4)</is>
|
|
32
|
+
|
|
33
|
+
<documentation>${ … } attribute/element values → ExpressionValue { raw, source }.
|
|
34
|
+
Implementation CDATA → embeddedExpressions[] with source offsets.
|
|
35
|
+
|
|
36
|
+
Parser step [5] captures raw text only. AST construction via parseExpression()
|
|
37
|
+
in @blockml/core (Stage 2 utility) — never stored on Urmodell.
|
|
38
|
+
|
|
39
|
+
inputType/outputType on capabilities → TypeExpression at map time (B3).</documentation>
|
|
40
|
+
|
|
41
|
+
<references>
|
|
42
|
+
<see type="pardocumentation:SingleFileScope" relation="ReadNext"></see>
|
|
43
|
+
<see type="parcap:ExpressionFromRaw" relation="SeeAlso"></see>
|
|
44
|
+
</references>
|
|
45
|
+
|
|
46
|
+
</block>
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
Parser Documentation — Introduction
|
|
3
|
+
FQN: org.blockml.bml.compiler.parser.documentation.Introduction
|
|
4
|
+
-->
|
|
5
|
+
<block
|
|
6
|
+
xmlns="http://blockml.org/bml"
|
|
7
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
8
|
+
xsi:schemaLocation="http://blockml.org/bml https://blockml.org/schemas/bml.xsd
|
|
9
|
+
"
|
|
10
|
+
xmlns:blockml="org.blockml.bml"
|
|
11
|
+
xmlns:bom="org.blockml.bml.bom"
|
|
12
|
+
xmlns:bomapi="org.blockml.bml.bom.api"
|
|
13
|
+
xmlns:bomblock="org.blockml.bml.bom.block"
|
|
14
|
+
xmlns:bomcommon="org.blockml.bml.bom.common"
|
|
15
|
+
xmlns:bomcomp="org.blockml.bml.bom.composition"
|
|
16
|
+
xmlns:bomdoc="org.blockml.bml.bom.document"
|
|
17
|
+
xmlns:bomtype="org.blockml.bml.bom.type"
|
|
18
|
+
xmlns:core="org.blockml.bml.core"
|
|
19
|
+
xmlns:def="org.blockml.bml.definition"
|
|
20
|
+
xmlns:parser="org.blockml.bml.compiler.parser"
|
|
21
|
+
xmlns:parcap="org.blockml.bml.compiler.parser.capability"
|
|
22
|
+
xmlns:parconfig="org.blockml.bml.compiler.parser.config"
|
|
23
|
+
xmlns:pardocumentation="org.blockml.bml.compiler.parser.documentation"
|
|
24
|
+
xmlns:parmap="org.blockml.bml.compiler.parser.map"
|
|
25
|
+
xmlns:type="org.blockml.bml.type"
|
|
26
|
+
xmlns:doc="org.blockml.bml.documentation">
|
|
27
|
+
|
|
28
|
+
<name>Introduction</name>
|
|
29
|
+
<type>pardocumentation:Introduction</type>
|
|
30
|
+
<baseType>core:Documentation</baseType>
|
|
31
|
+
<is>Purpose and scope of the Parser package</is>
|
|
32
|
+
|
|
33
|
+
<documentation>The @blockml/parser package converts BML XML source to BomDocument (Urmodell).
|
|
34
|
+
It is the forward mapping — enabling BML → BOM → BML roundtrip together with @blockml/serializer.
|
|
35
|
+
|
|
36
|
+
This library (org.blockml.bml.compiler.parser.*) is the SSOT. TypeScript in
|
|
37
|
+
packages/parser/src/ implements it. Parity tests in packages/parser/test/
|
|
38
|
+
verify BML ↔ TS alignment.
|
|
39
|
+
|
|
40
|
+
V1 build order: parser and serializer prove BML ↔ BOM roundtrip first; validator
|
|
41
|
+
and compiler follow. Single-file scoped — one parse() invocation → one BomDocument.
|
|
42
|
+
|
|
43
|
+
Pipeline placement: BML XML → Parser → BomDocument; consumed by serializer, validator,
|
|
44
|
+
compiler, LSP. Depends on @blockml/bom (types) and @xmldom/xmldom (B18). Does not
|
|
45
|
+
depend on @blockml/serializer, @blockml/validator, or TypeRegistry bootstrap.</documentation>
|
|
46
|
+
|
|
47
|
+
<references>
|
|
48
|
+
<see type="pardocumentation:LayerSeparation" relation="ReadNext"></see>
|
|
49
|
+
<see type="bomdocumentation:Introduction" relation="SeeAlso"></see>
|
|
50
|
+
</references>
|
|
51
|
+
|
|
52
|
+
</block>
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
Parser Documentation — LayerSeparation
|
|
3
|
+
FQN: org.blockml.bml.compiler.parser.documentation.LayerSeparation
|
|
4
|
+
-->
|
|
5
|
+
<block
|
|
6
|
+
xmlns="http://blockml.org/bml"
|
|
7
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
8
|
+
xsi:schemaLocation="http://blockml.org/bml https://blockml.org/schemas/bml.xsd
|
|
9
|
+
"
|
|
10
|
+
xmlns:blockml="org.blockml.bml"
|
|
11
|
+
xmlns:bom="org.blockml.bml.bom"
|
|
12
|
+
xmlns:bomapi="org.blockml.bml.bom.api"
|
|
13
|
+
xmlns:bomblock="org.blockml.bml.bom.block"
|
|
14
|
+
xmlns:bomcommon="org.blockml.bml.bom.common"
|
|
15
|
+
xmlns:bomcomp="org.blockml.bml.bom.composition"
|
|
16
|
+
xmlns:bomdoc="org.blockml.bml.bom.document"
|
|
17
|
+
xmlns:bomtype="org.blockml.bml.bom.type"
|
|
18
|
+
xmlns:core="org.blockml.bml.core"
|
|
19
|
+
xmlns:def="org.blockml.bml.definition"
|
|
20
|
+
xmlns:parser="org.blockml.bml.compiler.parser"
|
|
21
|
+
xmlns:parcap="org.blockml.bml.compiler.parser.capability"
|
|
22
|
+
xmlns:parconfig="org.blockml.bml.compiler.parser.config"
|
|
23
|
+
xmlns:pardocumentation="org.blockml.bml.compiler.parser.documentation"
|
|
24
|
+
xmlns:parmap="org.blockml.bml.compiler.parser.map"
|
|
25
|
+
xmlns:type="org.blockml.bml.type"
|
|
26
|
+
xmlns:doc="org.blockml.bml.documentation">
|
|
27
|
+
|
|
28
|
+
<name>LayerSeparation</name>
|
|
29
|
+
<type>pardocumentation:LayerSeparation</type>
|
|
30
|
+
<baseType>core:Documentation</baseType>
|
|
31
|
+
<is>Parser vs BOM vs core vs serializer vs validator</is>
|
|
32
|
+
|
|
33
|
+
<documentation>Five layers relevant to parsing:
|
|
34
|
+
|
|
35
|
+
org.blockml.bml.bom.* (@blockml/bom) — Urmodell data structures the parser produces
|
|
36
|
+
(BomDocument, BlockDefinition, MemberDefinition, …). ParseOptions and ParseResult (B26).
|
|
37
|
+
|
|
38
|
+
org.blockml.bml.compiler.parser.* (this package) — BML → BOM mapping algorithm,
|
|
39
|
+
Stage 1 pipeline [1]–[5], parse() entry point contract.
|
|
40
|
+
|
|
41
|
+
org.blockml.bml.definition.* (@blockml/core) — BML meta-model. Parser links to Definition
|
|
42
|
+
blocks for canonical paths; does not duplicate language grammar.
|
|
43
|
+
|
|
44
|
+
org.blockml.bml.compiler.serializer.* (@blockml/serializer) — inverse mapping (BOM → BML).
|
|
45
|
+
Emit rules B12–B25 live there, not here.
|
|
46
|
+
|
|
47
|
+
@blockml/framework utilities — parseExpression() (Stage 2 AST), TypeRegistry, validateTypes.
|
|
48
|
+
Parser stores ExpressionValue.raw only (B4); never writes AST to Urmodell.</documentation>
|
|
49
|
+
|
|
50
|
+
<references>
|
|
51
|
+
<see type="pardocumentation:ArchitectureOverview" relation="ReadNext"></see>
|
|
52
|
+
<see type="bomdocumentation:LayerSeparation" relation="SeeAlso"></see>
|
|
53
|
+
</references>
|
|
54
|
+
|
|
55
|
+
</block>
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
Parser Documentation — MappingPrinciples
|
|
3
|
+
FQN: org.blockml.bml.compiler.parser.documentation.MappingPrinciples
|
|
4
|
+
-->
|
|
5
|
+
<block
|
|
6
|
+
xmlns="http://blockml.org/bml"
|
|
7
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
8
|
+
xsi:schemaLocation="http://blockml.org/bml https://blockml.org/schemas/bml.xsd
|
|
9
|
+
"
|
|
10
|
+
xmlns:blockml="org.blockml.bml"
|
|
11
|
+
xmlns:bom="org.blockml.bml.bom"
|
|
12
|
+
xmlns:bomapi="org.blockml.bml.bom.api"
|
|
13
|
+
xmlns:bomblock="org.blockml.bml.bom.block"
|
|
14
|
+
xmlns:bomcommon="org.blockml.bml.bom.common"
|
|
15
|
+
xmlns:bomcomp="org.blockml.bml.bom.composition"
|
|
16
|
+
xmlns:bomdoc="org.blockml.bml.bom.document"
|
|
17
|
+
xmlns:bomtype="org.blockml.bml.bom.type"
|
|
18
|
+
xmlns:core="org.blockml.bml.core"
|
|
19
|
+
xmlns:def="org.blockml.bml.definition"
|
|
20
|
+
xmlns:parser="org.blockml.bml.compiler.parser"
|
|
21
|
+
xmlns:parcap="org.blockml.bml.compiler.parser.capability"
|
|
22
|
+
xmlns:parconfig="org.blockml.bml.compiler.parser.config"
|
|
23
|
+
xmlns:pardocumentation="org.blockml.bml.compiler.parser.documentation"
|
|
24
|
+
xmlns:parmap="org.blockml.bml.compiler.parser.map"
|
|
25
|
+
xmlns:type="org.blockml.bml.type"
|
|
26
|
+
xmlns:doc="org.blockml.bml.documentation">
|
|
27
|
+
|
|
28
|
+
<name>MappingPrinciples</name>
|
|
29
|
+
<type>pardocumentation:MappingPrinciples</type>
|
|
30
|
+
<baseType>core:Documentation</baseType>
|
|
31
|
+
<is>Fundamental mapping rule — structure + preservation</is>
|
|
32
|
+
|
|
33
|
+
<documentation>BML → BOM → BML must always be possible. The mapper preserves authored structure
|
|
34
|
+
and values — directives, aggregation declarations, literal syntax, unresolved type
|
|
35
|
+
references, namespace bindings, and bml:xml metadata.
|
|
36
|
+
|
|
37
|
+
Mapper responsibility: structure + classification + preservation.
|
|
38
|
+
NOT mapper responsibility: canonicalization, expansion, merge, evaluation.
|
|
39
|
+
|
|
40
|
+
BOM makes no statement about directive expansion, aggregation interpretation, or
|
|
41
|
+
block rendering. Maximum authored surface: store as much as Urmodell can carry.</documentation>
|
|
42
|
+
|
|
43
|
+
<references>
|
|
44
|
+
<see type="pardocumentation:MemberMappingOrder" relation="ReadNext"></see>
|
|
45
|
+
<see type="bomdocumentation:AbstractionPrinciple" relation="SeeAlso"></see>
|
|
46
|
+
</references>
|
|
47
|
+
|
|
48
|
+
</block>
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
Parser Documentation — MemberMapping
|
|
3
|
+
FQN: org.blockml.bml.compiler.parser.documentation.MemberMapping
|
|
4
|
+
-->
|
|
5
|
+
<block
|
|
6
|
+
xmlns="http://blockml.org/bml"
|
|
7
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
8
|
+
xsi:schemaLocation="http://blockml.org/bml https://blockml.org/schemas/bml.xsd
|
|
9
|
+
"
|
|
10
|
+
xmlns:blockml="org.blockml.bml"
|
|
11
|
+
xmlns:bom="org.blockml.bml.bom"
|
|
12
|
+
xmlns:bomapi="org.blockml.bml.bom.api"
|
|
13
|
+
xmlns:bomblock="org.blockml.bml.bom.block"
|
|
14
|
+
xmlns:bomcommon="org.blockml.bml.bom.common"
|
|
15
|
+
xmlns:bomcomp="org.blockml.bml.bom.composition"
|
|
16
|
+
xmlns:bomdoc="org.blockml.bml.bom.document"
|
|
17
|
+
xmlns:bomtype="org.blockml.bml.bom.type"
|
|
18
|
+
xmlns:core="org.blockml.bml.core"
|
|
19
|
+
xmlns:def="org.blockml.bml.definition"
|
|
20
|
+
xmlns:parser="org.blockml.bml.compiler.parser"
|
|
21
|
+
xmlns:parcap="org.blockml.bml.compiler.parser.capability"
|
|
22
|
+
xmlns:parconfig="org.blockml.bml.compiler.parser.config"
|
|
23
|
+
xmlns:pardocumentation="org.blockml.bml.compiler.parser.documentation"
|
|
24
|
+
xmlns:parmap="org.blockml.bml.compiler.parser.map"
|
|
25
|
+
xmlns:type="org.blockml.bml.type"
|
|
26
|
+
xmlns:doc="org.blockml.bml.documentation">
|
|
27
|
+
|
|
28
|
+
<name>MemberMapping</name>
|
|
29
|
+
<type>pardocumentation:MemberMapping</type>
|
|
30
|
+
<baseType>core:Documentation</baseType>
|
|
31
|
+
<is>Member definition and composition mapping</is>
|
|
32
|
+
|
|
33
|
+
<documentation>Property/aggregation/association/capability members:
|
|
34
|
+
• Element QName = member identity (deprecated namespace= attr → error)
|
|
35
|
+
• type attribute → TypeExpression; value/memberValues for properties
|
|
36
|
+
• Composition under aggregation member elements (not standalone <composition>)
|
|
37
|
+
• Constraints/suggestions → BlockInstance[] in document order
|
|
38
|
+
• Sub-Blocks and embedded blocks → nested BlockDefinition trees
|
|
39
|
+
• Redundant aggregation type on override → validator warning B19; parser must not apply
|
|
40
|
+
|
|
41
|
+
Directives on composition: bml:each, bml:if, bml:unless, bml:with — stored unexpanded.</documentation>
|
|
42
|
+
|
|
43
|
+
<references>
|
|
44
|
+
<see type="pardocumentation:ExpressionCapture" relation="ReadNext"></see>
|
|
45
|
+
<see type="parcap:MapBlockInstanceNode" relation="SeeAlso"></see>
|
|
46
|
+
</references>
|
|
47
|
+
|
|
48
|
+
</block>
|