= AADL Declarative Model = The AADL parser (aadlrev) takes textual AADL files as input and produces a list of prolog predicates as output.[[BR]] It is implemented with conventional !Lex/Yacc technology and follows the [wiki:AADL AADL] grammar (BNF) specified in the SAE AS-5506 standard documents.[[BR]] Current version is aadlrev 2.17 dated 06 April 2023 that supports AADL 2.3, the Behavior Annex 2.0, the Error Annex 1.0 and 2.0 (EMV2). The parser has been made as flexible as possible regarding past changes in the AADL grammar. When appropriate, warning messages are issued to report use of decrepeted syntax. The output of the parser consists of a list of prolog predicates (facts base) that gives a formal and easy to use representation of the overall AADL declarative model. Efficient model processing tools can be built on top of this facts base using the power of the prolog language (rules bases). A set of prolog rules libraries has been developed to facilitate AADL model processing. In particular, rules are provided to create the AADL instance model, to search property values or to write the declarative model from its internal prolog representation. All these features (parser and libraries) are part of the LMP toolbox. This page describes the AADL prolog API that can be used to create processing tools with [wiki:LMP LMP] [=#index] {{{#!table style="border:2" {{{#!tr style="text-align:center; margin:auto" {{{#!th style="width:120px" '''Index''' }}} {{{#!td style="background:#ffd; width:80px" [#L1 Core] }}} {{{#!td style="background:#ffd; width:80px" [#L2 BA] }}} {{{#!td style="background:#ffd; width:80px" [#L3 EMV1] }}} {{{#!td style="background:#ffd; width:80px" [#L4 EMV2] }}} }}} }}} ---- [=#L1] === AADL v2 predicates === This part of the prolog API complies with document SAE AS-5506C (AADL 2.2) [wiki:aadlparser/isVersion isVersion/4][[BR]] [wiki:aadlparser/isWarning isWarning/4][[BR]] [wiki:aadlparser/isPackage isPackage/3][[BR]] [wiki:aadlparser/isPackageComment isPackageComment/4][[BR]] [wiki:aadlparser/isPackageEnd isPackageEnd/3][[BR]] [wiki:aadlparser/isImportDeclaration isImportDeclaration/4][[BR]] [wiki:aadlparser/isAliasDeclaration isAliasDeclaration/6][[BR]] [wiki:aadlparser/isComponentType isComponentType/6][[BR]] [wiki:aadlparser/isCompTypeComment isCompTypeComment/5][[BR]] [wiki:aadlparser/isComponentTypeEnd isComponentTypeEnd/5][[BR]] [wiki:aadlparser/isComponentImplementation isComponentImplementation/8][[BR]] [wiki:aadlparser/isCompImpComment isCompImpComment/6][[BR]] [wiki:aadlparser/isComponentImplementationEnd isComponentImplementationEnd/7][[BR]] [wiki:aadlparser/isSubcomponent isSubcomponent/9][[BR]] [wiki:aadlparser/isSubcompComment isSubcompComment/6][[BR]] [wiki:aadlparser/isAnnex isAnnex/7][[BR]] [wiki:aadlparser/isAnnexComment isAnnexComment/6][[BR]] [wiki:aadlparser/isCallSequence isCallSequence/5][[BR]] [wiki:aadlparser/isCallSeqComment isCallSeqComment/6][[BR]] [wiki:aadlparser/isCall isCall/7][[BR]] [wiki:aadlparser/isCallComment isCallComment/7][[BR]] [wiki:aadlparser/isFeature isFeature/10][[BR]] [wiki:aadlparser/isFeatureComment isFeatureComment/5][[BR]] [wiki:aadlparser/isInternalFeature isInternalFeature/7][[BR]] [wiki:aadlparser/isInverseOf isInverseOf/4][[BR]] [wiki:aadlparser/isConnection isConnection/10][[BR]] [wiki:aadlparser/isConnection2 isConnection2/11][[BR]] [wiki:aadlparser/isConnectionComment isConnectionComment/6][[BR]] [wiki:aadlparser/isProperty isProperty/9][[BR]] [wiki:aadlparser/isPropertyOpt isPropertyOpt/9][[BR]] [wiki:aadlparser/isPropertyComment isPropertyComment/7][[BR]] [wiki:aadlparser/isRecordField isRecordField/9][[BR]] [wiki:aadlparser/isRecordFieldOpt isRecordFieldOpt/9][[BR]] [wiki:aadlparser/isPrototype isPrototype/10][[BR]] [wiki:aadlparser/isPrototypeComment isPrototypeComment/6][[BR]] [wiki:aadlparser/isPrototypeBinding isPrototypeBinding/9][[BR]] [wiki:aadlparser/isPrototypeBindingComment isPrototypeBindingComment/7][[BR]] [wiki:aadlparser/isFlowSpec isFlowSpec/9][[BR]] [wiki:aadlparser/isFlowSpecComment isFlowSpecComment/6][[BR]] [wiki:aadlparser/isFlowImplementation isFlowImplementation/8][[BR]] [wiki:aadlparser/isFlowImplementationComment isFlowImplementationComment/6][[BR]] [wiki:aadlparser/isMode isMode/7][[BR]] [wiki:aadlparser/isModeComment isModeComment/6][[BR]] [wiki:aadlparser/isModeTransition isModeTransition/8][[BR]] [wiki:aadlparser/isModeTransitionComment isModeTransitionComment/6][[BR]] [wiki:aadlparser/isInMode isInMode/8][[BR]] [wiki:aadlparser/isPropertyBinding isPropertyBinding/8][[BR]] [wiki:aadlparser/isPropertySet isPropertySet/2][[BR]] [wiki:aadlparser/isPropertySetComment isPropertySetComment/3][[BR]] [wiki:aadlparser/isPropertySetEnd isPropertySetEnd/3][[BR]] [wiki:aadlparser/isPropertyType isPropertyType/4][[BR]] [wiki:aadlparser/isPropertyTypeComment isPropertyTypeComment/4][[BR]] [wiki:aadlparser/isPropertyDefinition isPropertyDefinition/8][[BR]] [wiki:aadlparser/isPropertyDefinitionComment isPropertyDefinitionComment/4][[BR]] [wiki:aadlparser/isPropertyConstant isPropertyConstant/6][[BR]] [wiki:aadlparser/isPropertyConstantComment isPropertyConstantComment/4][[BR]] [wiki:aadlparser/isPropertyReference isPropertyReference/5][[BR]][[BR]] [#index (back to index)] ---- [=#L2] === AADL Behavior Annex predicates === This part of the prolog API complies with document SAE AS-5506/2A (AADL BA 2.0) [wiki:aadlparser/isBAVersion isBAVersion/4][[BR]] [wiki:aadlparser/isBAVariable isBAVariable/9][[BR]] [wiki:aadlparser/isBAVariableComment isBAVariableComment/7][[BR]] [wiki:aadlparser/isBAProperty isBAProperty/10][[BR]] [wiki:aadlparser/isBAPropertyOpt isBAPropertyOpt/10][[BR]] [wiki:aadlparser/isBAState isBAState/7][[BR]] [wiki:aadlparser/isBAStateComment isBAStateComment/7][[BR]] [wiki:aadlparser/isBATransition isBATransition/9][[BR]] [wiki:aadlparser/isBATransitionComment isBATransitionComment/7][[BR]] [wiki:aadlparser/isBACondition isBACondition/9][[BR]] [wiki:aadlparser/isBAConditionBlock isBAConditionBlock/7][[BR]] [wiki:aadlparser/isBADispatchExpression isBADispatchExpression/10][[BR]] [wiki:aadlparser/isBADispatchTrigger isBADispatchTrigger/8][[BR]] [wiki:aadlparser/isBAModeExpression isBAModeExpression/10][[BR]] [wiki:aadlparser/isBAModeTrigger isBAModeTrigger/8][[BR]] [wiki:aadlparser/isBAAction isBAAction/11][[BR]] [wiki:aadlparser/isBAActionBlock isBAActionBlock/7][[BR]][[BR]] [#index (back to index)] ---- [=#L3] === AADL Error Annex v1 predicates === This part of the prolog API complies with document SAE AS-5506/1 (AADL EA) [wiki:aadlparser/isEAVersion isEAVersion/4][[BR]] [wiki:aadlparser/isEAProperty isEAProperty/7][[BR]][[BR]] [#index (back to index)] ---- [=#L4] === AADL Error Annex v2 predicates === This part of the prolog API complies with document SAE AS-5506/1A (AADL EMV2) [wiki:aadlparser/isEMV2Version isEMV2Version/4][[BR]] [wiki:aadlparser/isEMV2ExtendsLib isEMV2ExtendsLib/4][[BR]] [wiki:aadlparser/isEMV2TypeDef isEMV2TypeDef/5][[BR]] [wiki:aadlparser/isEMV2TypeAlias isEMV2TypeAlias/5][[BR]] [wiki:aadlparser/isEMV2TypeSetDef isEMV2TypeSetDef/4][[BR]] [wiki:aadlparser/isEMV2TypeSetAlias isEMV2TypeSetAlias/5][[BR]] [wiki:aadlparser/isEMV2TypeSetElement isEMV2TypeSetElement/7][[BR]] [wiki:aadlparser/isEMV2ErrorBehavior isEMV2ErrorBehavior/4][[BR]] [wiki:aadlparser/isEMV2TypeMappings isEMV2TypeMappings/4][[BR]] [wiki:aadlparser/isEMV2TypeMapping isEMV2TypeMapping/6][[BR]] [wiki:aadlparser/isEMV2TypeTransformations isEMV2TypeTransformations/4][[BR]] [wiki:aadlparser/isEMV2TypeTransformation isEMV2TypeTransformation/7][[BR]] [wiki:aadlparser/isEMV2UseTypes isEMV2UseTypes/7][[BR]] [wiki:aadlparser/isEMV2UseBehavior isEMV2UseBehavior/6][[BR]] [wiki:aadlparser/isEMV2UseTypeEquivalence isEMV2UseTypeEquivalence/6][[BR]] [wiki:aadlparser/isEMV2UseMappings isEMV2UseMappings/6][[BR]] [wiki:aadlparser/isEMV2UseTransformations isEMV2UseTransformations/7][[BR]] [wiki:aadlparser/isEMV2Event isEMV2Event/10][[BR]] [wiki:aadlparser/isEMV2State isEMV2State/9][[BR]] [wiki:aadlparser/isEMV2Transition isEMV2Transition/12][[BR]] [wiki:aadlparser/isEMV2Condition isEMV2Condition/11][[BR]] [wiki:aadlparser/isEMV2ConditionTrigger isEMV2ConditionTrigger/10][[BR]] [wiki:aadlparser/isEMV2TransitionBranch isEMV2TransitionBranch/10][[BR]] [wiki:aadlparser/isEMV2ErrorPropagation isEMV2ErrorPropagation/8][[BR]] [wiki:aadlparser/isEMV2ErrorSource isEMV2ErrorSource/11][[BR]] [wiki:aadlparser/isEMV2ErrorSink isEMV2ErrorSink/8][[BR]] [wiki:aadlparser/isEMV2ErrorPath isEMV2ErrorPath/11][[BR]] [wiki:aadlparser/isEMV2OutgoingPropagation isEMV2OutgoingPropagation/11][[BR]] [wiki:aadlparser/isEMV2ErrorDetection isEMV2ErrorDetection/11][[BR]] [wiki:aadlparser/isEMV2InModes isEMV2InModes/8][[BR]] [wiki:aadlparser/isEMV2CompositeState isEMV2CompositeState/9][[BR]] [wiki:aadlparser/isEMV2CompositeStateExpr isEMV2CompositeStateExpr/10][[BR]] [wiki:aadlparser/isEMV2CompositeStateElem isEMV2CompositeStateElem/9][[BR]] [wiki:aadlparser/isEMV2ConnectionError isEMV2ConnectionError/10][[BR]] [wiki:aadlparser/isEMV2PropagationPoint isEMV2PropagationPoint/6][[BR]] [wiki:aadlparser/isEMV2PropagationConnection isEMV2PropagationConnection/8][[BR]] [wiki:aadlparser/isEMV2Property isEMV2Property/11][[BR]][[BR]] [#index (back to index)] ----