sysmlpy 0.1.0__py3-none-any.whl
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.
- sysmlpy/__init__.py +226 -0
- sysmlpy/__main__.py +75 -0
- sysmlpy/antlr/README.md +146 -0
- sysmlpy/antlr/SysMLv2Lexer.interp +695 -0
- sysmlpy/antlr/SysMLv2Lexer.py +1123 -0
- sysmlpy/antlr/SysMLv2Lexer.tokens +444 -0
- sysmlpy/antlr/SysMLv2Parser.interp +960 -0
- sysmlpy/antlr/SysMLv2Parser.py +40750 -0
- sysmlpy/antlr/SysMLv2Parser.tokens +444 -0
- sysmlpy/antlr/SysMLv2ParserListener.py +4485 -0
- sysmlpy/antlr/SysMLv2ParserVisitor.py +2498 -0
- sysmlpy/antlr/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.interp +695 -0
- sysmlpy/antlr/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.py +1123 -0
- sysmlpy/antlr/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.tokens +444 -0
- sysmlpy/antlr_parser.py +185 -0
- sysmlpy/antlr_visitor.py +10864 -0
- sysmlpy/definition.py +1115 -0
- sysmlpy/examples/attribute_values.py +161 -0
- sysmlpy/examples/part_attributes.py +139 -0
- sysmlpy/examples/tuples_sequences.py +231 -0
- sysmlpy/formatting.py +47 -0
- sysmlpy/grammar/antlr4/README.md +30 -0
- sysmlpy/grammar/antlr4/SysMLv2Lexer.g4 +931 -0
- sysmlpy/grammar/antlr4/SysMLv2Lexer.interp +695 -0
- sysmlpy/grammar/antlr4/SysMLv2Lexer.py +1123 -0
- sysmlpy/grammar/antlr4/SysMLv2Lexer.tokens +444 -0
- sysmlpy/grammar/antlr4/SysMLv2Parser.g4 +2432 -0
- sysmlpy/grammar/antlr4/SysMLv2Parser.interp +960 -0
- sysmlpy/grammar/antlr4/SysMLv2Parser.py +40750 -0
- sysmlpy/grammar/antlr4/SysMLv2Parser.tokens +444 -0
- sysmlpy/grammar/antlr4/SysMLv2ParserListener.py +4485 -0
- sysmlpy/grammar/antlr4/SysMLv2ParserVisitor.py +2498 -0
- sysmlpy/grammar/antlr4/desc.xml +7 -0
- sysmlpy/grammar/antlr4/examples/camera.sysml +14 -0
- sysmlpy/grammar/antlr4/examples/toaster-system.sysml +193 -0
- sysmlpy/grammar/antlr4/examples/vehicle-model.sysml +118 -0
- sysmlpy/grammar/antlr4/pom.xml +59 -0
- sysmlpy/grammar/classes.py +8610 -0
- sysmlpy/library/LICENSE +165 -0
- sysmlpy/library/README.md +52 -0
- sysmlpy/library/__init__.py +0 -0
- sysmlpy/library/domain/Analysis/AnalysisTooling.sysml +34 -0
- sysmlpy/library/domain/Analysis/SampledFunctions.sysml +119 -0
- sysmlpy/library/domain/Analysis/StateSpaceRepresentation.sysml +143 -0
- sysmlpy/library/domain/Analysis/TradeStudies.sysml +171 -0
- sysmlpy/library/domain/Cause and Effect/CausationConnections.sysml +83 -0
- sysmlpy/library/domain/Cause and Effect/CauseAndEffect.sysml +81 -0
- sysmlpy/library/domain/Geometry/ShapeItems.sysml +899 -0
- sysmlpy/library/domain/Geometry/SpatialItems.sysml +168 -0
- sysmlpy/library/domain/Metadata/ImageMetadata.sysml +78 -0
- sysmlpy/library/domain/Metadata/ModelingMetadata.sysml +143 -0
- sysmlpy/library/domain/Metadata/ParametersOfInterestMetadata.sysml +39 -0
- sysmlpy/library/domain/Metadata/RiskMetadata.sysml +100 -0
- sysmlpy/library/domain/Quantities and Units/ISQ.sysml +42 -0
- sysmlpy/library/domain/Quantities and Units/ISQAcoustics.sysml +439 -0
- sysmlpy/library/domain/Quantities and Units/ISQAtomicNuclear.sysml +2726 -0
- sysmlpy/library/domain/Quantities and Units/ISQBase.sysml +206 -0
- sysmlpy/library/domain/Quantities and Units/ISQCharacteristicNumbers.sysml +1991 -0
- sysmlpy/library/domain/Quantities and Units/ISQChemistryMolecular.sysml +1353 -0
- sysmlpy/library/domain/Quantities and Units/ISQCondensedMatter.sysml +1223 -0
- sysmlpy/library/domain/Quantities and Units/ISQElectromagnetism.sysml +2333 -0
- sysmlpy/library/domain/Quantities and Units/ISQInformation.sysml +958 -0
- sysmlpy/library/domain/Quantities and Units/ISQLight.sysml +1537 -0
- sysmlpy/library/domain/Quantities and Units/ISQMechanics.sysml +1564 -0
- sysmlpy/library/domain/Quantities and Units/ISQSpaceTime.sysml +1169 -0
- sysmlpy/library/domain/Quantities and Units/ISQThermodynamics.sysml +1256 -0
- sysmlpy/library/domain/Quantities and Units/MeasurementRefCalculations.sysml +30 -0
- sysmlpy/library/domain/Quantities and Units/MeasurementReferences.sysml +526 -0
- sysmlpy/library/domain/Quantities and Units/Quantities.sysml +107 -0
- sysmlpy/library/domain/Quantities and Units/QuantityCalculations.sysml +70 -0
- sysmlpy/library/domain/Quantities and Units/SI.sysml +378 -0
- sysmlpy/library/domain/Quantities and Units/SIPrefixes.sysml +48 -0
- sysmlpy/library/domain/Quantities and Units/TensorCalculations.sysml +50 -0
- sysmlpy/library/domain/Quantities and Units/Time.sysml +274 -0
- sysmlpy/library/domain/Quantities and Units/USCustomaryUnits.sysml +260 -0
- sysmlpy/library/domain/Quantities and Units/VectorCalculations.sysml +62 -0
- sysmlpy/library/domain/Requirement Derivation/DerivationConnections.sysml +63 -0
- sysmlpy/library/domain/Requirement Derivation/RequirementDerivation.sysml +39 -0
- sysmlpy/library/kernel/Base.kerml +95 -0
- sysmlpy/library/kernel/BaseFunctions.kerml +80 -0
- sysmlpy/library/kernel/BooleanFunctions.kerml +22 -0
- sysmlpy/library/kernel/Clocks.kerml +156 -0
- sysmlpy/library/kernel/CollectionFunctions.kerml +68 -0
- sysmlpy/library/kernel/Collections.kerml +147 -0
- sysmlpy/library/kernel/ComplexFunctions.kerml +47 -0
- sysmlpy/library/kernel/ControlFunctions.kerml +117 -0
- sysmlpy/library/kernel/ControlPerformances.kerml +135 -0
- sysmlpy/library/kernel/DataFunctions.kerml +43 -0
- sysmlpy/library/kernel/FeatureReferencingPerformances.kerml +190 -0
- sysmlpy/library/kernel/IntegerFunctions.kerml +43 -0
- sysmlpy/library/kernel/KerML.kerml +483 -0
- sysmlpy/library/kernel/Links.kerml +67 -0
- sysmlpy/library/kernel/Metaobjects.kerml +58 -0
- sysmlpy/library/kernel/NaturalFunctions.kerml +27 -0
- sysmlpy/library/kernel/NumericalFunctions.kerml +43 -0
- sysmlpy/library/kernel/Objects.kerml +212 -0
- sysmlpy/library/kernel/Observation.kerml +161 -0
- sysmlpy/library/kernel/OccurrenceFunctions.kerml +154 -0
- sysmlpy/library/kernel/Occurrences.kerml +992 -0
- sysmlpy/library/kernel/Performances.kerml +293 -0
- sysmlpy/library/kernel/RationalFunctions.kerml +49 -0
- sysmlpy/library/kernel/RealFunctions.kerml +56 -0
- sysmlpy/library/kernel/ScalarFunctions.kerml +33 -0
- sysmlpy/library/kernel/ScalarValues.kerml +23 -0
- sysmlpy/library/kernel/SequenceFunctions.kerml +111 -0
- sysmlpy/library/kernel/SpatialFrames.kerml +197 -0
- sysmlpy/library/kernel/StatePerformances.kerml +145 -0
- sysmlpy/library/kernel/StringFunctions.kerml +25 -0
- sysmlpy/library/kernel/Transfers.kerml +281 -0
- sysmlpy/library/kernel/TransitionPerformances.kerml +66 -0
- sysmlpy/library/kernel/TrigFunctions.kerml +35 -0
- sysmlpy/library/kernel/Triggers.kerml +188 -0
- sysmlpy/library/kernel/VectorFunctions.kerml +273 -0
- sysmlpy/library/kernel/VectorValues.kerml +64 -0
- sysmlpy/library/systems/Actions.sysml +552 -0
- sysmlpy/library/systems/Allocations.sysml +29 -0
- sysmlpy/library/systems/AnalysisCases.sysml +38 -0
- sysmlpy/library/systems/Attributes.sysml +25 -0
- sysmlpy/library/systems/Calculations.sysml +37 -0
- sysmlpy/library/systems/Cases.sysml +71 -0
- sysmlpy/library/systems/Connections.sysml +60 -0
- sysmlpy/library/systems/Constraints.sysml +44 -0
- sysmlpy/library/systems/Flows.sysml +126 -0
- sysmlpy/library/systems/Interfaces.sysml +89 -0
- sysmlpy/library/systems/Items.sysml +153 -0
- sysmlpy/library/systems/Metadata.sysml +32 -0
- sysmlpy/library/systems/Parts.sysml +81 -0
- sysmlpy/library/systems/Ports.sysml +54 -0
- sysmlpy/library/systems/Requirements.sysml +194 -0
- sysmlpy/library/systems/StandardViewDefinitions.sysml +123 -0
- sysmlpy/library/systems/States.sysml +103 -0
- sysmlpy/library/systems/SysML.sysml +539 -0
- sysmlpy/library/systems/UseCases.sysml +57 -0
- sysmlpy/library/systems/VerificationCases.sysml +103 -0
- sysmlpy/library/systems/Views.sysml +164 -0
- sysmlpy/navigate.py +272 -0
- sysmlpy/store.py +547 -0
- sysmlpy/usage.py +2978 -0
- sysmlpy-0.1.0.dist-info/METADATA +230 -0
- sysmlpy-0.1.0.dist-info/RECORD +143 -0
- sysmlpy-0.1.0.dist-info/WHEEL +4 -0
- sysmlpy-0.1.0.dist-info/entry_points.txt +3 -0
- sysmlpy-0.1.0.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,444 @@
|
|
|
1
|
+
ABOUT=1
|
|
2
|
+
ABSTRACT=2
|
|
3
|
+
ACCEPT=3
|
|
4
|
+
ACTION=4
|
|
5
|
+
ACTOR=5
|
|
6
|
+
AFTER=6
|
|
7
|
+
ALIAS=7
|
|
8
|
+
ALL=8
|
|
9
|
+
ALLOCATE=9
|
|
10
|
+
ALLOCATION=10
|
|
11
|
+
ANALYSIS=11
|
|
12
|
+
AND=12
|
|
13
|
+
AS=13
|
|
14
|
+
ASSERT=14
|
|
15
|
+
ASSIGN=15
|
|
16
|
+
ASSOC=16
|
|
17
|
+
ASSUME=17
|
|
18
|
+
AT=18
|
|
19
|
+
ATTRIBUTE=19
|
|
20
|
+
BEHAVIOR=20
|
|
21
|
+
BIND=21
|
|
22
|
+
BINDING=22
|
|
23
|
+
BOOL=23
|
|
24
|
+
BY=24
|
|
25
|
+
CALC=25
|
|
26
|
+
CASE=26
|
|
27
|
+
CHAINS=27
|
|
28
|
+
CLASS=28
|
|
29
|
+
CLASSIFIER=29
|
|
30
|
+
COMMENT=30
|
|
31
|
+
COMPOSITE=31
|
|
32
|
+
CONCERN=32
|
|
33
|
+
CONJUGATE=33
|
|
34
|
+
CONJUGATES=34
|
|
35
|
+
CONJUGATION=35
|
|
36
|
+
CONNECT=36
|
|
37
|
+
CONNECTION=37
|
|
38
|
+
CONNECTOR=38
|
|
39
|
+
CONST=39
|
|
40
|
+
CONSTANT=40
|
|
41
|
+
CONSTRAINT=41
|
|
42
|
+
CROSSES=42
|
|
43
|
+
DATATYPE=43
|
|
44
|
+
DECIDE=44
|
|
45
|
+
DEF=45
|
|
46
|
+
DEFAULT=46
|
|
47
|
+
DEFINED=47
|
|
48
|
+
DEPENDENCY=48
|
|
49
|
+
DERIVED=49
|
|
50
|
+
DIFFERENCES=50
|
|
51
|
+
DISJOINING=51
|
|
52
|
+
DISJOINT=52
|
|
53
|
+
DO=53
|
|
54
|
+
DOC=54
|
|
55
|
+
ELSE=55
|
|
56
|
+
END=56
|
|
57
|
+
ENTRY=57
|
|
58
|
+
ENUM=58
|
|
59
|
+
EVENT=59
|
|
60
|
+
EXHIBIT=60
|
|
61
|
+
EXIT=61
|
|
62
|
+
EXPOSE=62
|
|
63
|
+
EXPR=63
|
|
64
|
+
FALSE=64
|
|
65
|
+
FEATURE=65
|
|
66
|
+
FEATURED=66
|
|
67
|
+
FEATURING=67
|
|
68
|
+
FILTER=68
|
|
69
|
+
FIRST=69
|
|
70
|
+
FLOW=70
|
|
71
|
+
FOR=71
|
|
72
|
+
FORK=72
|
|
73
|
+
FRAME=73
|
|
74
|
+
FROM=74
|
|
75
|
+
FUNCTION=75
|
|
76
|
+
HASTYPE=76
|
|
77
|
+
IF=77
|
|
78
|
+
IMPLIES=78
|
|
79
|
+
IMPORT=79
|
|
80
|
+
IN=80
|
|
81
|
+
INCLUDE=81
|
|
82
|
+
INDIVIDUAL=82
|
|
83
|
+
INOUT=83
|
|
84
|
+
INTERACTION=84
|
|
85
|
+
INTERFACE=85
|
|
86
|
+
INTERSECTS=86
|
|
87
|
+
INV=87
|
|
88
|
+
INVERSE=88
|
|
89
|
+
INVERTING=89
|
|
90
|
+
ISTYPE=90
|
|
91
|
+
ITEM=91
|
|
92
|
+
JOIN=92
|
|
93
|
+
LANGUAGE=93
|
|
94
|
+
LIBRARY=94
|
|
95
|
+
LOCALE=95
|
|
96
|
+
LOOP=96
|
|
97
|
+
MEMBER=97
|
|
98
|
+
MERGE=98
|
|
99
|
+
MESSAGE=99
|
|
100
|
+
META=100
|
|
101
|
+
METACLASS=101
|
|
102
|
+
METADATA=102
|
|
103
|
+
MULTIPLICITY=103
|
|
104
|
+
NAMESPACE=104
|
|
105
|
+
NEW=105
|
|
106
|
+
NONUNIQUE=106
|
|
107
|
+
NOT=107
|
|
108
|
+
NULL=108
|
|
109
|
+
OBJECTIVE=109
|
|
110
|
+
OCCURRENCE=110
|
|
111
|
+
OF=111
|
|
112
|
+
OR=112
|
|
113
|
+
ORDERED=113
|
|
114
|
+
OUT=114
|
|
115
|
+
PACKAGE=115
|
|
116
|
+
PARALLEL=116
|
|
117
|
+
PART=117
|
|
118
|
+
PERFORM=118
|
|
119
|
+
PORT=119
|
|
120
|
+
PORTION=120
|
|
121
|
+
PREDICATE=121
|
|
122
|
+
PRIVATE=122
|
|
123
|
+
PROTECTED=123
|
|
124
|
+
PUBLIC=124
|
|
125
|
+
REDEFINES=125
|
|
126
|
+
REDEFINITION=126
|
|
127
|
+
REF=127
|
|
128
|
+
REFERENCES=128
|
|
129
|
+
RENDER=129
|
|
130
|
+
RENDERING=130
|
|
131
|
+
REP=131
|
|
132
|
+
REQUIRE=132
|
|
133
|
+
REQUIREMENT=133
|
|
134
|
+
RETURN=134
|
|
135
|
+
SATISFY=135
|
|
136
|
+
SEND=136
|
|
137
|
+
SNAPSHOT=137
|
|
138
|
+
SPECIALIZATION=138
|
|
139
|
+
SPECIALIZES=139
|
|
140
|
+
STAKEHOLDER=140
|
|
141
|
+
STANDARD=141
|
|
142
|
+
STATE=142
|
|
143
|
+
STEP=143
|
|
144
|
+
STRUCT=144
|
|
145
|
+
SUBCLASSIFIER=145
|
|
146
|
+
SUBJECT=146
|
|
147
|
+
SUBSET=147
|
|
148
|
+
SUBSETS=148
|
|
149
|
+
SUBTYPE=149
|
|
150
|
+
SUCCESSION=150
|
|
151
|
+
TERMINATE=151
|
|
152
|
+
THEN=152
|
|
153
|
+
TIMESLICE=153
|
|
154
|
+
TO=154
|
|
155
|
+
TRANSITION=155
|
|
156
|
+
TRUE=156
|
|
157
|
+
TYPE=157
|
|
158
|
+
TYPED=158
|
|
159
|
+
TYPING=159
|
|
160
|
+
UNIONS=160
|
|
161
|
+
UNTIL=161
|
|
162
|
+
USE=162
|
|
163
|
+
VAR=163
|
|
164
|
+
VARIANT=164
|
|
165
|
+
VARIATION=165
|
|
166
|
+
VERIFICATION=166
|
|
167
|
+
VERIFY=167
|
|
168
|
+
VIA=168
|
|
169
|
+
VIEW=169
|
|
170
|
+
VIEWPOINT=170
|
|
171
|
+
WHEN=171
|
|
172
|
+
WHILE=172
|
|
173
|
+
XOR=173
|
|
174
|
+
BANG_EQ_EQ=174
|
|
175
|
+
COLON_COLON_GT=175
|
|
176
|
+
COLON_GT_GT=176
|
|
177
|
+
EQ_EQ_EQ=177
|
|
178
|
+
BANG_EQ=178
|
|
179
|
+
STAR_STAR=179
|
|
180
|
+
ARROW=180
|
|
181
|
+
DOT_DOT=181
|
|
182
|
+
DOT_QUESTION=182
|
|
183
|
+
COLON_COLON=183
|
|
184
|
+
COLON_EQ=184
|
|
185
|
+
COLON_GT=185
|
|
186
|
+
LE=186
|
|
187
|
+
EQ_EQ=187
|
|
188
|
+
FAT_ARROW=188
|
|
189
|
+
GE=189
|
|
190
|
+
QUESTION_QUESTION=190
|
|
191
|
+
AT_AT=191
|
|
192
|
+
HASH=192
|
|
193
|
+
DOLLAR=193
|
|
194
|
+
PERCENT=194
|
|
195
|
+
AMP=195
|
|
196
|
+
LPAREN=196
|
|
197
|
+
RPAREN=197
|
|
198
|
+
STAR=198
|
|
199
|
+
PLUS=199
|
|
200
|
+
COMMA=200
|
|
201
|
+
MINUS=201
|
|
202
|
+
DOT=202
|
|
203
|
+
SLASH=203
|
|
204
|
+
COLON=204
|
|
205
|
+
SEMI=205
|
|
206
|
+
LT=206
|
|
207
|
+
EQ=207
|
|
208
|
+
GT=208
|
|
209
|
+
QUESTION=209
|
|
210
|
+
AT_SIGN=210
|
|
211
|
+
LBRACK=211
|
|
212
|
+
RBRACK=212
|
|
213
|
+
CARET=213
|
|
214
|
+
LBRACE=214
|
|
215
|
+
PIPE=215
|
|
216
|
+
RBRACE=216
|
|
217
|
+
TILDE=217
|
|
218
|
+
IDENTIFIER=218
|
|
219
|
+
STRING=219
|
|
220
|
+
DOUBLE_STRING=220
|
|
221
|
+
INTEGER=221
|
|
222
|
+
REAL=222
|
|
223
|
+
REGULAR_COMMENT=223
|
|
224
|
+
SINGLE_LINE_NOTE=224
|
|
225
|
+
BARE_LINE_COMMENT=225
|
|
226
|
+
WS=226
|
|
227
|
+
'about'=1
|
|
228
|
+
'abstract'=2
|
|
229
|
+
'accept'=3
|
|
230
|
+
'action'=4
|
|
231
|
+
'actor'=5
|
|
232
|
+
'after'=6
|
|
233
|
+
'alias'=7
|
|
234
|
+
'all'=8
|
|
235
|
+
'allocate'=9
|
|
236
|
+
'allocation'=10
|
|
237
|
+
'analysis'=11
|
|
238
|
+
'and'=12
|
|
239
|
+
'as'=13
|
|
240
|
+
'assert'=14
|
|
241
|
+
'assign'=15
|
|
242
|
+
'assoc'=16
|
|
243
|
+
'assume'=17
|
|
244
|
+
'at'=18
|
|
245
|
+
'attribute'=19
|
|
246
|
+
'behavior'=20
|
|
247
|
+
'bind'=21
|
|
248
|
+
'binding'=22
|
|
249
|
+
'bool'=23
|
|
250
|
+
'by'=24
|
|
251
|
+
'calc'=25
|
|
252
|
+
'case'=26
|
|
253
|
+
'chains'=27
|
|
254
|
+
'class'=28
|
|
255
|
+
'classifier'=29
|
|
256
|
+
'comment'=30
|
|
257
|
+
'composite'=31
|
|
258
|
+
'concern'=32
|
|
259
|
+
'conjugate'=33
|
|
260
|
+
'conjugates'=34
|
|
261
|
+
'conjugation'=35
|
|
262
|
+
'connect'=36
|
|
263
|
+
'connection'=37
|
|
264
|
+
'connector'=38
|
|
265
|
+
'const'=39
|
|
266
|
+
'constant'=40
|
|
267
|
+
'constraint'=41
|
|
268
|
+
'crosses'=42
|
|
269
|
+
'datatype'=43
|
|
270
|
+
'decide'=44
|
|
271
|
+
'def'=45
|
|
272
|
+
'default'=46
|
|
273
|
+
'defined'=47
|
|
274
|
+
'dependency'=48
|
|
275
|
+
'derived'=49
|
|
276
|
+
'differences'=50
|
|
277
|
+
'disjoining'=51
|
|
278
|
+
'disjoint'=52
|
|
279
|
+
'do'=53
|
|
280
|
+
'doc'=54
|
|
281
|
+
'else'=55
|
|
282
|
+
'end'=56
|
|
283
|
+
'entry'=57
|
|
284
|
+
'enum'=58
|
|
285
|
+
'event'=59
|
|
286
|
+
'exhibit'=60
|
|
287
|
+
'exit'=61
|
|
288
|
+
'expose'=62
|
|
289
|
+
'expr'=63
|
|
290
|
+
'false'=64
|
|
291
|
+
'feature'=65
|
|
292
|
+
'featured'=66
|
|
293
|
+
'featuring'=67
|
|
294
|
+
'filter'=68
|
|
295
|
+
'first'=69
|
|
296
|
+
'flow'=70
|
|
297
|
+
'for'=71
|
|
298
|
+
'fork'=72
|
|
299
|
+
'frame'=73
|
|
300
|
+
'from'=74
|
|
301
|
+
'function'=75
|
|
302
|
+
'hastype'=76
|
|
303
|
+
'if'=77
|
|
304
|
+
'implies'=78
|
|
305
|
+
'import'=79
|
|
306
|
+
'in'=80
|
|
307
|
+
'include'=81
|
|
308
|
+
'individual'=82
|
|
309
|
+
'inout'=83
|
|
310
|
+
'interaction'=84
|
|
311
|
+
'interface'=85
|
|
312
|
+
'intersects'=86
|
|
313
|
+
'inv'=87
|
|
314
|
+
'inverse'=88
|
|
315
|
+
'inverting'=89
|
|
316
|
+
'istype'=90
|
|
317
|
+
'item'=91
|
|
318
|
+
'join'=92
|
|
319
|
+
'language'=93
|
|
320
|
+
'library'=94
|
|
321
|
+
'locale'=95
|
|
322
|
+
'loop'=96
|
|
323
|
+
'member'=97
|
|
324
|
+
'merge'=98
|
|
325
|
+
'message'=99
|
|
326
|
+
'meta'=100
|
|
327
|
+
'metaclass'=101
|
|
328
|
+
'metadata'=102
|
|
329
|
+
'multiplicity'=103
|
|
330
|
+
'namespace'=104
|
|
331
|
+
'new'=105
|
|
332
|
+
'nonunique'=106
|
|
333
|
+
'not'=107
|
|
334
|
+
'null'=108
|
|
335
|
+
'objective'=109
|
|
336
|
+
'occurrence'=110
|
|
337
|
+
'of'=111
|
|
338
|
+
'or'=112
|
|
339
|
+
'ordered'=113
|
|
340
|
+
'out'=114
|
|
341
|
+
'package'=115
|
|
342
|
+
'parallel'=116
|
|
343
|
+
'part'=117
|
|
344
|
+
'perform'=118
|
|
345
|
+
'port'=119
|
|
346
|
+
'portion'=120
|
|
347
|
+
'predicate'=121
|
|
348
|
+
'private'=122
|
|
349
|
+
'protected'=123
|
|
350
|
+
'public'=124
|
|
351
|
+
'redefines'=125
|
|
352
|
+
'redefinition'=126
|
|
353
|
+
'ref'=127
|
|
354
|
+
'references'=128
|
|
355
|
+
'render'=129
|
|
356
|
+
'rendering'=130
|
|
357
|
+
'rep'=131
|
|
358
|
+
'require'=132
|
|
359
|
+
'requirement'=133
|
|
360
|
+
'return'=134
|
|
361
|
+
'satisfy'=135
|
|
362
|
+
'send'=136
|
|
363
|
+
'snapshot'=137
|
|
364
|
+
'specialization'=138
|
|
365
|
+
'specializes'=139
|
|
366
|
+
'stakeholder'=140
|
|
367
|
+
'standard'=141
|
|
368
|
+
'state'=142
|
|
369
|
+
'step'=143
|
|
370
|
+
'struct'=144
|
|
371
|
+
'subclassifier'=145
|
|
372
|
+
'subject'=146
|
|
373
|
+
'subset'=147
|
|
374
|
+
'subsets'=148
|
|
375
|
+
'subtype'=149
|
|
376
|
+
'succession'=150
|
|
377
|
+
'terminate'=151
|
|
378
|
+
'then'=152
|
|
379
|
+
'timeslice'=153
|
|
380
|
+
'to'=154
|
|
381
|
+
'transition'=155
|
|
382
|
+
'true'=156
|
|
383
|
+
'type'=157
|
|
384
|
+
'typed'=158
|
|
385
|
+
'typing'=159
|
|
386
|
+
'unions'=160
|
|
387
|
+
'until'=161
|
|
388
|
+
'use'=162
|
|
389
|
+
'var'=163
|
|
390
|
+
'variant'=164
|
|
391
|
+
'variation'=165
|
|
392
|
+
'verification'=166
|
|
393
|
+
'verify'=167
|
|
394
|
+
'via'=168
|
|
395
|
+
'view'=169
|
|
396
|
+
'viewpoint'=170
|
|
397
|
+
'when'=171
|
|
398
|
+
'while'=172
|
|
399
|
+
'xor'=173
|
|
400
|
+
'!=='=174
|
|
401
|
+
'::>'=175
|
|
402
|
+
':>>'=176
|
|
403
|
+
'==='=177
|
|
404
|
+
'!='=178
|
|
405
|
+
'**'=179
|
|
406
|
+
'->'=180
|
|
407
|
+
'..'=181
|
|
408
|
+
'.?'=182
|
|
409
|
+
'::'=183
|
|
410
|
+
':='=184
|
|
411
|
+
':>'=185
|
|
412
|
+
'<='=186
|
|
413
|
+
'=='=187
|
|
414
|
+
'=>'=188
|
|
415
|
+
'>='=189
|
|
416
|
+
'??'=190
|
|
417
|
+
'@@'=191
|
|
418
|
+
'#'=192
|
|
419
|
+
'$'=193
|
|
420
|
+
'%'=194
|
|
421
|
+
'&'=195
|
|
422
|
+
'('=196
|
|
423
|
+
')'=197
|
|
424
|
+
'*'=198
|
|
425
|
+
'+'=199
|
|
426
|
+
','=200
|
|
427
|
+
'-'=201
|
|
428
|
+
'.'=202
|
|
429
|
+
'/'=203
|
|
430
|
+
':'=204
|
|
431
|
+
';'=205
|
|
432
|
+
'<'=206
|
|
433
|
+
'='=207
|
|
434
|
+
'>'=208
|
|
435
|
+
'?'=209
|
|
436
|
+
'@'=210
|
|
437
|
+
'['=211
|
|
438
|
+
']'=212
|
|
439
|
+
'^'=213
|
|
440
|
+
'{'=214
|
|
441
|
+
'|'=215
|
|
442
|
+
'}'=216
|
|
443
|
+
'~'=217
|
|
444
|
+
'//'=225
|
sysmlpy/antlr_parser.py
ADDED
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
ANTLR4-based SysML v2.0 parser module.
|
|
4
|
+
|
|
5
|
+
This module provides an alternative parser to textX, using ANTLR4 grammar
|
|
6
|
+
generated from the OMG SysML v2 specification (2026-03 release).
|
|
7
|
+
"""
|
|
8
|
+
import sys
|
|
9
|
+
import os
|
|
10
|
+
|
|
11
|
+
from antlr4 import InputStream, CommonTokenStream
|
|
12
|
+
from antlr4.error.ErrorListener import ErrorListener
|
|
13
|
+
|
|
14
|
+
from sysmlpy.antlr.SysMLv2Lexer import SysMLv2Lexer
|
|
15
|
+
from sysmlpy.antlr.SysMLv2Parser import SysMLv2Parser
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class SysMLSyntaxError(Exception):
|
|
19
|
+
"""Exception raised for SysML syntax errors."""
|
|
20
|
+
pass
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class ANTLRErrorListener(ErrorListener):
|
|
24
|
+
"""Custom error listener for ANTLR parsing errors."""
|
|
25
|
+
|
|
26
|
+
def __init__(self):
|
|
27
|
+
self.errors = []
|
|
28
|
+
|
|
29
|
+
def syntaxError(self, recognizer, offendingSymbol, line, column, msg, e):
|
|
30
|
+
self.errors.append(f"Syntax error at {line}:{column}: {msg}")
|
|
31
|
+
|
|
32
|
+
def reportAmbiguity(self, recognizer, dfa, startIndex, stopIndex, exact, ambigAlts, configs):
|
|
33
|
+
pass
|
|
34
|
+
|
|
35
|
+
def reportAttemptingFullContext(self, recognizer, dfa, startIndex, stopIndex, conflictingAlts, configs):
|
|
36
|
+
pass
|
|
37
|
+
|
|
38
|
+
def reportContextSensitivity(self, recognizer, dfa, startIndex, stopIndex, prediction, configs):
|
|
39
|
+
pass
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
def parse(source, library=None):
|
|
43
|
+
"""Parse SysML v2.0 source and return a parse tree.
|
|
44
|
+
|
|
45
|
+
Parameters
|
|
46
|
+
----------
|
|
47
|
+
source : str or file-like
|
|
48
|
+
Either a string containing SysML v2.0 code, or a file object.
|
|
49
|
+
library : str or Path, optional
|
|
50
|
+
Path to SysML v2 library files for resolving imports.
|
|
51
|
+
|
|
52
|
+
Returns
|
|
53
|
+
-------
|
|
54
|
+
ParseTree
|
|
55
|
+
The ANTLR4 parse tree (PackageContext).
|
|
56
|
+
|
|
57
|
+
Raises
|
|
58
|
+
------
|
|
59
|
+
SysMLSyntaxError
|
|
60
|
+
If the source contains syntax errors.
|
|
61
|
+
"""
|
|
62
|
+
# Handle string or file input
|
|
63
|
+
if hasattr(source, 'read'):
|
|
64
|
+
content = source.read()
|
|
65
|
+
else:
|
|
66
|
+
content = source
|
|
67
|
+
|
|
68
|
+
# TODO: If library path is provided, load library files and prepend to content
|
|
69
|
+
# For now, just parse the source directly
|
|
70
|
+
# Library loading would involve reading .sysml files from the library path
|
|
71
|
+
# and making them available for import resolution
|
|
72
|
+
|
|
73
|
+
# Create input stream
|
|
74
|
+
input_stream = InputStream(content)
|
|
75
|
+
|
|
76
|
+
# Create lexer
|
|
77
|
+
lexer = SysMLv2Lexer(input_stream)
|
|
78
|
+
|
|
79
|
+
# Set up error listener
|
|
80
|
+
error_listener = ANTLRErrorListener()
|
|
81
|
+
lexer.removeErrorListeners()
|
|
82
|
+
lexer.addErrorListener(error_listener)
|
|
83
|
+
|
|
84
|
+
# Create token stream
|
|
85
|
+
token_stream = CommonTokenStream(lexer)
|
|
86
|
+
|
|
87
|
+
# Create parser
|
|
88
|
+
parser = SysMLv2Parser(token_stream)
|
|
89
|
+
parser.removeErrorListeners()
|
|
90
|
+
parser.addErrorListener(error_listener)
|
|
91
|
+
|
|
92
|
+
# Parse the source - use rootNamespace to support multiple top-level packages
|
|
93
|
+
tree = parser.rootNamespace()
|
|
94
|
+
|
|
95
|
+
# Check for errors
|
|
96
|
+
if error_listener.errors:
|
|
97
|
+
raise SysMLSyntaxError("\n".join(error_listener.errors))
|
|
98
|
+
|
|
99
|
+
return tree
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
def parse_file(filepath):
|
|
103
|
+
"""Parse a SysML v2.0 file.
|
|
104
|
+
|
|
105
|
+
Parameters
|
|
106
|
+
----------
|
|
107
|
+
filepath : str
|
|
108
|
+
Path to the SysML v2.0 file.
|
|
109
|
+
|
|
110
|
+
Returns
|
|
111
|
+
-------
|
|
112
|
+
ParseTree
|
|
113
|
+
The ANTLR4 parse tree.
|
|
114
|
+
|
|
115
|
+
Raises
|
|
116
|
+
------
|
|
117
|
+
SysMLSyntaxError
|
|
118
|
+
If the file contains syntax errors.
|
|
119
|
+
FileNotFoundError
|
|
120
|
+
If the file does not exist.
|
|
121
|
+
"""
|
|
122
|
+
with open(filepath, 'r') as f:
|
|
123
|
+
return parse(f)
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
def parse_to_json(source):
|
|
127
|
+
"""Parse SysML v2.0 source and return JSON-serializable structure.
|
|
128
|
+
|
|
129
|
+
Parameters
|
|
130
|
+
----------
|
|
131
|
+
source : str or file-like
|
|
132
|
+
Either a string containing SysML v2.0 code, or a file object.
|
|
133
|
+
|
|
134
|
+
Returns
|
|
135
|
+
-------
|
|
136
|
+
dict
|
|
137
|
+
A dictionary representation of the parse tree.
|
|
138
|
+
"""
|
|
139
|
+
tree = parse(source)
|
|
140
|
+
return parse_tree_to_dict(tree)
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
def parse_tree_to_dict(tree, include_text=False):
|
|
144
|
+
"""Convert a parse tree to a dictionary.
|
|
145
|
+
|
|
146
|
+
Parameters
|
|
147
|
+
----------
|
|
148
|
+
tree : ParseTree
|
|
149
|
+
The ANTLR4 parse tree.
|
|
150
|
+
include_text : bool
|
|
151
|
+
Whether to include the text of each node.
|
|
152
|
+
|
|
153
|
+
Returns
|
|
154
|
+
-------
|
|
155
|
+
dict
|
|
156
|
+
A dictionary representation of the parse tree.
|
|
157
|
+
"""
|
|
158
|
+
result = {
|
|
159
|
+
'type': tree.__class__.__name__,
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
if include_text:
|
|
163
|
+
result['text'] = tree.getText()
|
|
164
|
+
|
|
165
|
+
# Get children
|
|
166
|
+
for i in range(tree.getChildCount()):
|
|
167
|
+
child = tree.getChild(i)
|
|
168
|
+
child_class = child.__class__.__name__
|
|
169
|
+
|
|
170
|
+
# Skip terminal nodes (Token) unless requested
|
|
171
|
+
if hasattr(child, 'getSymbol'):
|
|
172
|
+
# This is a terminal node
|
|
173
|
+
if include_text:
|
|
174
|
+
result[f'child_{i}'] = {
|
|
175
|
+
'type': child_class,
|
|
176
|
+
'text': child.getText()
|
|
177
|
+
}
|
|
178
|
+
else:
|
|
179
|
+
# This is a rule context
|
|
180
|
+
result[f'child_{i}'] = parse_tree_to_dict(child, include_text)
|
|
181
|
+
|
|
182
|
+
return result
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
__all__ = ['parse', 'parse_file', 'parse_to_json', 'SysMLSyntaxError']
|