@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.
Files changed (139) hide show
  1. package/blocks/org/blockml/bml/compiler/parser/Library.bml +143 -0
  2. package/blocks/org/blockml/bml/compiler/parser/ParserType.bml +40 -0
  3. package/blocks/org/blockml/bml/compiler/parser/README.bml +68 -0
  4. package/blocks/org/blockml/bml/compiler/parser/capability/AssertBlockRoot.bml +45 -0
  5. package/blocks/org/blockml/bml/compiler/parser/capability/BuildSubBlockIndex.bml +43 -0
  6. package/blocks/org/blockml/bml/compiler/parser/capability/CollectLeadingComments.bml +50 -0
  7. package/blocks/org/blockml/bml/compiler/parser/capability/CollectTrailingComments.bml +50 -0
  8. package/blocks/org/blockml/bml/compiler/parser/capability/CreateMapContext.bml +56 -0
  9. package/blocks/org/blockml/bml/compiler/parser/capability/DetectFormat.bml +47 -0
  10. package/blocks/org/blockml/bml/compiler/parser/capability/DocumentElement.bml +43 -0
  11. package/blocks/org/blockml/bml/compiler/parser/capability/ElementChildren.bml +43 -0
  12. package/blocks/org/blockml/bml/compiler/parser/capability/ElementLocalName.bml +43 -0
  13. package/blocks/org/blockml/bml/compiler/parser/capability/ElementPrefix.bml +43 -0
  14. package/blocks/org/blockml/bml/compiler/parser/capability/ElementSourceLoc.bml +46 -0
  15. package/blocks/org/blockml/bml/compiler/parser/capability/ExpressionFromRaw.bml +46 -0
  16. package/blocks/org/blockml/bml/compiler/parser/capability/ExtractNamespaceBindings.bml +47 -0
  17. package/blocks/org/blockml/bml/compiler/parser/capability/FqnToQName.bml +46 -0
  18. package/blocks/org/blockml/bml/compiler/parser/capability/GetAttribute.bml +46 -0
  19. package/blocks/org/blockml/bml/compiler/parser/capability/GetCharacterData.bml +43 -0
  20. package/blocks/org/blockml/bml/compiler/parser/capability/GetParseErrors.bml +43 -0
  21. package/blocks/org/blockml/bml/compiler/parser/capability/HasBmlSemanticQNameBindings.bml +43 -0
  22. package/blocks/org/blockml/bml/compiler/parser/capability/InferCardinality.bml +43 -0
  23. package/blocks/org/blockml/bml/compiler/parser/capability/IsBooleanLiteral.bml +43 -0
  24. package/blocks/org/blockml/bml/compiler/parser/capability/IsCData.bml +43 -0
  25. package/blocks/org/blockml/bml/compiler/parser/capability/IsComment.bml +43 -0
  26. package/blocks/org/blockml/bml/compiler/parser/capability/IsElement.bml +43 -0
  27. package/blocks/org/blockml/bml/compiler/parser/capability/IsTextNode.bml +43 -0
  28. package/blocks/org/blockml/bml/compiler/parser/capability/IsTypeReferenceEntitySugar.bml +43 -0
  29. package/blocks/org/blockml/bml/compiler/parser/capability/MapBlock.bml +50 -0
  30. package/blocks/org/blockml/bml/compiler/parser/capability/MapBlockInstanceNode.bml +46 -0
  31. package/blocks/org/blockml/bml/compiler/parser/capability/MapCompositionTemplate.bml +46 -0
  32. package/blocks/org/blockml/bml/compiler/parser/capability/MapDocumentBlock.bml +54 -0
  33. package/blocks/org/blockml/bml/compiler/parser/capability/MapTypeReferenceEntityInstance.bml +46 -0
  34. package/blocks/org/blockml/bml/compiler/parser/capability/MergeSourceInfo.bml +49 -0
  35. package/blocks/org/blockml/bml/compiler/parser/capability/NormalizeBooleanValue.bml +43 -0
  36. package/blocks/org/blockml/bml/compiler/parser/capability/Parse.bml +52 -0
  37. package/blocks/org/blockml/bml/compiler/parser/capability/ParseBmlMeta.bml +43 -0
  38. package/blocks/org/blockml/bml/compiler/parser/capability/ParseBooleanAttribute.bml +43 -0
  39. package/blocks/org/blockml/bml/compiler/parser/capability/ParseDirectives.bml +50 -0
  40. package/blocks/org/blockml/bml/compiler/parser/capability/ParseMemberValue.bml +50 -0
  41. package/blocks/org/blockml/bml/compiler/parser/capability/ParseTypeExpression.bml +53 -0
  42. package/blocks/org/blockml/bml/compiler/parser/capability/ParseVisibilityFromName.bml +47 -0
  43. package/blocks/org/blockml/bml/compiler/parser/capability/ParseXmlDom.bml +47 -0
  44. package/blocks/org/blockml/bml/compiler/parser/capability/ResolveBlockReference.bml +53 -0
  45. package/blocks/org/blockml/bml/compiler/parser/capability/ResolvePrefix.bml +46 -0
  46. package/blocks/org/blockml/bml/compiler/parser/capability/ResolveTypeName.bml +53 -0
  47. package/blocks/org/blockml/bml/compiler/parser/capability/SourceLoc.bml +49 -0
  48. package/blocks/org/blockml/bml/compiler/parser/capability/SplitQName.bml +43 -0
  49. package/blocks/org/blockml/bml/compiler/parser/capability/TrimText.bml +43 -0
  50. package/blocks/org/blockml/bml/compiler/parser/capability/TypeExpressionToString.bml +43 -0
  51. package/blocks/org/blockml/bml/compiler/parser/capability/VisibilityPrefix.bml +43 -0
  52. package/blocks/org/blockml/bml/compiler/parser/capability/XmlTriviaFromElement.bml +47 -0
  53. package/blocks/org/blockml/bml/compiler/parser/config/MapTimeDiagnosticCodes.bml +40 -0
  54. package/blocks/org/blockml/bml/compiler/parser/config/ParserConstants.bml +49 -0
  55. package/blocks/org/blockml/bml/compiler/parser/documentation/ArchitectureOverview.bml +61 -0
  56. package/blocks/org/blockml/bml/compiler/parser/documentation/AttributeClassification.bml +56 -0
  57. package/blocks/org/blockml/bml/compiler/parser/documentation/BlockMetadataMapping.bml +51 -0
  58. package/blocks/org/blockml/bml/compiler/parser/documentation/DesignDecisions.bml +53 -0
  59. package/blocks/org/blockml/bml/compiler/parser/documentation/Diagnostics.bml +52 -0
  60. package/blocks/org/blockml/bml/compiler/parser/documentation/ExpressionCapture.bml +46 -0
  61. package/blocks/org/blockml/bml/compiler/parser/documentation/Introduction.bml +52 -0
  62. package/blocks/org/blockml/bml/compiler/parser/documentation/LayerSeparation.bml +55 -0
  63. package/blocks/org/blockml/bml/compiler/parser/documentation/MappingPrinciples.bml +48 -0
  64. package/blocks/org/blockml/bml/compiler/parser/documentation/MemberMapping.bml +48 -0
  65. package/blocks/org/blockml/bml/compiler/parser/documentation/MemberMappingOrder.bml +46 -0
  66. package/blocks/org/blockml/bml/compiler/parser/documentation/PackageOwnership.bml +50 -0
  67. package/blocks/org/blockml/bml/compiler/parser/documentation/PublicApi.bml +58 -0
  68. package/blocks/org/blockml/bml/compiler/parser/documentation/RoundtripContract.bml +50 -0
  69. package/blocks/org/blockml/bml/compiler/parser/documentation/ScopeExclusions.bml +49 -0
  70. package/blocks/org/blockml/bml/compiler/parser/documentation/SingleFileScope.bml +47 -0
  71. package/blocks/org/blockml/bml/compiler/parser/documentation/TypeDescriptorParsing.bml +47 -0
  72. package/blocks/org/blockml/bml/compiler/parser/documentation/V1Scope.bml +48 -0
  73. package/blocks/org/blockml/bml/compiler/parser/documentation/XmlCommentsParse.bml +48 -0
  74. package/blocks/org/blockml/bml/compiler/parser/map/MapContext.bml +58 -0
  75. package/dist/index.d.ts +2 -0
  76. package/dist/index.d.ts.map +1 -0
  77. package/dist/index.js +2 -0
  78. package/dist/index.js.map +1 -0
  79. package/dist/map/context.d.ts +16 -0
  80. package/dist/map/context.d.ts.map +1 -0
  81. package/dist/map/context.js +15 -0
  82. package/dist/map/context.js.map +1 -0
  83. package/dist/map/directives.d.ts +23 -0
  84. package/dist/map/directives.d.ts.map +1 -0
  85. package/dist/map/directives.js +89 -0
  86. package/dist/map/directives.js.map +1 -0
  87. package/dist/map/map-block.d.ts +6 -0
  88. package/dist/map/map-block.d.ts.map +1 -0
  89. package/dist/map/map-block.js +792 -0
  90. package/dist/map/map-block.js.map +1 -0
  91. package/dist/map/map-composition.d.ts +23 -0
  92. package/dist/map/map-composition.d.ts.map +1 -0
  93. package/dist/map/map-composition.js +241 -0
  94. package/dist/map/map-composition.js.map +1 -0
  95. package/dist/map/member-value.d.ts +4 -0
  96. package/dist/map/member-value.d.ts.map +1 -0
  97. package/dist/map/member-value.js +69 -0
  98. package/dist/map/member-value.js.map +1 -0
  99. package/dist/map/type-expression.d.ts +6 -0
  100. package/dist/map/type-expression.d.ts.map +1 -0
  101. package/dist/map/type-expression.js +266 -0
  102. package/dist/map/type-expression.js.map +1 -0
  103. package/dist/parse.d.ts +3 -0
  104. package/dist/parse.d.ts.map +1 -0
  105. package/dist/parse.js +80 -0
  106. package/dist/parse.js.map +1 -0
  107. package/dist/pipeline/format-detect.d.ts +2 -0
  108. package/dist/pipeline/format-detect.d.ts.map +1 -0
  109. package/dist/pipeline/format-detect.js +8 -0
  110. package/dist/pipeline/format-detect.js.map +1 -0
  111. package/dist/pipeline/namespaces.d.ts +7 -0
  112. package/dist/pipeline/namespaces.d.ts.map +1 -0
  113. package/dist/pipeline/namespaces.js +45 -0
  114. package/dist/pipeline/namespaces.js.map +1 -0
  115. package/dist/pipeline/root-type.d.ts +3 -0
  116. package/dist/pipeline/root-type.d.ts.map +1 -0
  117. package/dist/pipeline/root-type.js +8 -0
  118. package/dist/pipeline/root-type.js.map +1 -0
  119. package/dist/pipeline/xml-dom.d.ts +5 -0
  120. package/dist/pipeline/xml-dom.d.ts.map +1 -0
  121. package/dist/pipeline/xml-dom.js +20 -0
  122. package/dist/pipeline/xml-dom.js.map +1 -0
  123. package/dist/util/boolean.d.ts +4 -0
  124. package/dist/util/boolean.d.ts.map +1 -0
  125. package/dist/util/boolean.js +18 -0
  126. package/dist/util/boolean.js.map +1 -0
  127. package/dist/util/qname.d.ts +17 -0
  128. package/dist/util/qname.d.ts.map +1 -0
  129. package/dist/util/qname.js +189 -0
  130. package/dist/util/qname.js.map +1 -0
  131. package/dist/util/visibility.d.ts +7 -0
  132. package/dist/util/visibility.d.ts.map +1 -0
  133. package/dist/util/visibility.js +20 -0
  134. package/dist/util/visibility.js.map +1 -0
  135. package/dist/util/xml.d.ts +25 -0
  136. package/dist/util/xml.d.ts.map +1 -0
  137. package/dist/util/xml.js +133 -0
  138. package/dist/util/xml.js.map +1 -0
  139. 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>