Merge branch 'dev' into main

This commit is contained in:
SylvanCourtiol
2021-05-09 17:43:01 +02:00
114 changed files with 3316 additions and 53497 deletions
-6
View File
@@ -1,6 +0,0 @@
# ignore les fichiers non nécessaire TexStudio
*.synctex.gz
*.aux
*.log
*.out
*.toc
Binary file not shown.

Before

Width:  |  Height:  |  Size: 225 KiB

-709
View File
@@ -1,709 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<xmi:XMI xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:JavaExtensions="http:///schemas/JavaExtensions/_NIobYKkMEeuE-4LRZz3rew/0" xmlns:default="http:///schemas/default/_NIeqYKkMEeuE-4LRZz3rew/0" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/3.0.0/UML" xsi:schemaLocation="http:///schemas/JavaExtensions/_NIobYKkMEeuE-4LRZz3rew/0 JavaExtensions.profile.xmi#_NI7WV6kMEeuE-4LRZz3rew http:///schemas/default/_NIeqYKkMEeuE-4LRZz3rew/0 default.profile.xmi#_NIq3p6kMEeuE-4LRZz3rew">
<uml:Model xmi:id="_NILIYKkMEeuE-4LRZz3rew" name="Modèle">
<eAnnotations xmi:id="_NILIYakMEeuE-4LRZz3rew" source="Objing">
<contents xmi:type="uml:Property" xmi:id="_NILIYqkMEeuE-4LRZz3rew" name="exporterVersion">
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILIY6kMEeuE-4LRZz3rew" value="3.0.0"/>
</contents>
</eAnnotations>
<packagedElement xmi:type="uml:Package" xmi:id="_NILIZKkMEeuE-4LRZz3rew" name="interpreteurlir">
<packagedElement xmi:type="uml:Package" xmi:id="_NILIZakMEeuE-4LRZz3rew" name="donnees">
<packagedElement xmi:type="uml:Package" xmi:id="_NILIZqkMEeuE-4LRZz3rew" name="variables">
<packagedElement xmi:type="uml:Class" xmi:id="_NILIZ6kMEeuE-4LRZz3rew" name="Variable">
<ownedAttribute xmi:id="_NILIaKkMEeuE-4LRZz3rew" name="identifiant" visibility="private" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
</ownedAttribute>
<ownedOperation xmi:id="_NILIaakMEeuE-4LRZz3rew" name="Variable" visibility="protected">
<ownedParameter xmi:id="_NILIaqkMEeuE-4LRZz3rew" name="indentifiant" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILIa6kMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILIbKkMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILIbakMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_NILIbqkMEeuE-4LRZz3rew" name="isIdentifiant" visibility="public" isStatic="true">
<ownedParameter xmi:id="_NILIb6kMEeuE-4LRZz3rew" isUnique="false" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILIcKkMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILIcakMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILIcqkMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_NILIc6kMEeuE-4LRZz3rew" name="compareTo" visibility="public">
<ownedParameter xmi:id="_NILIdKkMEeuE-4LRZz3rew" name="aComparer" type="_NILIZ6kMEeuE-4LRZz3rew" isUnique="false">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILIdakMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILIdqkMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILId6kMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
<ownedParameter xmi:id="_NILIeKkMEeuE-4LRZz3rew" isUnique="false" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILIeakMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILIeqkMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILIe6kMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_NILIfKkMEeuE-4LRZz3rew" name="VariableEntier">
<generalization xmi:id="_NILIfakMEeuE-4LRZz3rew" general="_NILIZ6kMEeuE-4LRZz3rew"/>
<ownedAttribute xmi:id="_NILIfqkMEeuE-4LRZz3rew" name="valeur" visibility="private" type="_NILJLqkMEeuE-4LRZz3rew" isUnique="false" aggregation="composite" association="_NILI56kMEeuE-4LRZz3rew"/>
<ownedOperation xmi:id="_NILIf6kMEeuE-4LRZz3rew" name="compareTo" visibility="public">
<ownedParameter xmi:id="_NILIgKkMEeuE-4LRZz3rew" name="aComparer" type="_NILIfKkMEeuE-4LRZz3rew" isUnique="false">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILIgakMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILIgqkMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILIg6kMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
<ownedParameter xmi:id="_NILIhKkMEeuE-4LRZz3rew" isUnique="false" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILIhakMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILIhqkMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILIh6kMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_NILIiKkMEeuE-4LRZz3rew" name="equals" visibility="public">
<ownedParameter xmi:id="_NILIiakMEeuE-4LRZz3rew" name="aComparer" type="_NILIfKkMEeuE-4LRZz3rew" isUnique="false">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILIiqkMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILIi6kMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILIjKkMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
<ownedParameter xmi:id="_NILIjakMEeuE-4LRZz3rew" isUnique="false" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILIjqkMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILIj6kMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILIkKkMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_NILIkakMEeuE-4LRZz3rew" name="Entier" visibility="public">
<ownedParameter xmi:id="_NILIkqkMEeuE-4LRZz3rew" name="id" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILIk6kMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILIlKkMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILIlakMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_NILIlqkMEeuE-4LRZz3rew" name="isEntier" visibility="public" isStatic="true">
<ownedParameter xmi:id="_NILIl6kMEeuE-4LRZz3rew" name="aTester" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILImKkMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILImakMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILImqkMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
<ownedParameter xmi:id="_NILIm6kMEeuE-4LRZz3rew" isUnique="false" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILInKkMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILInakMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILInqkMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_NILIn6kMEeuE-4LRZz3rew" name="toString" visibility="public">
<ownedParameter xmi:id="_NILIoKkMEeuE-4LRZz3rew" isUnique="false" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILIoakMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILIoqkMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILIo6kMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_NILIpKkMEeuE-4LRZz3rew" name="somme" visibility="public">
<ownedParameter xmi:id="_NILIpakMEeuE-4LRZz3rew" name="aSommer" type="_NILIfKkMEeuE-4LRZz3rew" isUnique="false">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILIpqkMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILIp6kMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILIqKkMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
<ownedParameter xmi:id="_NILIqakMEeuE-4LRZz3rew" type="_NILIfKkMEeuE-4LRZz3rew" isUnique="false" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILIqqkMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILIq6kMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILIrKkMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_NILIrakMEeuE-4LRZz3rew" name="soustrait" visibility="public">
<ownedParameter xmi:id="_NILIrqkMEeuE-4LRZz3rew" name="aSoustraire" type="_NILIfKkMEeuE-4LRZz3rew" isUnique="false">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILIr6kMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILIsKkMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILIsakMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
<ownedParameter xmi:id="_NILIsqkMEeuE-4LRZz3rew" type="_NILIfKkMEeuE-4LRZz3rew" isUnique="false" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILIs6kMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILItKkMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILItakMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_NILItqkMEeuE-4LRZz3rew" name="multiplie" visibility="public">
<ownedParameter xmi:id="_NILIt6kMEeuE-4LRZz3rew" name="aMultiplier" type="_NILIfKkMEeuE-4LRZz3rew" isUnique="false">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILIuKkMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILIuakMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILIuqkMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
<ownedParameter xmi:id="_NILIu6kMEeuE-4LRZz3rew" type="_NILIfKkMEeuE-4LRZz3rew" isUnique="false" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILIvKkMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILIvakMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILIvqkMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_NILIv6kMEeuE-4LRZz3rew" name="quotient" visibility="public">
<ownedParameter xmi:id="_NILIwKkMEeuE-4LRZz3rew" name="diviseur" type="_NILIfKkMEeuE-4LRZz3rew" isUnique="false">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILIwakMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILIwqkMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILIw6kMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
<ownedParameter xmi:id="_NILIxKkMEeuE-4LRZz3rew" type="_NILIfKkMEeuE-4LRZz3rew" isUnique="false" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILIxakMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILIxqkMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILIx6kMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_NILIyKkMEeuE-4LRZz3rew" name="reste" visibility="public">
<ownedParameter xmi:id="_NILIyakMEeuE-4LRZz3rew" name="diviseur" type="_NILIfKkMEeuE-4LRZz3rew" isUnique="false">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILIyqkMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILIy6kMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILIzKkMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
<ownedParameter xmi:id="_NILIzakMEeuE-4LRZz3rew" type="_NILIfKkMEeuE-4LRZz3rew" isUnique="false" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILIzqkMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILIz6kMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILI0KkMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_NILI0akMEeuE-4LRZz3rew" name="Entier" visibility="protected">
<ownedParameter xmi:id="_NILI0qkMEeuE-4LRZz3rew" name="id" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILI06kMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILI1KkMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILI1akMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
<ownedParameter xmi:id="_NILI1qkMEeuE-4LRZz3rew" name="entier" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILI16kMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILI2KkMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILI2akMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_NILI2qkMEeuE-4LRZz3rew" name="getValeur" visibility="package" clientDependency="_NILI6akMEeuE-4LRZz3rew">
<ownedComment xmi:id="_NILI26kMEeuE-4LRZz3rew">
<body>// Automatically generated method. Please delete this comment before entering specific code.</body>
</ownedComment>
<ownedComment xmi:id="_NILI3KkMEeuE-4LRZz3rew">
<body>return this.valeur;</body>
</ownedComment>
<ownedParameter xmi:id="_NILI3akMEeuE-4LRZz3rew" type="_NILJLqkMEeuE-4LRZz3rew" isUnique="false" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILI3qkMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILI36kMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILI4KkMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_NILI4akMEeuE-4LRZz3rew" name="setValeur" visibility="package" clientDependency="_NILI6qkMEeuE-4LRZz3rew">
<ownedComment xmi:id="_NILI4qkMEeuE-4LRZz3rew">
<body>// Automatically generated method. Please delete this comment before entering specific code.&#xD;
this.valeur = value;</body>
</ownedComment>
<ownedParameter xmi:id="_NILI46kMEeuE-4LRZz3rew" name="value" type="_NILJLqkMEeuE-4LRZz3rew" isUnique="false">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILI5KkMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILI5akMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILI5qkMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_NILI56kMEeuE-4LRZz3rew" memberEnd="_NILIfqkMEeuE-4LRZz3rew _NILI6KkMEeuE-4LRZz3rew">
<ownedEnd xmi:id="_NILI6KkMEeuE-4LRZz3rew" visibility="private" type="_NILIfKkMEeuE-4LRZz3rew" isUnique="false" association="_NILI56kMEeuE-4LRZz3rew"/>
</packagedElement>
<packagedElement xmi:type="uml:Dependency" xmi:id="_NILI6akMEeuE-4LRZz3rew" name="" supplier="_NILIfqkMEeuE-4LRZz3rew" client="_NILI2qkMEeuE-4LRZz3rew"/>
<packagedElement xmi:type="uml:Dependency" xmi:id="_NILI6qkMEeuE-4LRZz3rew" name="" supplier="_NILIfqkMEeuE-4LRZz3rew" client="_NILI4akMEeuE-4LRZz3rew"/>
<packagedElement xmi:type="uml:Class" xmi:id="_NILI66kMEeuE-4LRZz3rew" name="VariableChaine">
<generalization xmi:id="_NILI7KkMEeuE-4LRZz3rew" general="_NILIZ6kMEeuE-4LRZz3rew"/>
<ownedAttribute xmi:id="_NILI7akMEeuE-4LRZz3rew" name="valeur" visibility="private" type="_NILJQ6kMEeuE-4LRZz3rew" isUnique="false" aggregation="composite" association="_NILJKakMEeuE-4LRZz3rew"/>
<ownedOperation xmi:id="_NILI7qkMEeuE-4LRZz3rew" name="compareTo" visibility="public">
<ownedParameter xmi:id="_NILI76kMEeuE-4LRZz3rew" name="aComparer" type="_NILI66kMEeuE-4LRZz3rew" isUnique="false">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILI8KkMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILI8akMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILI8qkMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
<ownedParameter xmi:id="_NILI86kMEeuE-4LRZz3rew" isUnique="false" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILI9KkMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILI9akMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILI9qkMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_NILI96kMEeuE-4LRZz3rew" name="equals" visibility="public">
<ownedParameter xmi:id="_NILI-KkMEeuE-4LRZz3rew" name="aComparer" type="_NILI66kMEeuE-4LRZz3rew" isUnique="false">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILI-akMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILI-qkMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILI-6kMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
<ownedParameter xmi:id="_NILI_KkMEeuE-4LRZz3rew" isUnique="false" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILI_akMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILI_qkMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILI_6kMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_NILJAKkMEeuE-4LRZz3rew" name="Chaine" visibility="public">
<ownedParameter xmi:id="_NILJAakMEeuE-4LRZz3rew" name="chaineCaracteres" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILJAqkMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILJA6kMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILJBKkMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_NILJBakMEeuE-4LRZz3rew" name="isChaine" visibility="public" isStatic="true">
<ownedParameter xmi:id="_NILJBqkMEeuE-4LRZz3rew" name="aTester" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILJB6kMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILJCKkMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILJCakMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
<ownedParameter xmi:id="_NILJCqkMEeuE-4LRZz3rew" isUnique="false" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILJC6kMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILJDKkMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILJDakMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_NILJDqkMEeuE-4LRZz3rew" name="toString" visibility="public">
<ownedParameter xmi:id="_NILJD6kMEeuE-4LRZz3rew" isUnique="false" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILJEKkMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILJEakMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILJEqkMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_NILJE6kMEeuE-4LRZz3rew" name="concat" visibility="public">
<ownedParameter xmi:id="_NILJFKkMEeuE-4LRZz3rew" name="aConcatener" type="_NILI66kMEeuE-4LRZz3rew" isUnique="false">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILJFakMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILJFqkMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILJF6kMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
<ownedParameter xmi:id="_NILJGKkMEeuE-4LRZz3rew" type="_NILI66kMEeuE-4LRZz3rew" isUnique="false" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILJGakMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILJGqkMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILJG6kMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_NILJHKkMEeuE-4LRZz3rew" name="getValeur" visibility="package" clientDependency="_NILJK6kMEeuE-4LRZz3rew">
<ownedComment xmi:id="_NILJHakMEeuE-4LRZz3rew">
<body>// Automatically generated method. Please delete this comment before entering specific code.</body>
</ownedComment>
<ownedComment xmi:id="_NILJHqkMEeuE-4LRZz3rew">
<body>return this.valeur;</body>
</ownedComment>
<ownedParameter xmi:id="_NILJH6kMEeuE-4LRZz3rew" type="_NILJQ6kMEeuE-4LRZz3rew" isUnique="false" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILJIKkMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILJIakMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILJIqkMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_NILJI6kMEeuE-4LRZz3rew" name="setValeur" visibility="package" clientDependency="_NILJLKkMEeuE-4LRZz3rew">
<ownedComment xmi:id="_NILJJKkMEeuE-4LRZz3rew">
<body>// Automatically generated method. Please delete this comment before entering specific code.&#xD;
this.valeur = value;</body>
</ownedComment>
<ownedParameter xmi:id="_NILJJakMEeuE-4LRZz3rew" name="value" type="_NILJQ6kMEeuE-4LRZz3rew" isUnique="false">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILJJqkMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILJJ6kMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILJKKkMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_NILJKakMEeuE-4LRZz3rew" memberEnd="_NILI7akMEeuE-4LRZz3rew _NILJKqkMEeuE-4LRZz3rew">
<ownedEnd xmi:id="_NILJKqkMEeuE-4LRZz3rew" visibility="private" type="_NILI66kMEeuE-4LRZz3rew" isUnique="false" association="_NILJKakMEeuE-4LRZz3rew"/>
</packagedElement>
<packagedElement xmi:type="uml:Dependency" xmi:id="_NILJK6kMEeuE-4LRZz3rew" name="" supplier="_NILI7akMEeuE-4LRZz3rew" client="_NILJHKkMEeuE-4LRZz3rew"/>
<packagedElement xmi:type="uml:Dependency" xmi:id="_NILJLKkMEeuE-4LRZz3rew" name="" supplier="_NILI7akMEeuE-4LRZz3rew" client="_NILJI6kMEeuE-4LRZz3rew"/>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="_NILJLakMEeuE-4LRZz3rew" name="types">
<packagedElement xmi:type="uml:Class" xmi:id="_NILJLqkMEeuE-4LRZz3rew" name="Entier">
<generalization xmi:id="_NILJL6kMEeuE-4LRZz3rew" general="_NILJQKkMEeuE-4LRZz3rew"/>
<ownedAttribute xmi:id="_NILJMKkMEeuE-4LRZz3rew" name="valeur" visibility="private" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
</ownedAttribute>
<ownedOperation xmi:id="_NILJMakMEeuE-4LRZz3rew" name="Entier" visibility="public">
<ownedParameter xmi:id="_NILJMqkMEeuE-4LRZz3rew" name="valeur" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILJM6kMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILJNKkMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILJNakMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_NILJNqkMEeuE-4LRZz3rew" name="getValeur" visibility="public">
<ownedParameter xmi:id="_NILJN6kMEeuE-4LRZz3rew" isUnique="false" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILJOKkMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILJOakMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILJOqkMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_NILJO6kMEeuE-4LRZz3rew" name="toString" visibility="public">
<ownedParameter xmi:id="_NILJPKkMEeuE-4LRZz3rew" isUnique="false" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILJPakMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILJPqkMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILJP6kMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_NILJQKkMEeuE-4LRZz3rew" name="Type">
<ownedOperation xmi:id="_NILJQakMEeuE-4LRZz3rew" name="Type" visibility="public"/>
<ownedOperation xmi:id="_NILJQqkMEeuE-4LRZz3rew" name="toString" visibility="public"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_NILJQ6kMEeuE-4LRZz3rew" name="Chaine">
<generalization xmi:id="_NILJRKkMEeuE-4LRZz3rew" general="_NILJQKkMEeuE-4LRZz3rew"/>
<ownedAttribute xmi:id="_NILJRakMEeuE-4LRZz3rew" name="valeur" visibility="private" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
</ownedAttribute>
<ownedAttribute xmi:id="_NILJRqkMEeuE-4LRZz3rew" name="LG_MAX_CHAINE" visibility="public" isStatic="true" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
<defaultValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILJR6kMEeuE-4LRZz3rew" value="70"/>
</ownedAttribute>
<ownedOperation xmi:id="_NILJSKkMEeuE-4LRZz3rew" name="Chaine" visibility="public">
<ownedParameter xmi:id="_NILJSakMEeuE-4LRZz3rew" name="valeur" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILJSqkMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILJS6kMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILJTKkMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_NILJTakMEeuE-4LRZz3rew" name="getValeur" visibility="public">
<ownedParameter xmi:id="_NILJTqkMEeuE-4LRZz3rew" isUnique="false" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILJT6kMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILJUKkMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILJUakMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_NILJUqkMEeuE-4LRZz3rew" name="toString" visibility="public">
<ownedParameter xmi:id="_NILJU6kMEeuE-4LRZz3rew" isUnique="false" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILJVKkMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILJVakMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILJVqkMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
</ownedOperation>
</packagedElement>
</packagedElement>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_NILJV6kMEeuE-4LRZz3rew" name="InterpreteurLIR">
<ownedOperation xmi:id="_NILJWKkMEeuE-4LRZz3rew" name="main" visibility="public" isStatic="true"/>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="_NILJWakMEeuE-4LRZz3rew" name="expressions">
<packagedElement xmi:type="uml:Class" xmi:id="_NILJWqkMEeuE-4LRZz3rew" name="Expression">
<ownedAttribute xmi:id="_NILJW6kMEeuE-4LRZz3rew" name="operandeG Object" visibility="private" type="_NILvj6kMEeuE-4LRZz3rew" isUnique="false"/>
<ownedAttribute xmi:id="_NILJXKkMEeuE-4LRZz3rew" name="operandeD Object" visibility="private" type="_NILvj6kMEeuE-4LRZz3rew" isUnique="false"/>
<ownedAttribute xmi:id="_NILJXakMEeuE-4LRZz3rew" name="operateur" visibility="private" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
</ownedAttribute>
<ownedAttribute xmi:id="_NILJXqkMEeuE-4LRZz3rew" name="contexteGlobal" visibility="private" isStatic="true" type="_NILJn6kMEeuE-4LRZz3rew" isUnique="false"/>
<ownedOperation xmi:id="_NILJX6kMEeuE-4LRZz3rew" name="toString" visibility="public">
<ownedParameter xmi:id="_NILJYKkMEeuE-4LRZz3rew" isUnique="false" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILJYakMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILJYqkMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILJY6kMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_NILJZKkMEeuE-4LRZz3rew" name="Expression" visibility="public">
<ownedParameter xmi:id="_NILJZakMEeuE-4LRZz3rew" name="opG" type="_NILIZ6kMEeuE-4LRZz3rew" isUnique="false">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILJZqkMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILJZ6kMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILJaKkMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
<ownedParameter xmi:id="_NILJaakMEeuE-4LRZz3rew" name="operateur" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILJaqkMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILJa6kMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILJbKkMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
<ownedParameter xmi:id="_NILJbakMEeuE-4LRZz3rew" name="opD" type="_NILIZ6kMEeuE-4LRZz3rew" isUnique="false">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILJbqkMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILJb6kMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILJcKkMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_NILJcakMEeuE-4LRZz3rew" name="isExpression" visibility="public" isStatic="true">
<ownedParameter xmi:id="_NILJcqkMEeuE-4LRZz3rew" name="aTester" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILJc6kMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILJdKkMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILJdakMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
<ownedParameter xmi:id="_NILJdqkMEeuE-4LRZz3rew" isUnique="false" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILJd6kMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILJeKkMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILJeakMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_NILJeqkMEeuE-4LRZz3rew" name="referencerContexte" visibility="public" isStatic="true">
<ownedParameter xmi:id="_NILJe6kMEeuE-4LRZz3rew" name="aReferencer" type="_NILJn6kMEeuE-4LRZz3rew" isUnique="false">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILJfKkMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILJfakMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILJfqkMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
<ownedParameter xmi:id="_NILJf6kMEeuE-4LRZz3rew" isUnique="false" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILJgKkMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILJgakMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILJgqkMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_NILJg6kMEeuE-4LRZz3rew" name="ExpressionEntier">
<generalization xmi:id="_NILJhKkMEeuE-4LRZz3rew" general="_NILJWqkMEeuE-4LRZz3rew"/>
<ownedOperation xmi:id="_NILJhakMEeuE-4LRZz3rew" name="resultat" visibility="public">
<ownedParameter xmi:id="_NILJhqkMEeuE-4LRZz3rew" isUnique="false" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILJh6kMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILJiKkMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILJiakMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_NILJiqkMEeuE-4LRZz3rew" name="ExpressionChaine">
<generalization xmi:id="_NILJi6kMEeuE-4LRZz3rew" general="_NILJWqkMEeuE-4LRZz3rew"/>
<ownedOperation xmi:id="_NILJjKkMEeuE-4LRZz3rew" name="concat" visibility="public">
<ownedParameter xmi:id="_NILJjakMEeuE-4LRZz3rew" isUnique="false" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILJjqkMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILJj6kMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILJkKkMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_NILJkakMEeuE-4LRZz3rew" name="isChaine" visibility="public" isStatic="true">
<ownedParameter xmi:id="_NILJkqkMEeuE-4LRZz3rew" isUnique="false" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILJk6kMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILJlKkMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILJlakMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_NILJlqkMEeuE-4LRZz3rew" name="ExpressionChaine" visibility="public">
<ownedParameter xmi:id="_NILJl6kMEeuE-4LRZz3rew" name="opG" type="_NILI66kMEeuE-4LRZz3rew" isUnique="false">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILJmKkMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILJmakMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILJmqkMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
<ownedParameter xmi:id="_NILJm6kMEeuE-4LRZz3rew" name="opD" type="_NILI66kMEeuE-4LRZz3rew" isUnique="false">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILJnKkMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILJnakMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILJnqkMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
</ownedOperation>
</packagedElement>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_NILJn6kMEeuE-4LRZz3rew" name="Contexte">
<ownedAttribute xmi:id="_NILJoKkMEeuE-4LRZz3rew" name="variable" visibility="private" type="_NILIZ6kMEeuE-4LRZz3rew" isUnique="false" aggregation="composite" association="_NILJuKkMEeuE-4LRZz3rew"/>
<ownedAttribute xmi:id="_NILJoakMEeuE-4LRZz3rew" name="listeVariables" visibility="private" type="_NILIZ6kMEeuE-4LRZz3rew" isUnique="false">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILJoqkMEeuE-4LRZz3rew" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILJo6kMEeuE-4LRZz3rew"/>
</ownedAttribute>
<ownedOperation xmi:id="_NILJpKkMEeuE-4LRZz3rew" name="raz" visibility="public"/>
<ownedOperation xmi:id="_NILJpakMEeuE-4LRZz3rew" name="ajouterVariable" visibility="public">
<ownedParameter xmi:id="_NILJpqkMEeuE-4LRZz3rew" name="variable" type="_NILIZ6kMEeuE-4LRZz3rew" isUnique="false">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILJp6kMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILJqKkMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILJqakMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_NILJqqkMEeuE-4LRZz3rew" name="toString" visibility="public">
<ownedParameter xmi:id="_NILJq6kMEeuE-4LRZz3rew" isUnique="false" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILJrKkMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILJrakMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILJrqkMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_NILJr6kMEeuE-4LRZz3rew" name="lireValeurVariable" visibility="public">
<ownedParameter xmi:id="_NILJsKkMEeuE-4LRZz3rew" name="variable" type="_NILIZ6kMEeuE-4LRZz3rew" isUnique="false">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILJsakMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILJsqkMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILJs6kMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
<ownedParameter xmi:id="_NILJtKkMEeuE-4LRZz3rew" type="_NILJQKkMEeuE-4LRZz3rew" isUnique="false" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILJtakMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILJtqkMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILJt6kMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_NILJuKkMEeuE-4LRZz3rew" memberEnd="_NILJoKkMEeuE-4LRZz3rew _NILJuakMEeuE-4LRZz3rew">
<ownedEnd xmi:id="_NILJuakMEeuE-4LRZz3rew" visibility="private" type="_NILJn6kMEeuE-4LRZz3rew" isUnique="false" association="_NILJuKkMEeuE-4LRZz3rew"/>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="_NILJuqkMEeuE-4LRZz3rew" name="motscles">
<packagedElement xmi:type="uml:Package" xmi:id="_NILJu6kMEeuE-4LRZz3rew" name="instructions">
<packagedElement xmi:type="uml:Class" xmi:id="_NILJvKkMEeuE-4LRZz3rew" name="InstructionAffiche">
<generalization xmi:id="_NILJvakMEeuE-4LRZz3rew" general="_NILJzakMEeuE-4LRZz3rew"/>
<ownedAttribute xmi:id="_NILJvqkMEeuE-4LRZz3rew" name="argExpression" visibility="private" type="_NILJWqkMEeuE-4LRZz3rew" isUnique="false" association="_NILJy6kMEeuE-4LRZz3rew">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILJv6kMEeuE-4LRZz3rew"/>
</ownedAttribute>
<ownedOperation xmi:id="_NILJwKkMEeuE-4LRZz3rew" name="InstructionAffiche" visibility="public">
<ownedParameter xmi:id="_NILJwakMEeuE-4LRZz3rew" name="arguments" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILJwqkMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILJw6kMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILJxKkMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
<ownedParameter xmi:id="_NILJxakMEeuE-4LRZz3rew" name="contexte" type="_NILJn6kMEeuE-4LRZz3rew" isUnique="false">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILJxqkMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILJx6kMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILJyKkMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_NILJyakMEeuE-4LRZz3rew" name="executer" visibility="public"/>
<ownedOperation xmi:id="_NILJyqkMEeuE-4LRZz3rew" name="toString" visibility="public"/>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_NILJy6kMEeuE-4LRZz3rew" memberEnd="_NILJvqkMEeuE-4LRZz3rew _NILJzKkMEeuE-4LRZz3rew">
<ownedEnd xmi:id="_NILJzKkMEeuE-4LRZz3rew" visibility="private" type="_NILJvKkMEeuE-4LRZz3rew" isUnique="false" association="_NILJy6kMEeuE-4LRZz3rew"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_NILJzakMEeuE-4LRZz3rew" name="Instruction">
<generalization xmi:id="_NILJzqkMEeuE-4LRZz3rew" general="_NILJ-qkMEeuE-4LRZz3rew"/>
<ownedOperation xmi:id="_NILJz6kMEeuE-4LRZz3rew" name="toString" visibility="public"/>
<ownedOperation xmi:id="_NILJ0KkMEeuE-4LRZz3rew" name="Instruction" visibility="public"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_NILJ0akMEeuE-4LRZz3rew" name="InstructionVar">
<generalization xmi:id="_NILJ0qkMEeuE-4LRZz3rew" general="_NILJzakMEeuE-4LRZz3rew"/>
<ownedAttribute xmi:id="_NILJ06kMEeuE-4LRZz3rew" name="contexte" visibility="private" type="_NILJn6kMEeuE-4LRZz3rew" isUnique="false" association="_NILJ5akMEeuE-4LRZz3rew"/>
<ownedAttribute xmi:id="_NILJ1KkMEeuE-4LRZz3rew" name="argVariable" visibility="private" type="_NILIZ6kMEeuE-4LRZz3rew" isUnique="false" association="_NILJ56kMEeuE-4LRZz3rew"/>
<ownedAttribute xmi:id="_NILJ1akMEeuE-4LRZz3rew" name="argExpression" visibility="private" type="_NILJWqkMEeuE-4LRZz3rew" isUnique="false" association="_NILJ6akMEeuE-4LRZz3rew"/>
<ownedOperation xmi:id="_NILJ1qkMEeuE-4LRZz3rew" name="InstructionVar" visibility="public">
<ownedParameter xmi:id="_NILJ16kMEeuE-4LRZz3rew" name="arguments" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILJ2KkMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILJ2akMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILJ2qkMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
<ownedParameter xmi:id="_NILJ26kMEeuE-4LRZz3rew" name="contexte" type="_NILJn6kMEeuE-4LRZz3rew" isUnique="false">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILJ3KkMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILJ3akMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILJ3qkMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_NILJ36kMEeuE-4LRZz3rew" name="executer" visibility="public"/>
<ownedOperation xmi:id="_NILJ4KkMEeuE-4LRZz3rew" name="toString" visibility="public">
<ownedParameter xmi:id="_NILJ4akMEeuE-4LRZz3rew" isUnique="false" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILJ4qkMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILJ46kMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILJ5KkMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_NILJ5akMEeuE-4LRZz3rew" memberEnd="_NILJ06kMEeuE-4LRZz3rew _NILJ5qkMEeuE-4LRZz3rew">
<ownedEnd xmi:id="_NILJ5qkMEeuE-4LRZz3rew" visibility="private" type="_NILJ0akMEeuE-4LRZz3rew" isUnique="false" association="_NILJ5akMEeuE-4LRZz3rew"/>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_NILJ56kMEeuE-4LRZz3rew" memberEnd="_NILJ1KkMEeuE-4LRZz3rew _NILJ6KkMEeuE-4LRZz3rew">
<ownedEnd xmi:id="_NILJ6KkMEeuE-4LRZz3rew" visibility="private" type="_NILJ0akMEeuE-4LRZz3rew" isUnique="false" association="_NILJ56kMEeuE-4LRZz3rew"/>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_NILJ6akMEeuE-4LRZz3rew" memberEnd="_NILJ1akMEeuE-4LRZz3rew _NILJ6qkMEeuE-4LRZz3rew">
<ownedEnd xmi:id="_NILJ6qkMEeuE-4LRZz3rew" visibility="private" type="_NILJ0akMEeuE-4LRZz3rew" isUnique="false" association="_NILJ6akMEeuE-4LRZz3rew"/>
</packagedElement>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_NILJ66kMEeuE-4LRZz3rew" name="CommandeDebut">
<generalization xmi:id="_NILJ7KkMEeuE-4LRZz3rew" general="_NILJ-qkMEeuE-4LRZz3rew"/>
<ownedAttribute xmi:id="_NILJ7akMEeuE-4LRZz3rew" name="contexte" visibility="private" type="_NILJn6kMEeuE-4LRZz3rew" isUnique="false" association="_NILJ-KkMEeuE-4LRZz3rew"/>
<ownedOperation xmi:id="_NILJ7qkMEeuE-4LRZz3rew" name="CommandeDebut" visibility="public">
<ownedParameter xmi:id="_NILJ76kMEeuE-4LRZz3rew" name="arguments" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILJ8KkMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILJ8akMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILJ8qkMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
<ownedParameter xmi:id="_NILJ86kMEeuE-4LRZz3rew" name="contexte" type="_NILJn6kMEeuE-4LRZz3rew" isUnique="false">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILJ9KkMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILJ9akMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILJ9qkMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_NILJ96kMEeuE-4LRZz3rew" name="executer" visibility="public"/>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_NILJ-KkMEeuE-4LRZz3rew" memberEnd="_NILJ7akMEeuE-4LRZz3rew _NILJ-akMEeuE-4LRZz3rew">
<ownedEnd xmi:id="_NILJ-akMEeuE-4LRZz3rew" visibility="private" type="_NILJ66kMEeuE-4LRZz3rew" isUnique="false" association="_NILJ-KkMEeuE-4LRZz3rew"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_NILJ-qkMEeuE-4LRZz3rew" name="Commande">
<ownedOperation xmi:id="_NILJ-6kMEeuE-4LRZz3rew" name="Commande" visibility="public"/>
<ownedOperation xmi:id="_NILJ_KkMEeuE-4LRZz3rew" name="executer" visibility="public"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_NILJ_akMEeuE-4LRZz3rew" name="CommandeDefs">
<generalization xmi:id="_NILvcKkMEeuE-4LRZz3rew" general="_NILJ-qkMEeuE-4LRZz3rew"/>
<ownedAttribute xmi:id="_NILvcakMEeuE-4LRZz3rew" name="contexte" visibility="private" type="_NILJn6kMEeuE-4LRZz3rew" isUnique="false" association="_NILvfKkMEeuE-4LRZz3rew"/>
<ownedOperation xmi:id="_NILvcqkMEeuE-4LRZz3rew" name="CommandeDefs" visibility="public">
<ownedParameter xmi:id="_NILvc6kMEeuE-4LRZz3rew" name="arguments" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILvdKkMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILvdakMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILvdqkMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
<ownedParameter xmi:id="_NILvd6kMEeuE-4LRZz3rew" name="contexte" type="_NILJn6kMEeuE-4LRZz3rew" isUnique="false">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILveKkMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILveakMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILveqkMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_NILve6kMEeuE-4LRZz3rew" name="executer" visibility="public"/>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_NILvfKkMEeuE-4LRZz3rew" memberEnd="_NILvcakMEeuE-4LRZz3rew _NILvfakMEeuE-4LRZz3rew">
<ownedEnd xmi:id="_NILvfakMEeuE-4LRZz3rew" visibility="private" type="_NILJ_akMEeuE-4LRZz3rew" isUnique="false" association="_NILvfKkMEeuE-4LRZz3rew"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_NILvfqkMEeuE-4LRZz3rew" name="CommandeFin">
<generalization xmi:id="_NILvf6kMEeuE-4LRZz3rew" general="_NILJ-qkMEeuE-4LRZz3rew"/>
<ownedOperation xmi:id="_NILvgKkMEeuE-4LRZz3rew" name="CommandeFin" visibility="public">
<ownedParameter xmi:id="_NILvgakMEeuE-4LRZz3rew" name="arguments" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILvgqkMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILvg6kMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILvhKkMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
<ownedParameter xmi:id="_NILvhakMEeuE-4LRZz3rew" name="contexte" type="_NILJn6kMEeuE-4LRZz3rew" isUnique="false">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NILvhqkMEeuE-4LRZz3rew" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NILvh6kMEeuE-4LRZz3rew" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_NILviKkMEeuE-4LRZz3rew" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_NILviakMEeuE-4LRZz3rew" name="executer" visibility="public"/>
</packagedElement>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_NILviqkMEeuE-4LRZz3rew" name="Analyseur">
<ownedAttribute xmi:id="_NILvi6kMEeuE-4LRZz3rew" name="contexte" visibility="private" type="_NILJn6kMEeuE-4LRZz3rew" isUnique="false" association="_NILvjakMEeuE-4LRZz3rew"/>
<ownedAttribute xmi:id="_NILvjKkMEeuE-4LRZz3rew" name="entreeStandard Scanner" visibility="private" type="_NILvj6kMEeuE-4LRZz3rew" isUnique="false"/>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_NILvjakMEeuE-4LRZz3rew" memberEnd="_NILvi6kMEeuE-4LRZz3rew _NILvjqkMEeuE-4LRZz3rew">
<ownedEnd xmi:id="_NILvjqkMEeuE-4LRZz3rew" visibility="private" type="_NILviqkMEeuE-4LRZz3rew" isUnique="false" association="_NILvjakMEeuE-4LRZz3rew"/>
</packagedElement>
</packagedElement>
<packagedElement xmi:type="uml:PrimitiveType" xmi:id="_NILvj6kMEeuE-4LRZz3rew" name="undefined"/>
<profileApplication xmi:id="_NJD5MKkMEeuE-4LRZz3rew">
<eAnnotations xmi:id="_NJD5MakMEeuE-4LRZz3rew" source="http://www.eclipse.org/uml2/2.0.0/UML">
<references xmi:type="ecore:EPackage" href="default.profile.xmi#_NIq3p6kMEeuE-4LRZz3rew"/>
</eAnnotations>
<appliedProfile href="default.profile.xmi#_NIq3oKkMEeuE-4LRZz3rew"/>
</profileApplication>
<profileApplication xmi:id="_NJFHUKkMEeuE-4LRZz3rew">
<eAnnotations xmi:id="_NJFHUakMEeuE-4LRZz3rew" source="http://www.eclipse.org/uml2/2.0.0/UML">
<references xmi:type="ecore:EPackage" href="JavaExtensions.profile.xmi#_NI7WV6kMEeuE-4LRZz3rew"/>
</eAnnotations>
<appliedProfile href="JavaExtensions.profile.xmi#_NI7WUKkMEeuE-4LRZz3rew"/>
</profileApplication>
</uml:Model>
<default:create xmi:id="_NJGVcKkMEeuE-4LRZz3rew" base_Operation="_NILIaakMEeuE-4LRZz3rew"/>
<JavaExtensions:JavaClass xmi:id="_NJGVcakMEeuE-4LRZz3rew" base_Class="_NILIfKkMEeuE-4LRZz3rew"/>
<default:create xmi:id="_NJG8gKkMEeuE-4LRZz3rew" base_Operation="_NILIkakMEeuE-4LRZz3rew"/>
<default:create xmi:id="_NJG8gakMEeuE-4LRZz3rew" base_Operation="_NILI0akMEeuE-4LRZz3rew"/>
<JavaExtensions:JavaGetter xmi:id="_NJG8gqkMEeuE-4LRZz3rew" base_Operation="_NILI2qkMEeuE-4LRZz3rew"/>
<JavaExtensions:JavaGetter xmi:id="_NJG8g6kMEeuE-4LRZz3rew" base_Dependency="_NILI6akMEeuE-4LRZz3rew"/>
<JavaExtensions:JavaSetter xmi:id="_NJG8hKkMEeuE-4LRZz3rew" base_Operation="_NILI4akMEeuE-4LRZz3rew"/>
<JavaExtensions:JavaSetter xmi:id="_NJG8hakMEeuE-4LRZz3rew" base_Dependency="_NILI6qkMEeuE-4LRZz3rew"/>
<JavaExtensions:JavaClass xmi:id="_NJG8hqkMEeuE-4LRZz3rew" base_Class="_NILI66kMEeuE-4LRZz3rew"/>
<default:create xmi:id="_NJG8h6kMEeuE-4LRZz3rew" base_Operation="_NILJAKkMEeuE-4LRZz3rew"/>
<JavaExtensions:JavaGetter xmi:id="_NJG8iKkMEeuE-4LRZz3rew" base_Operation="_NILJHKkMEeuE-4LRZz3rew"/>
<JavaExtensions:JavaGetter xmi:id="_NJG8iakMEeuE-4LRZz3rew" base_Dependency="_NILJK6kMEeuE-4LRZz3rew"/>
<JavaExtensions:JavaSetter xmi:id="_NJG8iqkMEeuE-4LRZz3rew" base_Operation="_NILJI6kMEeuE-4LRZz3rew"/>
<JavaExtensions:JavaSetter xmi:id="_NJHjkKkMEeuE-4LRZz3rew" base_Dependency="_NILJLKkMEeuE-4LRZz3rew"/>
<default:create xmi:id="_NJIKoKkMEeuE-4LRZz3rew" base_Operation="_NILJMakMEeuE-4LRZz3rew"/>
<default:create xmi:id="_NJIKoakMEeuE-4LRZz3rew" base_Operation="_NILJQakMEeuE-4LRZz3rew"/>
<default:create xmi:id="_NJIKoqkMEeuE-4LRZz3rew" base_Operation="_NILJSKkMEeuE-4LRZz3rew"/>
<default:create xmi:id="_NJIKo6kMEeuE-4LRZz3rew" base_Operation="_NILJZKkMEeuE-4LRZz3rew"/>
<default:create xmi:id="_NJIKpKkMEeuE-4LRZz3rew" base_Operation="_NILJlqkMEeuE-4LRZz3rew"/>
<default:create xmi:id="_NJIKpakMEeuE-4LRZz3rew" base_Operation="_NILJwKkMEeuE-4LRZz3rew"/>
<default:create xmi:id="_NJIxsKkMEeuE-4LRZz3rew" base_Operation="_NILJ0KkMEeuE-4LRZz3rew"/>
<default:create xmi:id="_NJIxsakMEeuE-4LRZz3rew" base_Operation="_NILJ1qkMEeuE-4LRZz3rew"/>
<default:create xmi:id="_NJIxsqkMEeuE-4LRZz3rew" base_Operation="_NILJ7qkMEeuE-4LRZz3rew"/>
<default:create xmi:id="_NJIxs6kMEeuE-4LRZz3rew" base_Operation="_NILJ-6kMEeuE-4LRZz3rew"/>
<default:create xmi:id="_NJIxtKkMEeuE-4LRZz3rew" base_Operation="_NILvcqkMEeuE-4LRZz3rew"/>
<default:create xmi:id="_NJIxtakMEeuE-4LRZz3rew" base_Operation="_NILvgKkMEeuE-4LRZz3rew"/>
</xmi:XMI>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 230 KiB

-752
View File
@@ -1,752 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<xmi:XMI xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:JavaExtensions="http:///schemas/JavaExtensions/_tlzZoKwzEeuqsdlAtG5Gyg/0" xmlns:default="http:///schemas/default/_tlmlUKwzEeuqsdlAtG5Gyg/0" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/3.0.0/UML" xsi:schemaLocation="http:///schemas/JavaExtensions/_tlzZoKwzEeuqsdlAtG5Gyg/0 JavaExtensions.profile.xmi#_tmBcF6wzEeuqsdlAtG5Gyg http:///schemas/default/_tlmlUKwzEeuqsdlAtG5Gyg/0 default.profile.xmi#_tl3EB6wzEeuqsdlAtG5Gyg">
<uml:Model xmi:id="_tlZJ8KwzEeuqsdlAtG5Gyg" name="Modèle">
<eAnnotations xmi:id="_tlZJ8awzEeuqsdlAtG5Gyg" source="Objing">
<contents xmi:type="uml:Property" xmi:id="_tlZJ8qwzEeuqsdlAtG5Gyg" name="exporterVersion">
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZJ86wzEeuqsdlAtG5Gyg" value="3.0.0"/>
</contents>
</eAnnotations>
<packagedElement xmi:type="uml:Package" xmi:id="_tlZJ9KwzEeuqsdlAtG5Gyg" name="interpreteurlir">
<packagedElement xmi:type="uml:Package" xmi:id="_tlZJ9awzEeuqsdlAtG5Gyg" name="donnees">
<packagedElement xmi:type="uml:Package" xmi:id="_tlZJ9qwzEeuqsdlAtG5Gyg" name="variables">
<packagedElement xmi:type="uml:Class" xmi:id="_tlZJ96wzEeuqsdlAtG5Gyg" name="Variable">
<ownedAttribute xmi:id="_tlZJ-KwzEeuqsdlAtG5Gyg" name="valeur" visibility="private" type="_tlZLAqwzEeuqsdlAtG5Gyg" isUnique="false" aggregation="composite" association="_tlZKIawzEeuqsdlAtG5Gyg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZJ-awzEeuqsdlAtG5Gyg"/>
</ownedAttribute>
<ownedAttribute xmi:id="_tlZJ-qwzEeuqsdlAtG5Gyg" name="identifiant" visibility="private" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
</ownedAttribute>
<ownedOperation xmi:id="_tlZJ-6wzEeuqsdlAtG5Gyg" name="Variable" visibility="protected">
<ownedParameter xmi:id="_tlZJ_KwzEeuqsdlAtG5Gyg" name="indentifiant" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZJ_awzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZJ_qwzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZJ_6wzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_tlZKAKwzEeuqsdlAtG5Gyg" name="isIdentifiant" visibility="public" isStatic="true">
<ownedParameter xmi:id="_tlZKAawzEeuqsdlAtG5Gyg" isUnique="false" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZKAqwzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZKA6wzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZKBKwzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_tlZKBawzEeuqsdlAtG5Gyg" name="compareTo" visibility="public">
<ownedParameter xmi:id="_tlZKBqwzEeuqsdlAtG5Gyg" name="aComparer" type="_tlZJ96wzEeuqsdlAtG5Gyg" isUnique="false">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZKB6wzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZKCKwzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZKCawzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
<ownedParameter xmi:id="_tlZKCqwzEeuqsdlAtG5Gyg" isUnique="false" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZKC6wzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZKDKwzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZKDawzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_tlZKDqwzEeuqsdlAtG5Gyg" name="getValeur" visibility="public">
<ownedParameter xmi:id="_tlZKD6wzEeuqsdlAtG5Gyg" type="_tlZLAqwzEeuqsdlAtG5Gyg" isUnique="false" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZKEKwzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZKEawzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZKEqwzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_tlZKE6wzEeuqsdlAtG5Gyg" name="setValeur" visibility="public">
<ownedParameter xmi:id="_tlZKFKwzEeuqsdlAtG5Gyg" name="nouvelleValeur" type="_tlZLAqwzEeuqsdlAtG5Gyg" isUnique="false">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZKFawzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZKFqwzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZKF6wzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_tlZKGKwzEeuqsdlAtG5Gyg" name="determinerTypeVariable" visibility="public" isStatic="true">
<ownedParameter xmi:id="_tlZKGawzEeuqsdlAtG5Gyg" name="identifiant" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZKGqwzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZKG6wzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZKHKwzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
<ownedParameter xmi:id="_tlZKHawzEeuqsdlAtG5Gyg" type="_tlZJ96wzEeuqsdlAtG5Gyg" isUnique="false" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZKHqwzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZKH6wzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZKIKwzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_tlZKIawzEeuqsdlAtG5Gyg" memberEnd="_tlZJ-KwzEeuqsdlAtG5Gyg _tlZKIqwzEeuqsdlAtG5Gyg">
<ownedEnd xmi:id="_tlZKIqwzEeuqsdlAtG5Gyg" visibility="private" type="_tlZJ96wzEeuqsdlAtG5Gyg" isUnique="false" association="_tlZKIawzEeuqsdlAtG5Gyg"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_tlZKI6wzEeuqsdlAtG5Gyg" name="VariableEntier">
<generalization xmi:id="_tlZKJKwzEeuqsdlAtG5Gyg" general="_tlZJ96wzEeuqsdlAtG5Gyg"/>
<ownedOperation xmi:id="_tlZKJawzEeuqsdlAtG5Gyg" name="compareTo" visibility="public">
<ownedParameter xmi:id="_tlZKJqwzEeuqsdlAtG5Gyg" name="aComparer" type="_tlZKI6wzEeuqsdlAtG5Gyg" isUnique="false">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZKJ6wzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZKKKwzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZKKawzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
<ownedParameter xmi:id="_tlZKKqwzEeuqsdlAtG5Gyg" isUnique="false" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZKK6wzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZKLKwzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZKLawzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_tlZKLqwzEeuqsdlAtG5Gyg" name="equals" visibility="public">
<ownedParameter xmi:id="_tlZKL6wzEeuqsdlAtG5Gyg" name="aComparer" type="_tlZKI6wzEeuqsdlAtG5Gyg" isUnique="false">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZKMKwzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZKMawzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZKMqwzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
<ownedParameter xmi:id="_tlZKM6wzEeuqsdlAtG5Gyg" isUnique="false" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZKNKwzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZKNawzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZKNqwzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_tlZKN6wzEeuqsdlAtG5Gyg" name="isEntier" visibility="public" isStatic="true">
<ownedParameter xmi:id="_tlZKOKwzEeuqsdlAtG5Gyg" name="aTester" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZKOawzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZKOqwzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZKO6wzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
<ownedParameter xmi:id="_tlZKPKwzEeuqsdlAtG5Gyg" isUnique="false" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZKPawzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZKPqwzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZKP6wzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_tlZKQKwzEeuqsdlAtG5Gyg" name="toString" visibility="public">
<ownedParameter xmi:id="_tlZKQawzEeuqsdlAtG5Gyg" isUnique="false" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZKQqwzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZKQ6wzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZKRKwzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_tlZKRawzEeuqsdlAtG5Gyg" name="VariableEntier" visibility="public">
<ownedParameter xmi:id="_tlZKRqwzEeuqsdlAtG5Gyg" name="id" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZKR6wzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZKSKwzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZKSawzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
<ownedParameter xmi:id="_tlZKSqwzEeuqsdlAtG5Gyg" name="entier" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZKS6wzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZKTKwzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZKTawzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_tlZKTqwzEeuqsdlAtG5Gyg" name="getValeur" visibility="public">
<ownedParameter xmi:id="_tlZKT6wzEeuqsdlAtG5Gyg" type="_tlZKjqwzEeuqsdlAtG5Gyg" isUnique="false" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZKUKwzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZKUawzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZKUqwzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_tlZKU6wzEeuqsdlAtG5Gyg" name="setValeur" visibility="public">
<ownedParameter xmi:id="_tlZKVKwzEeuqsdlAtG5Gyg" name="nouvelleValeur" type="_tlZKjqwzEeuqsdlAtG5Gyg" isUnique="false">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZKVawzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZKVqwzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZKV6wzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_tlZKWKwzEeuqsdlAtG5Gyg" name="VariableChaine">
<generalization xmi:id="_tlZKWawzEeuqsdlAtG5Gyg" general="_tlZJ96wzEeuqsdlAtG5Gyg"/>
<ownedOperation xmi:id="_tlZKWqwzEeuqsdlAtG5Gyg" name="compareTo" visibility="public">
<ownedParameter xmi:id="_tlZKW6wzEeuqsdlAtG5Gyg" name="aComparer" type="_tlZKWKwzEeuqsdlAtG5Gyg" isUnique="false">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZKXKwzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZKXawzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZKXqwzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
<ownedParameter xmi:id="_tlZKX6wzEeuqsdlAtG5Gyg" isUnique="false" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZKYKwzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZKYawzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZKYqwzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_tlZKY6wzEeuqsdlAtG5Gyg" name="equals" visibility="public">
<ownedParameter xmi:id="_tlZKZKwzEeuqsdlAtG5Gyg" name="aComparer" type="_tlZKWKwzEeuqsdlAtG5Gyg" isUnique="false">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZKZawzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZKZqwzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZKZ6wzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
<ownedParameter xmi:id="_tlZKaKwzEeuqsdlAtG5Gyg" isUnique="false" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZKaawzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZKaqwzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZKa6wzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_tlZKbKwzEeuqsdlAtG5Gyg" name="VariableChaine" visibility="public">
<ownedParameter xmi:id="_tlZKbawzEeuqsdlAtG5Gyg" name="chaineCaracteres" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZKbqwzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZKb6wzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZKcKwzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_tlZKcawzEeuqsdlAtG5Gyg" name="isChaine" visibility="public" isStatic="true">
<ownedParameter xmi:id="_tlZKcqwzEeuqsdlAtG5Gyg" name="aTester" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZKc6wzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZKdKwzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZKdawzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
<ownedParameter xmi:id="_tlZKdqwzEeuqsdlAtG5Gyg" isUnique="false" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZKd6wzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZKeKwzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZKeawzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_tlZKeqwzEeuqsdlAtG5Gyg" name="toString" visibility="public">
<ownedParameter xmi:id="_tlZKe6wzEeuqsdlAtG5Gyg" isUnique="false" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZKfKwzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZKfawzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZKfqwzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_tlZKf6wzEeuqsdlAtG5Gyg" name="getValeur" visibility="public">
<ownedParameter xmi:id="_tlZKgKwzEeuqsdlAtG5Gyg" type="_tlZK4awzEeuqsdlAtG5Gyg" isUnique="false" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZKgawzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZKgqwzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZKg6wzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_tlZKhKwzEeuqsdlAtG5Gyg" name="setValeur" visibility="public">
<ownedParameter xmi:id="_tlZKhawzEeuqsdlAtG5Gyg" name="nouvelleValeur" type="_tlZK4awzEeuqsdlAtG5Gyg" isUnique="false">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZKhqwzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZKh6wzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZKiKwzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_tlZKiawzEeuqsdlAtG5Gyg" memberEnd="_tlZLWawzEeuqsdlAtG5Gyg _tlZKiqwzEeuqsdlAtG5Gyg">
<ownedEnd xmi:id="_tlZKiqwzEeuqsdlAtG5Gyg" visibility="private" type="_tlZLWKwzEeuqsdlAtG5Gyg" isUnique="false" association="_tlZKiawzEeuqsdlAtG5Gyg"/>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_tlZKi6wzEeuqsdlAtG5Gyg" memberEnd="_tlZLi6wzEeuqsdlAtG5Gyg _tlZKjKwzEeuqsdlAtG5Gyg">
<ownedEnd xmi:id="_tlZKjKwzEeuqsdlAtG5Gyg" visibility="private" type="_tlZLiKwzEeuqsdlAtG5Gyg" isUnique="false" association="_tlZKi6wzEeuqsdlAtG5Gyg"/>
</packagedElement>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="_tlZKjawzEeuqsdlAtG5Gyg" name="types">
<packagedElement xmi:type="uml:Class" xmi:id="_tlZKjqwzEeuqsdlAtG5Gyg" name="Entier">
<generalization xmi:id="_tlZKj6wzEeuqsdlAtG5Gyg" general="_tlZLAqwzEeuqsdlAtG5Gyg"/>
<ownedAttribute xmi:id="_tlZKkKwzEeuqsdlAtG5Gyg" name="valeur" visibility="private" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
</ownedAttribute>
<ownedOperation xmi:id="_tlZKkawzEeuqsdlAtG5Gyg" name="Entier" visibility="public">
<ownedParameter xmi:id="_tlZKkqwzEeuqsdlAtG5Gyg" name="valeur" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZKk6wzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZKlKwzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZKlawzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_tlZKlqwzEeuqsdlAtG5Gyg" name="getValeur" visibility="public">
<ownedParameter xmi:id="_tlZKl6wzEeuqsdlAtG5Gyg" isUnique="false" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZKmKwzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZKmawzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZKmqwzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_tlZKm6wzEeuqsdlAtG5Gyg" name="toString" visibility="public">
<ownedParameter xmi:id="_tlZKnKwzEeuqsdlAtG5Gyg" isUnique="false" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZKnawzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZKnqwzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZKn6wzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_tlZKoKwzEeuqsdlAtG5Gyg" name="somme" visibility="public" isStatic="true">
<ownedParameter xmi:id="_tlZKoawzEeuqsdlAtG5Gyg" name="premier" type="_tlZKjqwzEeuqsdlAtG5Gyg" isUnique="false">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZKoqwzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZKo6wzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZKpKwzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
<ownedParameter xmi:id="_tlZKpawzEeuqsdlAtG5Gyg" name="second" type="_tlZKjqwzEeuqsdlAtG5Gyg" isUnique="false">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZKpqwzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZKp6wzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZKqKwzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
<ownedParameter xmi:id="_tlZKqawzEeuqsdlAtG5Gyg" type="_tlZKjqwzEeuqsdlAtG5Gyg" isUnique="false" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZKqqwzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZKq6wzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZKrKwzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_tlZKrawzEeuqsdlAtG5Gyg" name="soustrait" visibility="public" isStatic="true">
<ownedParameter xmi:id="_tlZKrqwzEeuqsdlAtG5Gyg" name="premier" type="_tlZKjqwzEeuqsdlAtG5Gyg" isUnique="false">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZKr6wzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZKsKwzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZKsawzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
<ownedParameter xmi:id="_tlZKsqwzEeuqsdlAtG5Gyg" name="second" type="_tlZKjqwzEeuqsdlAtG5Gyg" isUnique="false">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZKs6wzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZKtKwzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZKtawzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
<ownedParameter xmi:id="_tlZKtqwzEeuqsdlAtG5Gyg" type="_tlZKjqwzEeuqsdlAtG5Gyg" isUnique="false" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZKt6wzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZKuKwzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZKuawzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_tlZKuqwzEeuqsdlAtG5Gyg" name="multiplie" visibility="public" isStatic="true">
<ownedParameter xmi:id="_tlZKu6wzEeuqsdlAtG5Gyg" name="premier" type="_tlZKjqwzEeuqsdlAtG5Gyg" isUnique="false">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZKvKwzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZKvawzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZKvqwzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
<ownedParameter xmi:id="_tlZKv6wzEeuqsdlAtG5Gyg" name="second" type="_tlZKjqwzEeuqsdlAtG5Gyg" isUnique="false">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZKwKwzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZKwawzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZKwqwzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
<ownedParameter xmi:id="_tlZKw6wzEeuqsdlAtG5Gyg" type="_tlZKjqwzEeuqsdlAtG5Gyg" isUnique="false" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZKxKwzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZKxawzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZKxqwzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_tlZKx6wzEeuqsdlAtG5Gyg" name="quotient" visibility="public" isStatic="true">
<ownedParameter xmi:id="_tlZKyKwzEeuqsdlAtG5Gyg" name="premier" type="_tlZKjqwzEeuqsdlAtG5Gyg" isUnique="false">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZKyawzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZKyqwzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZKy6wzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
<ownedParameter xmi:id="_tlZKzKwzEeuqsdlAtG5Gyg" name="second" type="_tlZKjqwzEeuqsdlAtG5Gyg" isUnique="false">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZKzawzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZKzqwzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZKz6wzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
<ownedParameter xmi:id="_tlZK0KwzEeuqsdlAtG5Gyg" type="_tlZKjqwzEeuqsdlAtG5Gyg" isUnique="false" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZK0awzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZK0qwzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZK06wzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_tlZK1KwzEeuqsdlAtG5Gyg" name="reste" visibility="public" isStatic="true">
<ownedParameter xmi:id="_tlZK1awzEeuqsdlAtG5Gyg" name="premier" type="_tlZKjqwzEeuqsdlAtG5Gyg" isUnique="false">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZK1qwzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZK16wzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZK2KwzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
<ownedParameter xmi:id="_tlZK2awzEeuqsdlAtG5Gyg" name="second" type="_tlZKjqwzEeuqsdlAtG5Gyg" isUnique="false">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZK2qwzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZK26wzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZK3KwzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
<ownedParameter xmi:id="_tlZK3awzEeuqsdlAtG5Gyg" type="_tlZKjqwzEeuqsdlAtG5Gyg" isUnique="false" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZK3qwzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZK36wzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZK4KwzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_tlZK4awzEeuqsdlAtG5Gyg" name="Chaine">
<generalization xmi:id="_tlZK4qwzEeuqsdlAtG5Gyg" general="_tlZLAqwzEeuqsdlAtG5Gyg"/>
<ownedAttribute xmi:id="_tlZK46wzEeuqsdlAtG5Gyg" name="valeur" visibility="private" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
</ownedAttribute>
<ownedAttribute xmi:id="_tlZK5KwzEeuqsdlAtG5Gyg" name="LG_MAX_CHAINE" visibility="public" isStatic="true" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
<defaultValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZK5awzEeuqsdlAtG5Gyg" value="70"/>
</ownedAttribute>
<ownedOperation xmi:id="_tlZK5qwzEeuqsdlAtG5Gyg" name="Chaine" visibility="public">
<ownedParameter xmi:id="_tlZK56wzEeuqsdlAtG5Gyg" name="valeur" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZK6KwzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZK6awzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZK6qwzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_tlZK66wzEeuqsdlAtG5Gyg" name="getValeur" visibility="public">
<ownedParameter xmi:id="_tlZK7KwzEeuqsdlAtG5Gyg" isUnique="false" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZK7awzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZK7qwzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZK76wzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_tlZK8KwzEeuqsdlAtG5Gyg" name="toString" visibility="public">
<ownedParameter xmi:id="_tlZK8awzEeuqsdlAtG5Gyg" isUnique="false" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZK8qwzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZK86wzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZK9KwzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_tlZK9awzEeuqsdlAtG5Gyg" name="concat" visibility="public" isStatic="true">
<ownedParameter xmi:id="_tlZK9qwzEeuqsdlAtG5Gyg" name="premier" type="_tlZK4awzEeuqsdlAtG5Gyg" isUnique="false">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZK96wzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZK-KwzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZK-awzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
<ownedParameter xmi:id="_tlZK-qwzEeuqsdlAtG5Gyg" name="second" type="_tlZK4awzEeuqsdlAtG5Gyg" isUnique="false">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZK-6wzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZK_KwzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZK_awzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
<ownedParameter xmi:id="_tlZK_qwzEeuqsdlAtG5Gyg" type="_tlZK4awzEeuqsdlAtG5Gyg" isUnique="false" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZK_6wzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZLAKwzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZLAawzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_tlZLAqwzEeuqsdlAtG5Gyg" name="Type">
<ownedOperation xmi:id="_tlZLA6wzEeuqsdlAtG5Gyg" name="Type" visibility="public"/>
<ownedOperation xmi:id="_tlZLBKwzEeuqsdlAtG5Gyg" name="toString" visibility="public">
<ownedParameter xmi:id="_tlZLBawzEeuqsdlAtG5Gyg" isUnique="false" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZLBqwzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZLB6wzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZLCKwzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
</ownedOperation>
</packagedElement>
</packagedElement>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_tlZLCawzEeuqsdlAtG5Gyg" name="InterpreteurLIR">
<ownedOperation xmi:id="_tlZLCqwzEeuqsdlAtG5Gyg" name="main" visibility="public" isStatic="true"/>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="_tlZLC6wzEeuqsdlAtG5Gyg" name="expressions">
<packagedElement xmi:type="uml:Class" xmi:id="_tlZLDKwzEeuqsdlAtG5Gyg" name="Expression">
<ownedAttribute xmi:id="_tlZLDawzEeuqsdlAtG5Gyg" name="operandeG Object" visibility="private" type="_tlZL2KwzEeuqsdlAtG5Gyg" isUnique="false"/>
<ownedAttribute xmi:id="_tlZLDqwzEeuqsdlAtG5Gyg" name="operandeD Object" visibility="private" type="_tlZL2KwzEeuqsdlAtG5Gyg" isUnique="false"/>
<ownedAttribute xmi:id="_tlZLD6wzEeuqsdlAtG5Gyg" name="operateur" visibility="private" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
</ownedAttribute>
<ownedAttribute xmi:id="_tlZLEKwzEeuqsdlAtG5Gyg" name="contexteGlobal" visibility="private" isStatic="true" type="_tlZLWKwzEeuqsdlAtG5Gyg" isUnique="false"/>
<ownedOperation xmi:id="_tlZLEawzEeuqsdlAtG5Gyg" name="toString" visibility="public">
<ownedParameter xmi:id="_tlZLEqwzEeuqsdlAtG5Gyg" isUnique="false" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZLE6wzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZLFKwzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZLFawzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_tlZLFqwzEeuqsdlAtG5Gyg" name="Expression" visibility="protected">
<ownedParameter xmi:id="_tlZLF6wzEeuqsdlAtG5Gyg" name="texteExpression" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZLGKwzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZLGawzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZLGqwzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_tlZLG6wzEeuqsdlAtG5Gyg" name="referencerContexte" visibility="public" isStatic="true">
<ownedParameter xmi:id="_tlZLHKwzEeuqsdlAtG5Gyg" name="aReferencer" type="_tlZLWKwzEeuqsdlAtG5Gyg" isUnique="false">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZLHawzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZLHqwzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZLH6wzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
<ownedParameter xmi:id="_tlZLIKwzEeuqsdlAtG5Gyg" isUnique="false" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZLIawzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZLIqwzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZLI6wzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_tlZLJKwzEeuqsdlAtG5Gyg" name="calculer" visibility="public">
<ownedParameter xmi:id="_tlZLJawzEeuqsdlAtG5Gyg" type="_tlZLAqwzEeuqsdlAtG5Gyg" isUnique="false" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZLJqwzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZLJ6wzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZLKKwzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_tlZLKawzEeuqsdlAtG5Gyg" name="determinerTypeExpression" visibility="public" isStatic="true">
<ownedParameter xmi:id="_tlZLKqwzEeuqsdlAtG5Gyg" name="texteExpression" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZLK6wzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZLLKwzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZLLawzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
<ownedParameter xmi:id="_tlZLLqwzEeuqsdlAtG5Gyg" type="_tlZLDKwzEeuqsdlAtG5Gyg" isUnique="false" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZLL6wzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZLMKwzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZLMawzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_tlZLMqwzEeuqsdlAtG5Gyg" name="ExpressionEntier">
<generalization xmi:id="_tlZLM6wzEeuqsdlAtG5Gyg" general="_tlZLDKwzEeuqsdlAtG5Gyg"/>
<ownedOperation xmi:id="_tlZLNKwzEeuqsdlAtG5Gyg" name="calculer" visibility="public">
<ownedParameter xmi:id="_tlZLNawzEeuqsdlAtG5Gyg" type="_tlZKjqwzEeuqsdlAtG5Gyg" isUnique="false" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZLNqwzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZLN6wzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZLOKwzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_tlZLOawzEeuqsdlAtG5Gyg" name="toString" visibility="public">
<ownedParameter xmi:id="_tlZLOqwzEeuqsdlAtG5Gyg" isUnique="false" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZLO6wzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZLPKwzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZLPawzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_tlZLPqwzEeuqsdlAtG5Gyg" name="ExpressionEntier" visibility="public">
<ownedParameter xmi:id="_tlZLP6wzEeuqsdlAtG5Gyg" name="texteExpression" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZLQKwzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZLQawzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZLQqwzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_tlZLQ6wzEeuqsdlAtG5Gyg" name="ExpressionChaine">
<generalization xmi:id="_tlZLRKwzEeuqsdlAtG5Gyg" general="_tlZLDKwzEeuqsdlAtG5Gyg"/>
<ownedOperation xmi:id="_tlZLRawzEeuqsdlAtG5Gyg" name="ExpressionChaine" visibility="public">
<ownedParameter xmi:id="_tlZLRqwzEeuqsdlAtG5Gyg" name="texteExpression" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZLR6wzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZLSKwzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZLSawzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_tlZLSqwzEeuqsdlAtG5Gyg" name="toString" visibility="public">
<ownedParameter xmi:id="_tlZLS6wzEeuqsdlAtG5Gyg" isUnique="false" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZLTKwzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZLTawzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZLTqwzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_tlZLT6wzEeuqsdlAtG5Gyg" name="calculer" visibility="public">
<ownedParameter xmi:id="_tlZLUKwzEeuqsdlAtG5Gyg" type="_tlZK4awzEeuqsdlAtG5Gyg" isUnique="false" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZLUawzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZLUqwzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZLU6wzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_tlZLVKwzEeuqsdlAtG5Gyg" memberEnd="_tlZLd6wzEeuqsdlAtG5Gyg _tlZLVawzEeuqsdlAtG5Gyg">
<ownedEnd xmi:id="_tlZLVawzEeuqsdlAtG5Gyg" visibility="private" type="_tlZLdawzEeuqsdlAtG5Gyg" isUnique="false" association="_tlZLVKwzEeuqsdlAtG5Gyg"/>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_tlZLVqwzEeuqsdlAtG5Gyg" memberEnd="_tlZLjKwzEeuqsdlAtG5Gyg _tlZLV6wzEeuqsdlAtG5Gyg">
<ownedEnd xmi:id="_tlZLV6wzEeuqsdlAtG5Gyg" visibility="private" type="_tlZLiKwzEeuqsdlAtG5Gyg" isUnique="false" association="_tlZLVqwzEeuqsdlAtG5Gyg"/>
</packagedElement>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_tlZLWKwzEeuqsdlAtG5Gyg" name="Contexte">
<ownedAttribute xmi:id="_tlZLWawzEeuqsdlAtG5Gyg" name="variable" visibility="private" type="_tlZJ96wzEeuqsdlAtG5Gyg" isUnique="false" aggregation="composite" association="_tlZKiawzEeuqsdlAtG5Gyg"/>
<ownedAttribute xmi:id="_tlZLWqwzEeuqsdlAtG5Gyg" name="listeVariables" visibility="private" type="_tlZJ96wzEeuqsdlAtG5Gyg" isUnique="false">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZLW6wzEeuqsdlAtG5Gyg" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZLXKwzEeuqsdlAtG5Gyg"/>
</ownedAttribute>
<ownedOperation xmi:id="_tlZLXawzEeuqsdlAtG5Gyg" name="raz" visibility="public"/>
<ownedOperation xmi:id="_tlZLXqwzEeuqsdlAtG5Gyg" name="ajouterVariable" visibility="public">
<ownedParameter xmi:id="_tlZLX6wzEeuqsdlAtG5Gyg" name="variable" type="_tlZJ96wzEeuqsdlAtG5Gyg" isUnique="false">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZLYKwzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZLYawzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZLYqwzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_tlZLY6wzEeuqsdlAtG5Gyg" name="toString" visibility="public">
<ownedParameter xmi:id="_tlZLZKwzEeuqsdlAtG5Gyg" isUnique="false" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZLZawzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZLZqwzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZLZ6wzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_tlZLaKwzEeuqsdlAtG5Gyg" name="lireValeurVariable" visibility="public">
<ownedParameter xmi:id="_tlZLaawzEeuqsdlAtG5Gyg" name="variable" type="_tlZJ96wzEeuqsdlAtG5Gyg" isUnique="false">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZLaqwzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZLa6wzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZLbKwzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
<ownedParameter xmi:id="_tlZLbawzEeuqsdlAtG5Gyg" isUnique="false" direction="return">
<eAnnotations xmi:id="_tlZLbqwzEeuqsdlAtG5Gyg" source="Objing">
<contents xmi:type="uml:Property" xmi:id="_tlZLb6wzEeuqsdlAtG5Gyg" name="isNoType"/>
</eAnnotations>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZLcKwzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZLcawzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZLcqwzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="_tlZLc6wzEeuqsdlAtG5Gyg" name="motscles">
<packagedElement xmi:type="uml:Package" xmi:id="_tlZLdKwzEeuqsdlAtG5Gyg" name="instructions">
<packagedElement xmi:type="uml:Class" xmi:id="_tlZLdawzEeuqsdlAtG5Gyg" name="InstructionAffiche">
<generalization xmi:id="_tlZLdqwzEeuqsdlAtG5Gyg" general="_tlZLhKwzEeuqsdlAtG5Gyg"/>
<ownedAttribute xmi:id="_tlZLd6wzEeuqsdlAtG5Gyg" name="argExpression" visibility="private" type="_tlZLDKwzEeuqsdlAtG5Gyg" isUnique="false" association="_tlZLVKwzEeuqsdlAtG5Gyg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZLeKwzEeuqsdlAtG5Gyg"/>
</ownedAttribute>
<ownedOperation xmi:id="_tlZLeawzEeuqsdlAtG5Gyg" name="InstructionAffiche" visibility="public">
<ownedParameter xmi:id="_tlZLeqwzEeuqsdlAtG5Gyg" name="arguments" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZLe6wzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZLfKwzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZLfawzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
<ownedParameter xmi:id="_tlZLfqwzEeuqsdlAtG5Gyg" name="contexte" type="_tlZLWKwzEeuqsdlAtG5Gyg" isUnique="false">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZLf6wzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZLgKwzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZLgawzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_tlZLgqwzEeuqsdlAtG5Gyg" name="executer" visibility="public"/>
<ownedOperation xmi:id="_tlZLg6wzEeuqsdlAtG5Gyg" name="toString" visibility="public"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_tlZLhKwzEeuqsdlAtG5Gyg" name="Instruction">
<generalization xmi:id="_tlZLhawzEeuqsdlAtG5Gyg" general="_tlZLqawzEeuqsdlAtG5Gyg"/>
<ownedOperation xmi:id="_tlZLhqwzEeuqsdlAtG5Gyg" name="toString" visibility="public"/>
<ownedOperation xmi:id="_tlZLh6wzEeuqsdlAtG5Gyg" name="Instruction" visibility="public"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_tlZLiKwzEeuqsdlAtG5Gyg" name="InstructionVar">
<generalization xmi:id="_tlZLiawzEeuqsdlAtG5Gyg" general="_tlZLhKwzEeuqsdlAtG5Gyg"/>
<ownedAttribute xmi:id="_tlZLiqwzEeuqsdlAtG5Gyg" name="contexte" visibility="private" type="_tlZLWKwzEeuqsdlAtG5Gyg" isUnique="false" association="_tlZLxawzEeuqsdlAtG5Gyg"/>
<ownedAttribute xmi:id="_tlZLi6wzEeuqsdlAtG5Gyg" name="argVariable" visibility="private" type="_tlZJ96wzEeuqsdlAtG5Gyg" isUnique="false" association="_tlZKi6wzEeuqsdlAtG5Gyg"/>
<ownedAttribute xmi:id="_tlZLjKwzEeuqsdlAtG5Gyg" name="argExpression" visibility="private" type="_tlZLDKwzEeuqsdlAtG5Gyg" isUnique="false" association="_tlZLVqwzEeuqsdlAtG5Gyg"/>
<ownedOperation xmi:id="_tlZLjawzEeuqsdlAtG5Gyg" name="InstructionVar" visibility="public">
<ownedParameter xmi:id="_tlZLjqwzEeuqsdlAtG5Gyg" name="arguments" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZLj6wzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZLkKwzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZLkawzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
<ownedParameter xmi:id="_tlZLkqwzEeuqsdlAtG5Gyg" name="contexte" type="_tlZLWKwzEeuqsdlAtG5Gyg" isUnique="false">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZLk6wzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZLlKwzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZLlawzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_tlZLlqwzEeuqsdlAtG5Gyg" name="executer" visibility="public"/>
<ownedOperation xmi:id="_tlZLl6wzEeuqsdlAtG5Gyg" name="toString" visibility="public">
<ownedParameter xmi:id="_tlZLmKwzEeuqsdlAtG5Gyg" isUnique="false" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZLmawzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZLmqwzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZLm6wzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
</ownedOperation>
</packagedElement>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_tlZLnKwzEeuqsdlAtG5Gyg" name="CommandeDebut">
<generalization xmi:id="_tlZLnawzEeuqsdlAtG5Gyg" general="_tlZLqawzEeuqsdlAtG5Gyg"/>
<ownedAttribute xmi:id="_tlZLnqwzEeuqsdlAtG5Gyg" name="contexte" visibility="private" type="_tlZLWKwzEeuqsdlAtG5Gyg" isUnique="false" association="_tlZLx6wzEeuqsdlAtG5Gyg"/>
<ownedOperation xmi:id="_tlZLn6wzEeuqsdlAtG5Gyg" name="CommandeDebut" visibility="public">
<ownedParameter xmi:id="_tlZLoKwzEeuqsdlAtG5Gyg" name="arguments" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZLoawzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZLoqwzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZLo6wzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
<ownedParameter xmi:id="_tlZLpKwzEeuqsdlAtG5Gyg" name="contexte" type="_tlZLWKwzEeuqsdlAtG5Gyg" isUnique="false">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZLpawzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZLpqwzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZLp6wzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_tlZLqKwzEeuqsdlAtG5Gyg" name="executer" visibility="public"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_tlZLqawzEeuqsdlAtG5Gyg" name="Commande">
<ownedOperation xmi:id="_tlZLqqwzEeuqsdlAtG5Gyg" name="Commande" visibility="public"/>
<ownedOperation xmi:id="_tlZLq6wzEeuqsdlAtG5Gyg" name="executer" visibility="public"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_tlZLrKwzEeuqsdlAtG5Gyg" name="CommandeDefs">
<generalization xmi:id="_tlZLrawzEeuqsdlAtG5Gyg" general="_tlZLqawzEeuqsdlAtG5Gyg"/>
<ownedAttribute xmi:id="_tlZLrqwzEeuqsdlAtG5Gyg" name="contexte" visibility="private" type="_tlZLWKwzEeuqsdlAtG5Gyg" isUnique="false" association="_tlZLyawzEeuqsdlAtG5Gyg"/>
<ownedOperation xmi:id="_tlZLr6wzEeuqsdlAtG5Gyg" name="CommandeDefs" visibility="public">
<ownedParameter xmi:id="_tlZLsKwzEeuqsdlAtG5Gyg" name="arguments" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZLsawzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZLsqwzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZLs6wzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
<ownedParameter xmi:id="_tlZLtKwzEeuqsdlAtG5Gyg" name="contexte" type="_tlZLWKwzEeuqsdlAtG5Gyg" isUnique="false">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZLtawzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZLtqwzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZLt6wzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_tlZLuKwzEeuqsdlAtG5Gyg" name="executer" visibility="public"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_tlZLuawzEeuqsdlAtG5Gyg" name="CommandeFin">
<generalization xmi:id="_tlZLuqwzEeuqsdlAtG5Gyg" general="_tlZLqawzEeuqsdlAtG5Gyg"/>
<ownedOperation xmi:id="_tlZLu6wzEeuqsdlAtG5Gyg" name="CommandeFin" visibility="public">
<ownedParameter xmi:id="_tlZLvKwzEeuqsdlAtG5Gyg" name="arguments" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZLvawzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZLvqwzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZLv6wzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
<ownedParameter xmi:id="_tlZLwKwzEeuqsdlAtG5Gyg" name="contexte" type="_tlZLWKwzEeuqsdlAtG5Gyg" isUnique="false">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZLwawzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZLwqwzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZLw6wzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_tlZLxKwzEeuqsdlAtG5Gyg" name="executer" visibility="public"/>
</packagedElement>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_tlZLxawzEeuqsdlAtG5Gyg" memberEnd="_tlZLiqwzEeuqsdlAtG5Gyg _tlZLxqwzEeuqsdlAtG5Gyg">
<ownedEnd xmi:id="_tlZLxqwzEeuqsdlAtG5Gyg" visibility="private" type="_tlZLiKwzEeuqsdlAtG5Gyg" isUnique="false" association="_tlZLxawzEeuqsdlAtG5Gyg"/>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_tlZLx6wzEeuqsdlAtG5Gyg" memberEnd="_tlZLnqwzEeuqsdlAtG5Gyg _tlZLyKwzEeuqsdlAtG5Gyg">
<ownedEnd xmi:id="_tlZLyKwzEeuqsdlAtG5Gyg" visibility="private" type="_tlZLnKwzEeuqsdlAtG5Gyg" isUnique="false" association="_tlZLx6wzEeuqsdlAtG5Gyg"/>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_tlZLyawzEeuqsdlAtG5Gyg" memberEnd="_tlZLrqwzEeuqsdlAtG5Gyg _tlZLyqwzEeuqsdlAtG5Gyg">
<ownedEnd xmi:id="_tlZLyqwzEeuqsdlAtG5Gyg" visibility="private" type="_tlZLrKwzEeuqsdlAtG5Gyg" isUnique="false" association="_tlZLyawzEeuqsdlAtG5Gyg"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_tlZLy6wzEeuqsdlAtG5Gyg" name="Analyseur" clientDependency="_tlZL1awzEeuqsdlAtG5Gyg">
<ownedAttribute xmi:id="_tlZLzKwzEeuqsdlAtG5Gyg" name="contexte" visibility="private" type="_tlZLWKwzEeuqsdlAtG5Gyg" isUnique="false" association="_tlZL1qwzEeuqsdlAtG5Gyg"/>
<ownedAttribute xmi:id="_tlZLzawzEeuqsdlAtG5Gyg" name="entreeStandard Scanner" visibility="private" type="_tlZL2KwzEeuqsdlAtG5Gyg" isUnique="false"/>
<ownedOperation xmi:id="_tlZLzqwzEeuqsdlAtG5Gyg" name="Analyseur" visibility="public"/>
<ownedOperation xmi:id="_tlZLz6wzEeuqsdlAtG5Gyg" name="entrerLigne" visibility="public"/>
<ownedOperation xmi:id="_tlZL0KwzEeuqsdlAtG5Gyg" name="analyserLigne" visibility="public">
<ownedParameter xmi:id="_tlZL0awzEeuqsdlAtG5Gyg" name="ligneSaisie" isUnique="false">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tlZL0qwzEeuqsdlAtG5Gyg" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tlZL06wzEeuqsdlAtG5Gyg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_tlZL1KwzEeuqsdlAtG5Gyg" value=""/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Dependency" xmi:id="_tlZL1awzEeuqsdlAtG5Gyg" name="&lt;&lt;create>>" supplier="_tlZLCawzEeuqsdlAtG5Gyg" client="_tlZLy6wzEeuqsdlAtG5Gyg"/>
<packagedElement xmi:type="uml:Association" xmi:id="_tlZL1qwzEeuqsdlAtG5Gyg" memberEnd="_tlZLzKwzEeuqsdlAtG5Gyg _tlZL16wzEeuqsdlAtG5Gyg">
<ownedEnd xmi:id="_tlZL16wzEeuqsdlAtG5Gyg" visibility="private" type="_tlZLy6wzEeuqsdlAtG5Gyg" isUnique="false" association="_tlZL1qwzEeuqsdlAtG5Gyg"/>
</packagedElement>
</packagedElement>
<packagedElement xmi:type="uml:PrimitiveType" xmi:id="_tlZL2KwzEeuqsdlAtG5Gyg" name="undefined"/>
<profileApplication xmi:id="_tmKmAKwzEeuqsdlAtG5Gyg">
<eAnnotations xmi:id="_tmKmAawzEeuqsdlAtG5Gyg" source="http://www.eclipse.org/uml2/2.0.0/UML">
<references xmi:type="ecore:EPackage" href="default.profile.xmi#_tl3EB6wzEeuqsdlAtG5Gyg"/>
</eAnnotations>
<appliedProfile href="default.profile.xmi#_tl3EAKwzEeuqsdlAtG5Gyg"/>
</profileApplication>
<profileApplication xmi:id="_tmL0IKwzEeuqsdlAtG5Gyg">
<eAnnotations xmi:id="_tmL0IawzEeuqsdlAtG5Gyg" source="http://www.eclipse.org/uml2/2.0.0/UML">
<references xmi:type="ecore:EPackage" href="JavaExtensions.profile.xmi#_tmBcF6wzEeuqsdlAtG5Gyg"/>
</eAnnotations>
<appliedProfile href="JavaExtensions.profile.xmi#_tmBcEKwzEeuqsdlAtG5Gyg"/>
</profileApplication>
</uml:Model>
<default:create xmi:id="_tmMbMKwzEeuqsdlAtG5Gyg" base_Operation="_tlZJ-6wzEeuqsdlAtG5Gyg"/>
<JavaExtensions:JavaClass xmi:id="_tmNCQKwzEeuqsdlAtG5Gyg" base_Class="_tlZKI6wzEeuqsdlAtG5Gyg"/>
<default:create xmi:id="_tmNCQawzEeuqsdlAtG5Gyg" base_Operation="_tlZKRawzEeuqsdlAtG5Gyg"/>
<JavaExtensions:JavaClass xmi:id="_tmNCQqwzEeuqsdlAtG5Gyg" base_Class="_tlZKWKwzEeuqsdlAtG5Gyg"/>
<default:create xmi:id="_tmNpUKwzEeuqsdlAtG5Gyg" base_Operation="_tlZKbKwzEeuqsdlAtG5Gyg"/>
<default:create xmi:id="_tmOQYKwzEeuqsdlAtG5Gyg" base_Operation="_tlZKkawzEeuqsdlAtG5Gyg"/>
<default:create xmi:id="_tmOQYawzEeuqsdlAtG5Gyg" base_Operation="_tlZK5qwzEeuqsdlAtG5Gyg"/>
<default:create xmi:id="_tmOQYqwzEeuqsdlAtG5Gyg" base_Operation="_tlZLA6wzEeuqsdlAtG5Gyg"/>
<default:create xmi:id="_tmOQY6wzEeuqsdlAtG5Gyg" base_Operation="_tlZLFqwzEeuqsdlAtG5Gyg"/>
<default:create xmi:id="_tmOQZKwzEeuqsdlAtG5Gyg" base_Operation="_tlZLPqwzEeuqsdlAtG5Gyg"/>
<default:create xmi:id="_tmOQZawzEeuqsdlAtG5Gyg" base_Operation="_tlZLRawzEeuqsdlAtG5Gyg"/>
<default:create xmi:id="_tmOQZqwzEeuqsdlAtG5Gyg" base_Operation="_tlZLeawzEeuqsdlAtG5Gyg"/>
<default:create xmi:id="_tmOQZ6wzEeuqsdlAtG5Gyg" base_Operation="_tlZLh6wzEeuqsdlAtG5Gyg"/>
<default:create xmi:id="_tmOQaKwzEeuqsdlAtG5Gyg" base_Operation="_tlZLjawzEeuqsdlAtG5Gyg"/>
<default:create xmi:id="_tmO3cKwzEeuqsdlAtG5Gyg" base_Operation="_tlZLn6wzEeuqsdlAtG5Gyg"/>
<default:create xmi:id="_tmO3cawzEeuqsdlAtG5Gyg" base_Operation="_tlZLqqwzEeuqsdlAtG5Gyg"/>
<default:create xmi:id="_tmO3cqwzEeuqsdlAtG5Gyg" base_Operation="_tlZLr6wzEeuqsdlAtG5Gyg"/>
<default:create xmi:id="_tmO3c6wzEeuqsdlAtG5Gyg" base_Operation="_tlZLu6wzEeuqsdlAtG5Gyg"/>
<default:create xmi:id="_tmO3dKwzEeuqsdlAtG5Gyg" base_Operation="_tlZLzqwzEeuqsdlAtG5Gyg"/>
</xmi:XMI>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 157 KiB

File diff suppressed because it is too large Load Diff
Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

-6
View File
@@ -1,6 +0,0 @@
# ignore les fichiers non nécessaire TexStudio
*.synctex.gz
*.aux
*.log
*.out
*.toc
Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

@@ -1,26 +0,0 @@
\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\title{Résumé de cas d'utilisation --- Nom du cas} % à remplacer
\date{} % laisser vide
\author{} % Laisser vide
\begin{document}
\maketitle
\section{Acteurs}
\section{Objectifs}
\section{Pré-conditions, Post-conditions}
\subsection{Pré-conditions}
\subsection{Post-conditions}
\section{Scénario nominal (grandes étapes)}
\section{Scénarios d'échec}
\end{document}
@@ -1,67 +0,0 @@
\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\title{Résumé de cas d'utilisation --- Charger un programme} % à remplacer
\date{} % laisser vide
\author{} % Laisser vide
\begin{document}
\maketitle
\section{Acteurs}
Programmeur : Il entre la commande "charge" suivie du "chemin"/de l'arborescence du fichier que l'on veut charger.
\section{Objectifs}
Charger un programme en mémoire, en ayant pour seule indication son arborescence
\section{Pré-conditions, Post-conditions}
Il faut que le programme ai été préalablement sauvegardé au stocké en mémoire
\subsection{Pré-Condtions}
L'interpréteur LIR est en mode édition.
Il faut que le programme ai été préalablement sauvegardé au stocké en mémoire, et qu'il soit un fichier texte.
Et que sont chemin/arborescence soit accessible à l'interpréteur.
\subsection{Post-Conditions}
Le code source a été entièrement chargé sur LIR alors le chargement s'arrête.
\section{Scénario nominal (grandes étapes)}
\begin{enumerate}
\item Le programmeur veut charger un fichier stocké.
\item Le programmeur consulte l'arborescence de son fichier.
\item Le programmeur entre la commande \verb|charge| suivie de l'arborescence de son fichier.
\item L'interpréteur signale au programmeur que le chargement a pu se faire par un "ok".
\end{enumerate}
\section{Scénarios d'échec}
\paragraph{Point 2 du scénario nominal :} Aucun fichier n'est situé dans l'arborescence signalée
\begin{itemize}
\item L'interpréteur en avise le programmeur au moyen d'un message d'erreur.
\item Retour au point 1.
\end{itemize}
\paragraph{Point 3 du scénario nominal :} Le fichier ne correspond pas au type de fichier accepté par LIR.
\begin{itemize}
\item L'interpréteur affiche un message informant le programmeur.
\item Retour au point 1.
\end{itemize}
\paragraph{Point 4 du scénario nominal :} La ligne de commande est incorrecte.
\begin{itemize}
\item Un message d'erreur en informe le programmeur
\item Retour au point 1.
\end{itemize}
\paragraph{Point 4 du scénario nominal :} Le code source du fichier est corrompu
\begin{itemize}
\item Un message d'erreur en informe le programmeur
\item Retour au point 1.
\end{itemize}
\end{document}
Binary file not shown.
@@ -1,74 +0,0 @@
\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\title{Résumé de cas d'utilisation --- Éditer un programme} % à remplacer
\date{} % laisser vide
\author{} % Laisser vide
\begin{document}
\maketitle
\section{Acteurs}
Programmeur : Il écrit ou modifie un programme à faire exécuter par
l'interpréteur.
\section{Objectifs}
Écrire un nouveau programme ou en modifier un existant dans le
but de l'exécuter ou de le sauvegarder.
\section{Pré-conditions, Post-conditions}
\subsection{Pré-Condtions}
L'interpréteur LIR est en mode édition. Un code vierge est
affiché ou un code préexistant est chargé depuis un fichier.
\subsection{Post-Conditions}
Le code source édité est prêt à être exécuté, abandonné ou sauvegardé,
selon l'intention du programmeur.
\section{Scénario nominal (grandes étapes)}
\begin{enumerate}
\item Le programmeur écrit une ligne de code par instruction, en la
faisant précéder de son étiquette.
\item Le programmeur consulte le code déjà écrit à tout moment avec la
commande \verb|liste|. Selon la syntaxe choisie, l'interpréteur
affiche la plage demandée ou la totalité des lignes de code
du programme dans l'ordre croissant des étiquettes.
\item Le programmeur consulte la liste des identificateurs déclarés et
leurs valeurs en entrant la commande \verb|defs|.
\item Au besoin, le programmeur efface une ou plusieurs lignes avec la
commande \verb|efface|.
\item Au besoin, le programmeur efface les lignes de code et identificateurs
mémorisés et commence un nouveau code avec la commande \verb|debut|.
\end{enumerate}
\section{Scénarios d'échec}
\paragraph{Point 2 du scénario nominal :} Aucune ligne de code n'est écrite ou
la plage de code à afficher n'est pas correcte.
\begin{itemize}
\item L'interpréteur en avise le programmeur au moyen d'un message d'erreur.
\item Retour au point 1.
\end{itemize}
\paragraph{Point 3 du scénario nominal :} Aucun identificateur n'a encore été
déclaré.
\begin{itemize}
\item L'interpréteur affiche un message informant le programmeur.
\item Retour au point 1.
\end{itemize}
\paragraph{Point 4 du scénario nominal :} La plage de ligne à effacer est
incorrecte.
\begin{itemize}
\item Un message d'erreur en informe le programmeur
\item Retour au point 1.
\end{itemize}
\end{document}
@@ -1,41 +0,0 @@
\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\title{Résumé du cas d'utilisation --- Exécuter un programme} % à remplacer
\date{} % laisser vide
\author{} % Laisser vide
\begin{document}
\maketitle
\section{Acteurs}
Programmeur : Il lance l'exécution du programme présentement chargé dans l'interpréteur.
\section{Objectifs}
Le but est d'exécuter les instructions du programme chargé.
\section{Pré-conditions, Post-conditions}
\subsection{Pré-Conditions}
Toutes les instructions chargées sont correctes.
\subsection{Post-Conditions}
Le contexte (variables) de l'interpréteur inclus le contexte final du programme.
\section{Scénario nominal (grandes étapes)}
\begin{enumerate}
\item Le programmeur exécute la commande \textbf{lance}.
\item L'interpréteur exécute l'instruction ayant l'étiquette la plus petite.
\item L'interpréteur passe l'instruction suivante (étiquette supérieure la plus proche sauf si changement du compteur ordinal).
\item Tant qu'il reste des instructions avec une étiquette supérieure retour en 3.
\item Le programme a fini de s'exécuter.
\item Le contrôle est rendu au programmeur qui peut à nouveau saisir.
\end{enumerate}
\section{Scénarios d'échec}
\textbf{Point 2 du scénario nominal :} Aucune instruction est chargée dans l'interpréteur
\par - L'interpréteur affiche un message d'erreur explicite.
\par - Retour au point 6 du scénario nominal.
\end{document}
@@ -1,48 +0,0 @@
\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\title{Résumé de cas d'utilisation --- Exécuter une commande}
\date{} % laisser vide
\author{} % Laisser vide
\begin{document}
\maketitle
\section{Acteurs}
Programmeur : il entre une commande à faire exécuter immédiatement par l'interpréteur.
\section{Objectifs}
Exécuter la commande entrée dans l'interpréteur.
\section{Pré-conditions, Post-conditions}
\subsection{Pré-Conditions}
L'interpréteur LIR est lancé et le curseur est derrière l'invite.
\subsection{Post-Conditions}
La commande est exécutée et le résultat est affiché.
\section{Scénario nominal (grandes étapes)}
\begin{enumerate}
\item Le programmeur écrit derrière l'invite une ligne de commande.
\item Le programmeur valide cette commande.
\item L'interpréteur effectue une analyse lexico-syntaxique.
\item L'interpréteur interprète la ligne de commande.
\end{enumerate}
\section{Scénarios d'échec}
\paragraph{Point 3 du scénario nominal :} la syntaxe de la ligne écrite est incorrecte.
\begin{itemize}
\item Un message d'erreur explicite informe le programmeur.
\item Retour au point 4 du scénario nominal.
\end{itemize}
\paragraph{Point 4 du scénario nominal :} la commande conduit à une erreur d'exécution.
\begin{itemize}
\item Un message d'erreur explicite informe le programmeur.
\item Retour au point 4 du scénario nominal.
\end{itemize}
\end{document}
@@ -1,62 +0,0 @@
\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\title{Résumé de cas d'utilisation --- Sauvegarder le programme dans un fichier}
\date{} % laisser vide
\author{} % Laisser vide
\begin{document}
\maketitle
\section{Acteurs}
Programmeur : il entre la commande de sauvegarde `sauve' suivit du chemin vers le nom du fichie dans lequel on veut sauvegarder le programme.
\section{Objectifs}
L'objectif est de sauvegarder le programme rédigé dans l'interpréteur, dans un fichier texte
\section{Pré-conditions, Post-conditions}
\subsection{Pré-Condtions}
\begin{itemize}
\item Un programme doit être rédigé (au moins une ligne)
\item Le chemin vers le fichier ne doit pas contenir de caractères spéciaux(pour éviter les erreur)
\end{itemize}
\subsection{Post-Conditions}
\begin{itemize}
\item Le fichier doit être crée (si il n'existe pas déjà)
\item Le fichier doit contenir le programme rédigé par le programmeur
\end{itemize}
\section{Scénario nominal (grandes étapes)}
\begin{enumerate}
\item Le programmeur execute la commande de sauvegarde
\item Le programme empèche la saisie à l'utilisateur
\item Le programme sauvegarde le code saisi (en mettant les étiquettes dans l'ordre croissant) et l'enregistre dans un fichier
\item Le programme affiche un message qui indique la fin de la sauvegarde
\item Le programme permet la saisie à l'utilisateur
\end{enumerate}
\section{Scénarios d'échec}
\begin{itemize}
\item Point 2 : Si le chemin du fichier éxécuté dans la commande de sauvegarde contiens des caractères spéciaux;
\begin{enumerate}
\item Affiche un message d'erreur spécifiant qu'il ne faut pas de caractères spéciaux dans le chemin
\item Reprend au point 5
\end{enumerate}
\item Point 3 : Si aucun programme n'as été écrit;
\begin{enumerate}
\item Affiche un message d'erreur spécifiant qu'il faut déjà avoir rédigé le programme avant de le sauvegarder
\item Reprend au point 5
\end{enumerate}
\item Point 3 : Si aucun programme comporte plus de 99999 lignes;
\begin{enumerate}
\item Affiche un message d'erreur spécifiant que le nombre de lignes dépasse la valeur maximale
\item Reprend au point 5
\end{enumerate}
\end{itemize}
\end{document}
@@ -1,6 +0,0 @@
# ignore les fichiers non nécessaire TexStudio
*.synctex.gz
*.aux
*.log
*.out
*.toc
@@ -1,23 +0,0 @@
\documentclass[12pt,a5paper, notitle, oneside]{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage[landscape]{geometry}
\begin{document}
\chapter*{Récit d'utilisation}
\paragraph{Titre : } % Éxrire le titre à la place du commentaire
\paragraph{Récit : } % Écrire nom du récit à la suite
\paragraph{En tant que : } % Remplacer commentaire par rôle
\paragraph{Je souhaite : } % Remplacer commentaire par utlisation
\paragraph{Afin de : } % Remplacer commentaire par objectif
\newpage
\chapter*{Critères d'acceptation}
\paragraph{À partir de : } % donner contexte initial
\paragraph{Alors : } % Donner actions entreprises
\paragraph{Enfin : } % Donner contexte terminal
\end{document}
@@ -1,23 +0,0 @@
\documentclass[12pt,a5paper, notitle, oneside]{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage[landscape]{geometry}
\begin{document}
\chapter*{Récit d'utilisation}
\paragraph{Titre : } Commande var (Chaine de caractères)
\paragraph{Récit : } Initialiser une chaine de caractère dans variable / Changer sa valeur
\paragraph{En tant que : } Programmeur
\paragraph{Je souhaite : } que l'interpréteur LIR stock une chaine dans une variable
\paragraph{Afin de : } pouvoir récupérer/manipuler cette chaine plus tard dans le programme
\newpage
\chapter*{Critères d'acceptation}
\paragraph{À partir du fait : } que j'ai la possibilité de saisir une ligne de commande
\paragraph{Alors : } je tape la commande var et met une chaine de caractère entre double guillements comme valeur : var <nomVariable>="<chaine>"
\paragraph{Enfin : } l'interpréteur enregistre dans la variable spécifié la chaine de caractère voulue et renvoie la variable suivie de sa valeur (en tant que feed-back)
\end{document}
@@ -1,23 +0,0 @@
\documentclass[12pt,a5paper, notitle, oneside]{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage[landscape]{geometry}
\begin{document}
\chapter*{Récit d'utilisation}
\paragraph{Titre : } Commande var (Entier)
\paragraph{Récit : } Initialiser un entier dans variable / Changer sa valeur
\paragraph{En tant que : } Programmeur
\paragraph{Je souhaite : } que l'interpréteur LIR stock un entier dans une variable
\paragraph{Afin de : } pouvoir récupérer/manipuler cet entier plus tard dans le programme
\newpage
\chapter*{Critères d'acceptation}
\paragraph{À partir du fait : } que j'ai la possibilité de saisir une ligne de commande
\paragraph{Alors : } je tape la commande var et met un entier comme valeur : var <nomVariable>=<entier>
\paragraph{Enfin : } l'interpréteur enregistre dans la variable spécifié l'entier voulu et renvoie la variable suivie de sa valeur (en tant que feed-back)
\end{document}
@@ -1,23 +0,0 @@
\documentclass[12pt,a5paper, notitle, oneside]{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage[landscape]{geometry}
\begin{document}
\chapter*{Récit d'utilisation}
\paragraph{Titre : } Commande affiche
\paragraph{Récit : } Provoquer le saut de ligne sur la sortie de texte courante
\paragraph{En tant que : } Programmeur
\paragraph{Je souhaite : } que l'interpréteur LIR saute une ligne sur la sortie de texte courante
\paragraph{Afin de : } Provoquer un saut de ligne sur cette sortie
\newpage
\chapter*{Critères d'acceptation}
\paragraph{À partir du fait : } que j'ai une sortie de texte courante
\paragraph{Alors : } je tape la commande affiche
\paragraph{Enfin : } l'interpréteur saute une ligne sur la sortie de texte courante et nous spécifie si la commande a bien pu s'exécuter sur la console(en tant que feed-back)
\end{document}
@@ -1,23 +0,0 @@
\documentclass[12pt,a5paper, notitle, oneside]{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage[landscape]{geometry}
\begin{document}
\chapter*{Récit d'utilisation}
\paragraph{Titre : } Commande affiche (expression)
\paragraph{Récit : } Afficher le contenu d'une expression sur la console de l'interpréteur
\paragraph{En tant que : } Programmeur
\paragraph{Je souhaite : } que l'interpréteur LIR évalue et affiche le contenu de l'expression que l'on lui donne
\paragraph{Afin de : } pouvoir récupérer/vérifier le/les résultat(s) de son programme
\newpage
\chapter*{Critères d'acceptation}
\paragraph{À partir du fait : } que j'ai la possibilité de saisir une ligne de commande
\paragraph{Alors : } je tape la commande affiche et écrit l'expression dont je veut que la valeur soit affichée à la suite : affiche <expression>
\paragraph{Enfin : } l'interpréteur évalue dans l'expression spécifiée la valeur de celle-ci et renvoie cette valeur sur la console et affiche un résultat sur LIR (en tant que feed-back) pour nous spécifier si la commande a bien pu s'exécuter
\end{document}
@@ -1,32 +0,0 @@
\documentclass[12pt,a5paper, notitle, oneside]{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage[landscape]{geometry}
\begin{document}
\chapter*{Récit d'utilisation}
\paragraph{Titre : } Opérateur + sur les chaînes de caractères
\paragraph{Récit : } Concaténation de chaînes
\paragraph{En tant que : } Programmeur
\paragraph{Je souhaite : } accoler deux chaînes l'une à la suite de l'autre
\paragraph{Afin de : } créer des messages dépendant du contexte d'éxécution sur
la sortie standard. Représenter une valeur entière par son écriture chiffrée en
base 10.
\newpage
\chapter*{Critères d'acceptation}
\paragraph{À partir de : } deux chaînes de caractères ou une chaîne et un entier,
en tant qu'identificateurs déclarés ou expressions littérales.
\paragraph{Alors : } En utilisant une expression de type
\verb|var nouvelleChaine = opeGauche + opeDroite|, j'obtiens la concaténation de
deux chaînes.
\paragraph{Enfin : } L'identificateur \verb|nouvelleChaine| contient la chaîne
constituée des deux primordiales concaténées. L'interpréteur confirme en affichant
la nouvelle valeur ou m'informe d'une erreur. L'opération peut être récursive mais n'est pas commutative. Une concaténation s'effectue toujours par la droite.
\end{document}
@@ -1,25 +0,0 @@
\documentclass[12pt,a5paper, notitle, oneside]{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage[landscape]{geometry}
\begin{document}
\chapter*{Récit d'utilisation}
\paragraph{Titre : } debut
\paragraph{Récit : } Réinitialiser un programme vierge
\paragraph{En tant que : } programmeur
\paragraph{Je souhaite : } vider l'intégralité du contexte d'exécution
\paragraph{Afin de : } pouvoir écrire un nouveau programme
\newpage
\chapter*{Critères d'acceptation}
\paragraph{À partir de : } un programme chargé en mémoire centrale
\paragraph{Alors : } j'efface les lignes de code et variables déclarées
avec la commande \verb|debut|
\paragraph{Enfin : } L'interpréteur affiche une page vierge ; je peux écrire un nouveau
programme.
\end{document}
@@ -1,38 +0,0 @@
\documentclass[12pt,a5paper, notitle, oneside]{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage[landscape, top=0.5cm]{geometry}
\begin{document}
\chapter*{Récit d'utilisation}
\paragraph{Titre : } Expression arithmétique
\paragraph{Récit : } Calcul à l'aide d'expression arithmétique
\paragraph{En tant que : } Programmeur
\paragraph{Je souhaite : } que l'Interpréteur LIR effectue une
opération arithmétique courante (addition, soustraction,
multiplication, quotient ou reste d'une division entière)
\paragraph{Afin que : } j'en exploite ou vois le résultat
\newpage
\chapter*{Critères d'acceptation}
\paragraph{À partir de : } d'une ligne de l'interpréteur ou d'une
ligne de programme à mémoriser et d'identificateurs auxquels une
valeur aura été affectée préalablement ou de constantes littérales
numérique.
\paragraph{Alors : } j'entre une expression composée de deux
opérandes de type entier signé et d'un opérateur.
\\ Les opérandes peuvent être :
\begin{itemize}
\item deux constantes littérales
\item deux identificateurs
\item une constante littérale et un identificateur
\end{itemize}
\paragraph{Enfin : } j'obtiens le résultat de l'opération ou un
message d'erreur m'informant que l'opération est impossible pour les
identificateurs ou constantes littérales saisies.
\end{document}
@@ -1,39 +0,0 @@
\documentclass[12pt,a5paper, notitle, oneside]{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage[landscape, top=0.5cm]{geometry}
\begin{document}
\chapter*{Récit d'utilisation}
\paragraph{Titre : } Expression logique dans un branchement
conditionnel
\paragraph{Récit : } Opérations relationnelles sur deux entiers
\paragraph{En tant que : } Programmeur
\paragraph{Je souhaite : } que l'Interpréteur LIR compare deux
entiers avec une relation d'ordre ou d'équivalence
\paragraph{Afin que : } d'exécuter ou non une branche du code avec
l'instruction si
\newpage
\chapter*{Critères d'acceptation}
\paragraph{À partir de : } d'une ligne de programme à mémoriser et d'identificateurs auxquels une valeur aura été affectée préalablement
ou de constantes littérales de type entier signé.
\paragraph{Alors : } j'entre une expression composée de deux
opérandes de type entier signé et d'un opérateur et l'interpréteur
évalue l'expression.
\\ Les opérandes peuvent être :
\begin{itemize}
\item deux constantes littérales
\item deux identificateurs
\item une constante littérale et un identificateur
\end{itemize}
\paragraph{Enfin : } si l'expression (condition dans l'instruction)
est vraie alors l'exécution continuera à partir du numéro de ligne
spécifié par l’étiquette, sinon l'exécution continuera en séquence.
\end{document}
@@ -1,40 +0,0 @@
\documentclass[12pt,a5paper, notitle, oneside]{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage[landscape, top=0.5cm]{geometry}
\begin{document}
\chapter*{Récit d'utilisation}
\paragraph{Titre : } Expression logique dans un branchement
conditionnel
\paragraph{Récit : } Opérations relationnelles sur deux chaînes de
caractères
\paragraph{En tant que : } Programmeur
\paragraph{Je souhaite : } que l'Interpréteur LIR compare deux
chaînes de caractères avec une relation d'ordre ou d'équivalence
\paragraph{Afin que : } d'exécuter ou non une branche du code avec
l'instruction si
\newpage
\chapter*{Critères d'acceptation}
\paragraph{À partir de : } d'une ligne de programme à mémoriser et d'identificateurs auxquels une valeur aura été affectée préalablement
ou de constantes littérales de type chaîne de caractères.
\paragraph{Alors : } j'entre une expression composée de deux
opérandes de type chaîne de caractères et d'un opérateur et l'interpréteur
évalue l'expression.
\\ Les opérandes peuvent être :
\begin{itemize}
\item deux constantes littérales
\item deux identificateurs
\item une constante littérale et un identificateur
\end{itemize}
\paragraph{Enfin : } si l'expression (condition dans l'instruction)
est vraie alors l'exécution continuera à partir du numéro de ligne
spécifié par l’étiquette, sinon l'exécution continuera en séquence.
\end{document}
@@ -1,31 +0,0 @@
\documentclass[12pt,a5paper, notitle, oneside]{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage[landscape, top=0.5cm]{geometry}
\begin{document}
\chapter*{Récit d'utilisation}
\paragraph{Titre : } Expression sur chaînes
\paragraph{Récit : } Concaténation de chaînes
\paragraph{En tant que : } Programmeur
\paragraph{Je souhaite : } que l'Interpréteur LIR concatène deux chaînes
\paragraph{Afin que : } j'en exploite ou vois le résultat
\newpage
\chapter*{Critères d'acceptation}
\paragraph{À partir de : } d'une ligne de l'interpréteur ou d'une
ligne de programme à mémoriser et d'identificateurs auxquels une
valeur aura été affectée préalablement ou de constantes littérales
de type chaînes de caractères.
\paragraph{Alors : } j'entre une expression composée de deux
opérandes de type chaîne de caractères et d'un opérateur.
\paragraph{Enfin : } j'obtiens le résultat de l'opération ou un
message d'erreur m'informant que l'opération est impossible pour les
identificateurs ou constantes littérales saisies.
\end{document}
@@ -1,26 +0,0 @@
\documentclass[12pt,a5paper, notitle, oneside]{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage[landscape]{geometry}
\begin{document}
\chapter*{Récit d'utilisation}
\paragraph{Titre : } Instructions
\paragraph{Récit : } Consulter et modifier le contexte d'exécution
\paragraph{En tant que : } programmeur
\paragraph{Je souhaite : } faire réaliser des actions par l'interpréteur
\paragraph{Afin de : } déclarer des variables, des fonctions, effectuer des
sauts conditionnels, des itérations, connaître et manipuler le contexte
d'un programme.
\newpage
\chapter*{Critères d'acceptation}
\paragraph{À partir de : } ligne de commande ou programme
\paragraph{Alors : } J'entre une instruction pour effectuer une action précise
\paragraph{Enfin : } Le contexte est modifié en fonction de cette instruction.
L'interpréteur m'informe en cas d'erreur de syntaxe
\end{document}
@@ -1,25 +0,0 @@
\documentclass[12pt,a5paper, notitle, oneside]{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage[landscape]{geometry}
\begin{document}
\chapter*{Récit d'utilisation}
\paragraph{Titre : } Exécution d'une commande % Éxrire le titre à la place du commentaire
\paragraph{Récit : } Exécution d'une commande % Écrire nom du récit à la suite
\paragraph{En tant que : } programmeur avec l'interpréteur LIR % Remplacer commentaire par rôle
\paragraph{Je souhaite : } utiliser une commande directe de l'interpréteur % Remplacer commentaire par utlisation
\paragraph{Afin de : } obtenir le résultat de cette commande % Remplacer commentaire par objectif
\newpage
\chapter*{Critères d'acceptation}
\paragraph{À partir du fait : } que je suis en train d'utiliser l'interpréteur et que j'ai la possibilité d'entrer une ligne % donner contexte initial
\paragraph{Alors : } j'entre une ligne de commande directe et que je la valide % Donner actions entreprises
\paragraph{Enfin : } j'obtiens le résultat de cette commande ou un feedback,
si le résultat n'en est pas un, m'informant du bon déroulé de
l'exécution de la commande ou de son échec % Donner contexte terminal
\end{document}
@@ -1,23 +0,0 @@
\documentclass[12pt,a5paper, notitle, oneside]{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage[landscape]{geometry}
\begin{document}
\chapter*{Récit d'utilisation}
\paragraph{Titre : } Affichages du contexte courant (commande defs) % Écrire le titre à la place du commentaire
\paragraph{Récit : } Affichages du contexte courant (commande defs) % Écrire nom du récit à la suite
\paragraph{En tant que : } programmeur avec l'interpréteur LIR % Remplacer commentaire par rôle
\paragraph{Je souhaite : } voir toutes les variables définies dans la session courante (identificateur et valeur)
\paragraph{Afin de : } connaître le contexte actuel de la session courante de l'interpréteur
\newpage
\chapter*{Critères d'acceptation}
\paragraph{À partir du fait : } des variables sont définies dans la session courante de l'interpréteur
\paragraph{Alors : } je souhaite connaître le contexte actuel en exécutant la commande defs
\paragraph{Enfin : } l'interpréteur affiche chaque variable ligne par ligne avec son identificateur et sa valeur
\end{document}
@@ -1,23 +0,0 @@
\documentclass[12pt,a5paper, notitle, oneside]{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage[landscape]{geometry}
\begin{document}
\chapter*{Récit d'utilisation}
\paragraph{Titre : } Quitter l'interpréteur (commande fin)
\paragraph{Récit : } Quitter l'interpréteur (commande fin)
\paragraph{En tant que : } programmeur avec l'interpréteur LIR
\paragraph{Je souhaite : } quitter l'interpréteur
\paragraph{Afin de : } arrêter d'utiliser l'interpréteur LIR pour la session courante
\newpage
\chapter*{Critères d'acceptation}
\paragraph{À partir du fait : } je suis en train d'utiliser l'interpréteur
\paragraph{Alors : } je souhaite quitter l'interpréteur pour la session courante en exécutant la commande fin
\paragraph{Enfin : } le processus courant de l'interpréteur LIR s'arrête
\end{document}
-6
View File
@@ -1,6 +0,0 @@
# ignore les fichiers non nécessaire TexStudio
*.synctex.gz
*.aux
*.log
*.out
*.toc
Binary file not shown.
@@ -1,128 +0,0 @@
\documentclass[11pt,a4paper,titlepage,openright]{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage[top=1.5cm, bottom=5cm]{geometry}
\usepackage{fancyhdr, graphicx, array, hyperref}
\usepackage{glossaries}
\pagestyle{fancy}
\title{\textsc{\textbf{Gestion de la configuration\\Interpréteur du langage LIR}}}
\date{}
\author{Nicolas \textsc{Caminade} \and Sylvan \textsc{Courtiol} \and Pierre \textsc{Debas} \and Heïa \textsc{Dexter} \and Lucàs \textsc{Vabre} }
\begin{document}
\lhead{Gestion de la configuration}
\rhead{
\includegraphics[width=2cm]{img/logoiut}
}
\cfoot{\thepage}
\headheight = 2cm
\headsep = 1.5cm
\begin{titlepage}
\fontfamily{pag}\selectfont
\begin{center}\normalsize
\MakeUppercase{IUT de Rodez \hfill Département informatique \hfill INFO1 2020-2021}
\end{center}
\vspace*{0.1cm}
\hrule
\vspace*{0.2cm}
\begin{flushright}
\includegraphics[width=4cm]{img/logoiut}
\end{flushright}
\vspace*{2cm}
\begin{flushright}\Huge
\textsc{\textbf{Gestion de la configuration\\Interpréteur du langage LIR}}
\end{flushright}
\hrule
\begin{flushleft}
\MakeUppercase{Projet proposé par Frédérique Barrios}
\end{flushleft}
\vspace*{1cm}
\begin{center}\normalsize
\textbf{version : \today}
\end{center}
\vspace*{1cm}
\begin{center}\Large
Nicolas \textsc{Caminade}, Sylvan \textsc{Courtiol},\\
Pierre \textsc{Debas}, Heïa \textsc{Dexter}, \\
Lucàs \textsc{Vabre}
\end{center}
\vfill
\begin{center}\normalsize
\MakeUppercase{Projet tuteuré --- Semestre 2}
\end{center}
\end{titlepage}
% Sommaire
\renewcommand{\contentsname}{Sommaire}
\tableofcontents
\newpage
% numérotation des sections et sous-section indiféremment des chapitres
\setcounter{section}{0}
\renewcommand{\thesection}{\arabic{section}}
\renewcommand{\thesubsection}{\arabic{section}.\arabic{subsection}}
\section*{Introduction}
\Large
Ce document a pour but de confirmer par écrit la configuration logicielle choisie pour le
projet.
\par Le contenu de ce document nest pas fixé et des changements peuvent être apportés. Cependant ce document doit être connu et suivi par les membres du groupe. En cas de modifications, une annonce sur discord sera faite.
\par Pour toute question ou suggestion se référer au gestionnaire de configuration (présentement
Sylvan COURTIOL).
\normalsize
\section{Logiciels de développement}
\subsection{Environnement de Développement Intégré}
Eclipse JEE (version 2020-12)
\par JDK 15
\subsection{Contrôle des versions du code}
Git avec dépôt sur GitHub. (Un apprentissage est nécessaire
donc pour commencer certaines libertés sont possibles).
\subsection{Organisation}
Via le site Trello (non utilisé pour le moment).
\subsection{Modélisation}
La modélisation UML sera effectuée sur Modelio Open Source (version 4.1).
\section{Logiciels généraux}
\subsection{Communication}
\par Les communications formelles sont effectuées via les mails de lIUT (généralement par le chef
de projet) avec les autres membres du projet en CC.
\par Serveur discord spécifique au projet pour la communication écrite ou vocale de la MOE.
\par Google Meet pour les réunions avec les personnes autres que MOE. Adaptable à ce qui
convient le mieux à cette personne.
\subsection{Éditeur de texte}
Le traitement de texte sera fait sous LaTex notamment avec la distribution MiKTex et l'IDE TexStudio. Les documents texte sont partagés en PDF ou version papier à la MOA/MOE et en format modifiable .tex seulement à la MOE via la solution de partage distant des fichiers (voir sous-section suivante).
\subsection{Partage distant des fichiers}
Les partages de tous les fichiers généraux et codes sources se feront sur GitHub via le site, le logiciel GitHub desktop ou git. Il y aura également une intégration Discord informant des commits.
\section{Sécurité}
\par Si possible tous les membres du groupe auront les mêmes droits sur les fichiers communs.
En conséquence aucun membre du groupe ne doit donner des droits sur ces fichiers à une
personne extérieure au projet (autre que MOA).
\par Les sauvegardes du dépôt GitHub (contenant toutes les données du projets) seront effectuées
régulièrement (tous les 1 ou 2 jours) par le gestionnaire de configuration. Toutes données qui ne
sont pas dans le dépôt sont à la responsabilité de chacun.
Les sauvegardes sont enregistrée en local par le gestionnaire de configuration ainsi que sur le Google drive partagé du projet.
\appendix
%\includepdf[pages=-]{fichiers/BarriosInterpreteurLIR2021}
\end{document}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.
-6
View File
@@ -1,6 +0,0 @@
# ignore les fichiers non nécessaire TexStudio
*.synctex.gz
*.aux
*.log
*.out
*.toc
Binary file not shown.
-318
View File
@@ -1,318 +0,0 @@
\documentclass[11pt,a4paper,titlepage,openright]{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage[top=1.5cm, bottom=4cm]{geometry}
\usepackage{fancyhdr, graphicx, array, hyperref}
\usepackage{glossaries}
\pagestyle{fancy}
\title{\textsc{\textbf{Plan projet\\Interpréteur du langage LIR}}}
\date{}
\author{Nicolas \textsc{Caminade} \and Sylvan \textsc{Courtiol} \and
Pierre \textsc{Debas} \and Heïa \textsc{Dexter} \and Lucàs
\textsc{Vabre} }
\begin{document}
\lhead{\leftmark}
\rhead{
\includegraphics[width=2cm]{img/logoiut}
}
\cfoot{\thepage}
\headheight = 2cm
\headsep = 0.5cm
\begin{titlepage}
\fontfamily{pag}\selectfont
\begin{center}\normalsize
\MakeUppercase{IUT de Rodez \hfill Département informatique
\hfill INFO1 2020-2021}
\end{center}
\vspace*{0.1cm}
\hrule
\vspace*{0.2cm}
\begin{flushright}
\includegraphics[width=4cm]{img/logoiut}
\end{flushright}
\vspace*{2cm}
\begin{flushright}\Huge
\textsc{\textbf{Plan projet\\Interpréteur du langage LIR}}
\end{flushright}
\hrule
\begin{flushleft}
\MakeUppercase{Projet proposé par Frédérique Barrios}
\end{flushleft}
\vspace*{2cm}
\begin{center}\Large
Nicolas \textsc{Caminade}, Sylvan \textsc{Courtiol},\\
Pierre \textsc{Debas}, Heïa \textsc{Dexter}, \\
Lucàs \textsc{Vabre}
\end{center}
\vfill
\begin{center}\normalsize
\MakeUppercase{Projet tuteuré --- Semestre 2}
\end{center}
\end{titlepage}
% Sommaire
\renewcommand{\contentsname}{Sommaire}
\tableofcontents
\chapter*{Introduction}
\Large
Dans le cadre des projets tuteuré du semestre 2 de première année de
DUT informatique de lannée 2020-2021, le sujet de lInterpréteur LIR
a été proposé par F. Barrios, un des enseignants de lIUT de Rodez.
\\Ce document a pour but de rassembler les informations fondamentales
relatives à la gestion du projet. Ce plan projet est un document de
référence du projet qui sera complété tout au long de son avancement.
\normalsize
\chapter{Présentation du projet}
\section{Définition générale du besoin : l'Interpréteur LIR}
LInterpréteur LIR est un interpréteur dun langage de programmation
simple, il sera nommé LIR pour Langage IUT de Rodez.
Un interpréteur est un automate enchaînant les tâches suivantes :
analyse lexico-syntaxique dune ligne de commande puis interprétation.
\\Une ligne entrée par un utilisateur sera donc : soit une commande à
exécuter immédiatement, soit une ligne de programme à mémoriser pour
une exécution ultérieure. Une ligne de programme se distinguera d'une
ligne de commande par le fait qu'elle sera toujours précédée d'un
"numéro d'ordre" appelé aussi "étiquette".
\section{Cahier des charges}
Le document en annexe fourni par la maîtrise douvrage (MOA) définit
linterpréteur attendu avec les éléments du Langage IUT de Rodez, la
syntaxe des instructions de programmation et des commandes générales
attendues dans le logiciel final. Le document précise également le
comportement attendu de linterpréteur lors de son utilisation suivi
dun exemple dune session sous cet interpréteur LIR.
\section{Définitions et acronymes}
\paragraph{Analyse syntaxique :}
La vérification de la conformité aux contraintes syntaxiques
définies par une grammaire.
\paragraph{Analyse lexicale :}
Lidentification des éléments du vocabulaire dun langage dans
une description textuelle (scanning) et la recherche des unités
lexicales (lexèmes).
\paragraph{Grammaire :}
Contraintes syntaxiques définissant les constructions correctes
(autorisées) dun langage.
\paragraph{Interpréteur :}
Programme capable danalyser les instructions dun langage
(évolué) et de les exécuter directement.
\paragraph{Langage :}
Outil de description et dexpression.
\paragraph{Langage IUT de Rodez (LIR)}
\paragraph{Sémantique :}
Étude du sens des unités linguistiques et de leurs combinaisons.
\\Aspect de la logique qui traite de l'interprétation et de la signification des systèmes formels, par opposition à la syntaxe, entendue comme l'étude des relations formelles entre formules de tels systèmes (daprès le dictionnaire Larousse).
\paragraph{Syntaxe :}
Partie de la grammaire qui décrit les règles par lesquelles les unités linguistiques se combinent en phrases. En logique, étude des relations formelles entre expressions d'un langage (daprès le dictionnaire Larousse).
\\Aussi, la syntaxe est spécifiée par des grammaires et des notations formelles.
\paragraph{Vocabulaire :}
Symboles de base utilisés dans un langage.
\section{Charte de projet}
\subsection{Objectifs du projet}
Réaliser un interpréteur capable d'exécuter un script ou une série
d'instructions dans le langage LIR avec les outils et connaissances
et mis à disposition par lIUT de Rodez.
\subsection{Périmètre du projet}
Ce projet est doit être mené jusqu'à obtention dun interpréteur
capable dexécuter toutes les commandes précisées dans le cahier des
charges fourni.
\subsection{Demandes hors périmètre}
Il ny a pas de demandes hors périmètre.
\subsection{Principaux livrables identifiés}
\paragraph{Livrables :} plan projet, dossier de projet, CD (de
préférence un dossier compressé plutôt quun CD) contenant les codes
exécutables les fichiers de données, les codes sources et la version
numérique du dossier et le manuel utilisateur.
\paragraph{Définition du cadre}
\subparagraph{Coût :} À définir par le chef de projet (P. Debas).
\subparagraph{Délais :} Deux dates butoirs identifiées.
\begin{itemize}
\item Remise du projet le vendredi 28 mai 2021.
\item Soutenance du projet la semaine du 7 juin 2021.
\end{itemize}
\subparagraph{Qualité :}
Projet codé en Java dans les respects des conventions et bonnes
pratiques.
\subsection{Les acteurs du projet}
\begin{center}
\begin{tabular}{rl}
L'équipe MOE : & N. CAMINADE, S. COURTIOL, \\
& P. DEBAS, H. DEXTER, \\
& L. VABRE \\
La MOA : & F. Barrios \\
Le contrôle qualité : & F. Barrios et J. Accot \\
\end{tabular}
\end{center}
\subsection{Autres moyens et ressources}
Pas de moyens ou ressources supplémentaires.
\subsection{Conditions dacceptation}
Pas dexigence ou de contraintes supplémentaires.
\subsection{Principaux risques identifiés et politique de gestion des risques}
Si possible tous les membres du groupe auront les mêmes droits sur
les fichiers communs. En conséquence chaque membre du groupe ne doit
pas donner des droits sur ces fichiers à une personne extérieure au
projet (autre que MOA). Cf. Gestion de la configuration (produit par
S. Courtiol).
\\Des sauvegardes du dépôt GitHub (contenant toutes les données du
projets) seront effectuées régulièrement (fréquence à définir) par le
gestionnaire de configuration. Toutes données qui ne sont pas dans le
dépôt sont à la responsabilité de chacun. Cf. Gestion de la
configuration (produit par S. Courtiol).
\section{Étude générale du besoin}
\paragraph{Diagramme de cas d'utilisation général de l'Interpréteur LIR}
comprenant un acteur (le programmeur) et cinq cas d'utilisation
identifiés comme suit :
\\
\includegraphics[width=\linewidth]{img/diagrammeDeCasUtilisation}
\subsection{Les acteurs}
\paragraph{Programmeur :} % TODO à détailler
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris nec ultrices velit. Curabitur convallis non ipsum malesuada fringilla.
\subsection{Résumés de cas d'utilisation}
\subsubsection{Exécuter une commande}
\subsubsection{Exécuter un programme}
\subsubsection{Éditer un programme}
\subsubsection{Sauvegarder le programme dans un fichier}
\subsubsection{Charger un programme depuis un fichier}
%TODO: à ajouter
\subsection{Récits d'utilisation (user stories)}
%TODO: à ajouter
\chapter{Organisation du projet}
\section{Présentation du cycle de vie itératif} % TODO Finir rédaction
Le modèle de cycle de vie choisi est le modèle itératif.
\\Présentation du cycle et ses conséquences sur lorganisation.
Pour développer lInterpréteur LIR, le modèle de cycle de vie itératif a été choisi. Ce modèle de développement de logiciel consiste en une succession de cycles de spécification, de conception, de réalisation et de tests, le but est denrichir et de « remodeler » des prototypes du logiciel successifs. Par conséquent, une version du logiciel sera un « dernier prototype ».
\\La gestion du risque va entraîner la mise en place dun noyau architectural avec des fonctions indispensables du logiciel dès les deux premières itérations. Les itérations suivantes apporteront des corrections et de nouvelles fonctions au logiciel.
\\Les versions successives des prototypes permettent de matérialiser lavancement et d’éviter « leffet tunnel » sur le projet. Ces prototypes (versions 0.x) entretiennent la motivation des différents acteurs du projet : l’équipe MOE, la MOA.
\\Le principe fondamental à chaque début ditération est de ne spécifier en détail que les fonctionnalités nécessaires pour cette itération. Ainsi la prise en compte d’évolutions du besoin reste possible jusqu’à la dernière itération. De même le « refactoring » de la conception (largement facilité par les outils) a lieu à chaque étape pour intégrer des évolutions et des ajouts. Le but étant bien sûr de fabriquer le logiciel adapté au besoin en laissant la possibilité de « mûrir » au cours du temps.
\\Ce type de cycle implique une taille homogène de l’équipe et une polyvalence des équipiers.
\section{Répartition des rôles}
Rôles des membres de l’équipe impliqués dans le projet jusqu'au mois de mai 2021 :
\begin{center}
\begin{tabular}{rl}
Chef de projet MOE & Pierre Debas \\
Secrétaire de projet & Heïa Dexter \\
Gestionnaire de configuration & Sylvan Courtiol \\
Développeur & Nicolas Caminade \\
Développeur & Lucàs Vabre \\
\end{tabular}
\end{center}
\section{Plan communication}
\subsection{Localisation géographique des intervenants}
L'équipe MOE, la MOA et les contrôleurs qualités sont basés sur Rodez (12).
\\La MOA, les contrôleurs qualités, H. Dexter sont basés sur Rodez (12), S. Courtiol sur Luc-La-Primaube à côté de Rodez (12), P. Debas est basé à la fois sur Rodez et à Albi (81), L. Vabre sur Gages (12) et N. Caminade sur Rodez et Moncaut (47).
\subsection{Moyens de communication utilisés}
Les communications formelles sont effectuées via les mails de lIUT (généralement par le chef de projet) avec les autres membres du projet en CC.
\\Serveur Discord spécifique au projet pour communication écrite ou vocale de la MOE.
\\Cf. le document Configuration interpréteur du langage LIR produit par le gestionnaire de configuration (S. Courtiol).
\subsection{Réunions projets MOE}
Les réunions projet MOE seront hebdomadaires voire bi-hebdomadaires et dans le contexte de la crise sanitaire elles se dérouleront en distanciel via Discord (vocal, visio-conférence). Seront prévue des réunions courtes de 20 minutes et des réunions longues de 1h30.
\\Ces réunions auront pour objectif de faire le point sur lavancement du projet, le respect des objectifs fixé sur la période et de fixer les prochains objectifs à remplir dici la prochaine réunions. Aussi ces réunions seront loccasion de faire part de difficultés éventuelles rencontrées par les membres de l’équipe au cours de la semaine et de communiquer les informations sur les prochaines rencontres avec la MOA.
\\Les comptes-rendus seront rédigés par la secrétaire de projet (H. Dexter) et diffusés sur le serveur Discord de l’équipe sous format texte.
\subsection{Comités de Pilotage}
Les comités de pilotage rassembleront la MOA et toute l’équipe de MOE. Les COPIL seront dirigé par le chef de projet éventuellement assisté par le secrétaire.
\\La fréquence des COPIL est au mieux hebdomadaire et dune durée dune demi-heure à trois quarts dheure selon lavancement du projet.
Les comptes-rendus des COPIL seront rédigés par lactuelle secrétaire de projet (H. Dexter) et diffusés le lendemain à la MOE du projet.
\section{Assurance qualité}
\subsection{Normes et standards de travail à observer (formalisme de modélisation, méthodes de contrôle, méthodes de développement, cycle de vie, conventions de code…)}
% TODO: À définir
\subsection{Manuel qualité et démarche qualité à observer (suivant la politique qualité de lorganisation), suivi et contrôle qualité (organisation, fréquence, participants).}
% TODO: À commencer
\section{Ressources matérielles et logicielles}
% principaux matériels, réseaux, systèmes dexploitation, sites intranet-internet (wiki, gestionnaire dincident, référentiel…) et outils de génie logiciel utilisés.
% TODO: ajouter le doc de Sylvan
\chapter{Pilotage du projet}
\section{Cycle de vie itératif}
Pour développer lInterpréteur LIR, le modèle de cycle de vie itératif a été choisi. Ce modèle de développement de logiciel, rappelons-le, consiste en une succession de cycles de spécification, de conception, de réalisation et de tests, le but est denrichir et de « remodeler » des prototypes du logiciel successifs. Par conséquent, une version du logiciel sera un « dernier prototype ».
\\Si le choix de modèle de cycle de vie s'est porté sur le modèle itératif, c'est parce qu'il s'agit d"un modèle "réaliste" et possible à mettre en place dans le cadre des projets tuteurés :
\begin{itemize}
\item Une limitation de "l'effet tunnel" pour une meilleure dynamique et motivation des équipes (MOA et MOE).
\item Une meilleure acceptation des changements grâce aux prototypes.
\item Une meilleure gestion des risques.
\item Est adapté pour une équipe de cinq personnes polyvalentes.
\item Le principe d'itérations où seules les fonctionnalités nécessaires sont spécifiées en détail en début d'itération ce qui permet une évolution du besoin.
\end{itemize}
\section{Estimation initiale}
\section{Planification prévisionnelle initiale}
\section{Durée et ordonnancement des principales tâches et itérations}
\section{Identification des premiers jalons}
\section{Calendrier prévisionnel}
\section{Organisation des réunions projets et comités de pilotage}
\section{Suivi du projet par période}
Pour chaque période :
\subsection{Suivi davancement et mesure des écarts par rapport au prévisionnel revu lors de la période précédente}
\subsection{Synthèse par "tableau de bord"}
\subsection{Résultats des tests et recette de prototype de la période}
\subsection{Résultats des revues/suivis/contrôles qualité de la période}
\subsection{Identification des principaux écarts et problèmes constatés, solutions possibles}
\subsection{Propositions de modification de la planification prévisionnelle pour tenir compte des corrections à apporter}
\subsection{Comptes-rendus des réunions projets de la période}
\subsection{Compte-rendu du comité de pilotage de la période}
\subsection{Planification prévisionnelle révisée pour les périodes suivantes (en fonction des décisions prises)}
% TODO: Glossaire
% TODO: Inclure CdC, GestionConfiguration, Résumés de Cas d'utilisation, Récits d'utilisation
\appendix
%\includepdf[pages=-]{fichiers/BarriosInterpreteurLIR2021}
\end{document}
File diff suppressed because it is too large Load Diff
-1
View File
@@ -1 +0,0 @@
-6
View File
@@ -1,6 +0,0 @@
# ignore les fichiers non nécessaire TexStudio
*.synctex.gz
*.aux
*.log
*.out
*.toc
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
-6
View File
@@ -1,6 +0,0 @@
# ignore les fichiers non nécessaire TexStudio
*.synctex.gz
*.aux
*.log
*.out
*.toc
Binary file not shown.
-89
View File
@@ -1,89 +0,0 @@
\documentclass[11pt,a4paper,titlepage,openright]{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage[top=1.5cm, bottom=5cm]{geometry}
\usepackage{fancyhdr, graphicx, array, hyperref}
%\usepackage{array}
\pagestyle{fancy}
\title{\textsc{\textbf{ % TODO Titre de votre document à remplacer
\\Interpréteur du langage LIR}
}}
\date{}
\author{Nicolas \textsc{Caminade} \and Sylvan \textsc{Courtiol} \and Pierre
\textsc{Debas} \and Heïa \textsc{Dexter} \and Lucàs \textsc{Vabre} }
\begin{document}
% En-tête et pied de page ........................................
\lhead{\leftmark}
\rhead{
\includegraphics[width=2cm]{img/logoiut}
}
\cfoot{\thepage}
\headheight = 2cm
\headsep = 1.5cm
% Page de garde ..................................................
\begin{titlepage}
\fontfamily{pag}\selectfont
\begin{center}\normalsize
\MakeUppercase{IUT de Rodez \hfill Département informatique
\hfill INFO1 2020-2021}
\end{center}
\vspace*{0.1cm}
\hrule
\vspace*{0.2cm}
\begin{flushright}
\includegraphics[width=4cm]{img/logoiut}
\end{flushright}
\vspace*{2cm}
\begin{flushright}\Huge
\textsc{\textbf{ % TODO Titre de votre document à remplacer
\\Interpréteur du langage LIR}}
\end{flushright}
\hrule
\begin{flushleft}
\MakeUppercase{Projet proposé par Frédérique Barrios}
\end{flushleft}
\vspace*{2cm}
\begin{center}\Large
Nicolas \textsc{Caminade}, Sylvan \textsc{Courtiol},\\
Pierre \textsc{Debas}, Heïa \textsc{Dexter}, \\
Lucàs \textsc{Vabre}
\end{center}
\vfill
\begin{center}\normalsize
\MakeUppercase{Projet tuteuré --- Semestre 2}
\end{center}
\end{titlepage}
% Sommaire à conserver ou supprimer ..............................
\renewcommand{\contentsname}{Sommaire}
\tableofcontents
\chapter*{Introduction}
\Large
% Début de votre introduction ....................................
Texte d'introduction % TODO écrire l'introduction
% Fin de votre introduction ......................................
\normalsize
% Début du corps de votre document ...............................
\chapter{ ... } % TODO nommer chapitre
\section{ ... } % TODO nommer section
Texte section. % TODO écrire paragraphe
\chapter{ ... } % TODO nommer chapitre
\section{ ... } % TODO nommer section
Texte section. % TODO écrire paragraphe
% Fin du corps de votre document .................................
\end{document}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
Binary file not shown.
+165
View File
@@ -0,0 +1,165 @@
/**
* Analyseur.java 9 mai 2021
* IUT Rodez info1 2020-2021, pas de copyright, aucun droit
*/
package interpreteurlir;
import java.lang.reflect.InvocationTargetException;
import java.util.Scanner;
import interpreteurlir.expressions.Expression;
import interpreteurlir.motscles.Commande;
/**
* Analyseur de l'entrée standard du programme interpréteur LIR.
* @author Nicolas Caminade
* @author Sylvan Courtiol
* @author Pierre Debas
* @author Heïa Dexter
* @author Lucas Vabre
*/
public class Analyseur {
/** Symbole d'invite de commande */
public static final String INVITE = "? ";
/** Message feedback ok */
public static final String OK_FEEDBACK = "ok";
/** Message feedback not ok */
public static final String NOK_FEEDBACK = "nok : ";
/** analyseur de l'entrée standard */
private Scanner entree;
/** contexte de cet analyseur */
private Contexte contexteGlobal;
/**
* Initialise un analyseur ayant son propre contexte.
*/
public Analyseur() {
super();
entree = new Scanner(System.in);
contexteGlobal = new Contexte();
Expression.referencerContexte(contexteGlobal);
}
/**
* Lance la boucle qui demande puis exécute des commandes ou instructions
* saisies par l'utilisateur.
*/
public void mainLoop() {
String ligneSaisie;
for (;;) {
System.out.print(INVITE);
ligneSaisie = entree.nextLine().trim();
String[] decoupage = ligneSaisie.split(" ", 2);
String motCle = decoupage.length >= 1 ? decoupage[0] : "";
String arguments = decoupage.length >= 2 ? decoupage[1] : "";
executerCommande(motCle, arguments.trim());
}
}
/**
* Recherche la commande et exécute cette commande si présente.
* Affiche un feedback si la commande ne s'en occupe pas ou erreur.
* @param motCle chaîne contenant le mot clé de la commande/instruction
* @param arguments reste de la ligne saisie après le mot clé
*/
private void executerCommande(String motCle, String arguments) {
Class<?> aExecuter;
/* recherche de la class */
try {
aExecuter = rechercheCommande(motCle);
Class<?> classeArg = String.class;
Class<?> classeContexte = Contexte.class;
Commande cmd = (Commande)aExecuter
.getConstructor(classeArg, classeContexte)
.newInstance(arguments, contexteGlobal);
feedback(cmd.executer());
} catch ( InvocationTargetException | IllegalAccessException
| InstantiationException | NoSuchMethodException
| InterpreteurException lancee) {
System.err.println(NOK_FEEDBACK
+ (lancee.getMessage() != null
? lancee.getMessage()
: lancee.getCause().getMessage()));
}
}
/**
* Affiche feedback de bon déroulement
* d'une commande si celle ci n'affiche rien.
* @param afficheRien true si feedback déjà fait par la commande sinon false
*/
private static void feedback(boolean afficheRien) {
if (!afficheRien) {
System.out.println(OK_FEEDBACK);
}
}
/**
* Recherche la commande ou instruction correspondant au mot clé.
* <ul><li>Les commandes doivent être
* dans le package interpreteurlir.motscles</li>
* <li>Les instructions doivent être
* dans le package interpreteurlir.motscles.instructions</li>
* <ul>
* La classe correspondant doit avoir un nom qui se finit avec le mot clé
* (première lettre en majuscule)
* @param motCle mot clé de la commande/ instruction
* @return Classe de cette commande.
* @throws InterpreteurException si motCle est vide, null ou non reconnue
*/
private static Class<?> rechercheCommande(String motCle) {
final String ERREUR_VIDE = "ligne vide";
final String ERREUR_INCONNU = "mot clé inconnu";
final String CLASS_PATH_CMD = "interpreteurlir.motscles.Commande";
final String CLASS_PATH_INST =
"interpreteurlir.motscles.instructions.Instruction";
if (motCle == null || motCle.isBlank()) {
throw new InterpreteurException(ERREUR_VIDE);
}
motCle = (Character.toUpperCase(motCle.charAt(0)))
+ (motCle.length() > 1 ? motCle.substring(1) : "");
Class<?> aChercher;
try {
aChercher = Class.forName(CLASS_PATH_CMD + motCle);
} catch(ClassNotFoundException nonCmd) {
try {
aChercher = Class.forName(CLASS_PATH_INST + motCle);
} catch(ClassNotFoundException nonInst) {
throw new InterpreteurException(ERREUR_INCONNU);
}
}
return aChercher;
}
/**
* Lancement de l'interpréteur LIR.
* Un analyseur est créé.
* @param args non utilisé
*/
public static void main(String[] args) {
final String MESSAGE_LANCEMENT =
"Interpréteur Langage IUT de Rodez, bienvenue !\n"
+ "Entrez vos commandes et instructions après linvite "
+ INVITE + "\n";
System.out.println(MESSAGE_LANCEMENT);
new Analyseur().mainLoop();
}
}
+147
View File
@@ -0,0 +1,147 @@
/**
* Contexte.java 7 mai 2021
* IUT Rodez info1 2020-2021, pas de copyright, aucun droit
*/
package interpreteurlir;
import java.util.ArrayList;
import interpreteurlir.donnees.*;
import interpreteurlir.donnees.litteraux.*;
/**
* Le contexte contiens l'ensemble des variables définies au cours d'un session
* d'interpréteur LIR.
* Il est le seul moyen d'accéder et modifier ces variables.
* Il sert donc d'interface entre le programme et les variables.
* L'accès à une variable se fait à partir d'un Identificateur.
* Les variables sont listée par ordre alphabétique des identificateurs.
* @author Nicolas Caminade
* @author Sylvan Courtiol
* @author Pierre Debas
* @author Heïa Dexter
* @author Lucas Vabre
*/
public class Contexte {
/** Valeur par défaut pour une Chaine */
public static final Chaine CHAINE_DEFAUT = new Chaine("\"\"");
/** Valeur par défaut pour un Entier */
public static final Entier ENTIER_DEFAUT = new Entier(0);
/** Listes des variables définies dans ce contexte */
private ArrayList<Variable> variables;
/**
* Initialise un contexte vide (aucune variable de définie)
*/
public Contexte() {
super();
variables = new ArrayList<Variable>();
}
/**
* Affecte valeur à la variable dans le contexte
* ayant pour identificateur id.
* Si cette variable n'existe pas alors elle est créée
* et référence dans le contexte.
* @param id identificateur typé de la Variable
* @param valeur valeur typée à affecter à la variable
* @throws InterpreteurException si Variable lance l'exception.
* {@link Variable#Variable(Identificateur, Litteral)}
*/
public void ajouterVariable(Identificateur id, Litteral valeur) {
int indexVar = indexVariable(id);
/* Ajout de variable absente à la fin */
if (variables.size() == indexVar) {
variables.add(indexVar, new Variable(id, valeur));
return;
}
// else
Variable varAIndex = variables.get(indexVar);
/* Variable déjà présente */
if (varAIndex.getIdentificateur().compareTo(id) == 0) {
varAIndex.setValeur(valeur);
} else {
/* Variable absente : ajout à son index trié */
variables.add(indexVar, new Variable(id, valeur));
}
}
/**
* Lecture de la valeur d'une variable du contexte.
* @param id identificateur de la variable dont on veut la valeur
* @return Si la variable est définie alors sa valeur est retournée.
* Sinon la valeur par défaut (CHAINE_DEFAUT ou ENTIER_DEFAUT)
* selon type de id est retournée.
*/
public Litteral lireValeurVariable(Identificateur id) {
Litteral valeur;
int indexVar = indexVariable(id);
if (variables.size() > indexVar
&& variables.get(indexVar).getIdentificateur().compareTo(id)
== 0) {
/* La variables est présente */
valeur = variables.get(indexVar).getValeur();
} else if (id instanceof IdentificateurChaine) {
valeur = CHAINE_DEFAUT;
} else {
valeur = ENTIER_DEFAUT;
}
return valeur;
}
/**
* Recherche de l'index théorique ou réel de la variable ayant id comme
* identificateur.
* @param id identificateur dont on cherche l'index de la variable
* @return index de la Variable ayant id comme identificateur.
* Si la variable n'existe pas alors c'est l'index de la place
* théorique de variable pour qu'elle soit triée qui est renvoyé.
*/
private int indexVariable(Identificateur id) {
int index;
int taille = variables.size();
for (index = 0; index < taille; index++) {
if (variables.get(index).getIdentificateur().compareTo(id) >= 0) {
return index;
}
}
return index;
}
/* non javadoc
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
final String MSG_VIDE = "aucune variable n'est définie\n";
int taille = variables.size();
if (taille == 0) {
return MSG_VIDE;
}
// else
StringBuilder resultat = new StringBuilder("");
for (int index = 0 ; index < taille ; index++) {
resultat.append(variables.get(index) + "\n");
}
return resultat.toString();
}
/**
* Remise à zéro du contexte.
* Efface toutes les variables mémorisée par le contexte.
*/
public void raz() {
variables.clear();
}
}
@@ -0,0 +1,25 @@
/**
* InterpreteurException.java 7 mai 2021
* IUT Rodez info1 2020-2021, pas de copyright, aucun droit
*/
package interpreteurlir;
/**
* Exception levée lors d'une erreur dans l'interpreteur LIR.
* (Erreur de syntaxe, erreur de types)
* @author Nicolas Caminade
* @author Sylvan Courtiol
* @author Pierre Debas
* @author Heïa Dexter
* @author Lucas Vabre
*/
public class InterpreteurException extends RuntimeException {
/**
* Une exception de syntaxe expliquée par un message
* @param message explication succincte de cette exception
*/
public InterpreteurException(String message) {
super(message);
}
}
@@ -0,0 +1,130 @@
/*
* Identificateur.java , 08/05/2021
* IUT Rodez 2020-2021, info1
* pas de copyright, aucun droits
*/
package interpreteurlir.donnees;
import interpreteurlir.InterpreteurException;
/**
* @author Nicolas Caminade
* @author Sylvan Courtiol
* @author Pierre Debas
* @author Heia Dexter
* @author Lucas Vabre
*/
public class Identificateur /* extends Variable */
implements Comparable<Identificateur> {
/** Longueur maximale d'un identificateur (ne prend pas en compte le $) */
public static final int LONGUEUR_MAX = 24;
/** Nom identificateur */
private String nom;
/**
* Instantiation de l'identificateur
* @param identificateur
*/
public Identificateur(String identificateur) {
super();
if(!isIdentificateur(identificateur)) {
throw new InterpreteurException(identificateur
+ " n'est pas un identificateur");
}
nom = identificateur;
}
/**
* Prédicat qui vérifie si une chaîne correspond à un identificateur
* <ul>
* <li>Longueur comprise entre 1 et 24 caractères</li>
* <li>N'est pas une chaîne vide</li>
* <li>N'est pas null</li>
* </ul>
* @param aComparer
* @return true si le prédicat est vérifié
* false sinon
*/
public static boolean isIdentificateur(String aComparer) {
return aComparer != null
&& aComparer.length() > 0
&& !removeDollar(aComparer).isBlank()
&& removeDollar(aComparer).length() <= LONGUEUR_MAX
&& isAlphanumerique(removeDollar(aComparer));
}
/**
* Supprime le caractère $ si il est présent en premier dans la chaîne
* @param chaine a modifier
* @return la chaîne modifiée
*/
public static String removeDollar(String chaine) {
if(chaine.charAt(0) == '$') return chaine.substring(1);
return chaine;
}
/**
* Prédicat testant si une chaîne est composée de chiffre ou de lettres
* @param aTester chaîne a tester
* @return true si le prédicat est vérifié
* false sinon
*/
public static boolean isAlphanumerique(String aTester) {
int index;
for (index = 0 ;
index < aTester.length()
&& (isLettre(aTester.charAt(index))
|| isChiffre(aTester.charAt(index)));
index++)
; // Corps vide
return index >= aTester.length();
}
/**
* Prédicat attestant si un caractère est une lettre
* @param aTester caractère a tester
* @return true si le prédicat est vérifié
* false sinon
*/
public static boolean isLettre(char aTester) {
return 'a' <= aTester && aTester <= 'z'
|| 'A' <= aTester && aTester <= 'Z';
}
/**
* Prédicat attestant si un caractère est un chiffre
* @param aTester caractère a tester
* @return true si le prédicat est vérifié
* false sinon
*/
public static boolean isChiffre(char aTester) {
return '0' <= aTester && aTester <= '9';
}
/**
* @return la valeur de nom
*/
public String getNom() {
return nom;
}
/* non javadoc - @see java.lang.Object#toString() */
@Override
public String toString() {
return nom;
}
/* non javadoc - @see java.lang.String#Comparable() */
@Override
public int compareTo(Identificateur aComparer) {
return nom.compareTo(aComparer.nom);
}
}
@@ -0,0 +1,49 @@
/*
* IdentificateurChaine.java, 08/05/2021
* IUT Rodez 2020-2021, info1
* pas de copyright, aucun droits
*/
package interpreteurlir.donnees;
import interpreteurlir.InterpreteurException;
/**
* Identificateur de chaîne
* @author Nicolas Caminade
* @author Sylvan Courtiol
* @author Pierre Debas
* @author Heia Dexter
* @author Lucas Vabre
*/
public class IdentificateurChaine extends Identificateur {
/**
* Instantiation d'identificateur de chaîne
* @param identificateur a instancier
* @throws InterpreteurException si l'identificateur est invalide
*/
public IdentificateurChaine(String identificateur) {
super(identificateur.trim());
identificateur = identificateur.trim();
if(!isIdentificateurChaine(identificateur)) {
throw new InterpreteurException(identificateur
+ " n'est pas un identificateur"
+ " de chaine");
}
}
/**
* Prédicat attestant la validité de l'identificateur
* @param identificateur à tester
* @return true si l'identificateur est bien un identificateur d'entier
* false sinon
*/
private static boolean isIdentificateurChaine(String identificateur) {
return identificateur.length() >= 2
&& identificateur.charAt(0) == '$'
&& isLettre(identificateur.charAt(1));
}
}
@@ -0,0 +1,53 @@
/*
* IdentificateurEntier.java , 08/05/2021
* IUT Rodez 2020-2021, info1
* pas de copyright, aucun droits
*/
package interpreteurlir.donnees;
import interpreteurlir.InterpreteurException;
/**
* Identificateur d'entier
* @author Nicolas Caminade
* @author Sylvan Courtiol
* @author Pierre Debas
* @author Heia Dexter
* @author Lucas Vabre
*/
public class IdentificateurEntier extends Identificateur {
/**
* Instantiation d'identificateur d'entier
* @param identificateur a instancier
* @throws InterpreteurException si l'identificateur est invalide
*/
public IdentificateurEntier(String identificateur) {
super(identificateur);
if(!isIdentificateurEntier(identificateur)) {
throw new InterpreteurException(identificateur
+ " n'est pas un identificateur"
+ " d'entier");
}
}
/**
* Prédicat attestant la validité de l'identificateur
*
* Un identificateur d'entier est valide si
* - Il contient au maximum 24 caractères
* - Commence obligatoirement par une lettre (majuscule ou minuscule)
* - suivie uniquement de lettres (majuscule ou minuscule) ou de chiffres
*
* @param identificateur à tester
* @return true si l'identificateur est bien un identificateur d'entier
* false sinon
*/
private static boolean isIdentificateurEntier(String identificateur) {
return isLettre(identificateur.charAt(0))
&& isAlphanumerique(identificateur.substring(1));
}
}
+93
View File
@@ -0,0 +1,93 @@
/**
* Variable.java 8 mai 2021
* IUT-Rodez info1 2020-2021, pas de droits, pas de copyrights
*/
package interpreteurlir.donnees;
import interpreteurlir.donnees.litteraux.Chaine;
import interpreteurlir.donnees.litteraux.Litteral;
import interpreteurlir.InterpreteurException;
/**
* Associe un littéral à un identificateur
*
* @author Nicolas Caminade
* @author Sylvan Courtiol
* @author Pierre Debas
* @author Heia Dexter
* @author Lucas Vabre
*
*/
public class Variable extends Object implements Comparable<Variable> {
/** Identificateur de cette variable */
private Identificateur identificateur;
/** Valeur de cette variable */
private Litteral valeur;
/**
* Initialise une variable
* @param identificateur associé à cette variable
* @param valeur associé à cette variable
* @throws InterpreteurException en cas d'incompatibilité entre
* l'identificateur et le type de la valeur à lui associer
*/
public Variable(Identificateur identificateur, Litteral valeur) {
if (!isVariable(identificateur, valeur)) {
throw new InterpreteurException("Identificateur '"
+ identificateur.toString()
+ "' et type de "
+ valeur.toString()
+ "incompatible.");
}
this.identificateur = identificateur;
this.valeur = valeur;
}
private static boolean isVariable(Identificateur id, Litteral valeur) {
return id instanceof IdentificateurChaine && valeur instanceof Chaine
/* || id instanceof IdentificateurEntier && valeur instanceof Entier */;
}
/**
* @return la valeur de cette variable
*/
public Litteral getValeur() {
return valeur;
}
/**
* Modifie la valeur de cette variable
* @param nouvelleValeur
*/
public void setValeur(Litteral nouvelleValeur) {
if (isVariable(identificateur, nouvelleValeur)) {
this.valeur = nouvelleValeur;
}
}
/**
* @return l'identificateur de cette variable
*/
public Identificateur getIdentificateur() {
return identificateur;
}
/* non javadoc @see java.lang.Object#toString() */
@Override
public String toString() {
return identificateur.toString() + " = " + valeur.toString();
}
public int compareTo(Variable aComparer) {
return identificateur.compareTo(aComparer.identificateur);
}
}
@@ -0,0 +1,83 @@
/**
* Chaine.java 7 mai 2021
* IUT info1 2020-2021, pas de copyright, aucun droit
*/
package interpreteurlir.donnees.litteraux;
import interpreteurlir.InterpreteurException;
/**
* Constante littérale de type chaîne de caractères.
* @author Nicolas Caminade
* @author Sylvan Courtiol
* @author Pierre Debas
* @author Heïa Dexter
* @author Lucas Vabre
*/
public class Chaine extends Litteral {
/** Longueur maximale d'une chaîne */
public static final int LG_MAX_CHAINE = 70;
/** Erreur chaîne trop longue */
private static final String ERREUR_LG_MAX = "Longueur maximale dépassée";
/** Erreur constante littéral chaîne invalide */
private static final String ERREUR_INVALIDE =
"syntaxe incorrecte pour une constante de type chaîne : ";
/**
* initialise cette chaîne avec une valeur par défaut.
*/
public Chaine() {
valeur = "";
}
/**
* Initialise une chaîne avec la séquence de caractères passée en argument.
* @param uneValeur
*/
public Chaine(String uneValeur) {
uneValeur = uneValeur.trim();
if (!uneValeur.startsWith("\"") || !uneValeur.endsWith("\"")) {
throw new InterpreteurException(ERREUR_INVALIDE
+ uneValeur);
}
uneValeur = uneValeur.substring(1, uneValeur.length() - 1);
if (uneValeur.length() > LG_MAX_CHAINE)
throw new InterpreteurException(ERREUR_LG_MAX);
valeur = uneValeur;
}
/**
* Concatène deux chaînes ensemble. Opération non commutative:
* a + b != b + a
* @param a une Chaîne
* @param b une autre Chaîne
* @return une nouvelle Chaîne.
*/
public static Chaine concatener(Chaine a, Chaine b) {
return new Chaine("\"" + a.valeur + b.valeur + "\"");
}
/* non javadoc
* @see interpreteurlir.donnees.litteraux.Litteral#compareTo(interpreteurlir.donnees.litteraux.Litteral)
*/
@Override
public int compareTo(Litteral autre) {
// TODO Auto-generated method stub
return this.valeur.toString().compareTo(autre.valeur.toString());
}
/* non javadoc
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return '\"' + valeur.toString() + '\"';
}
}
@@ -0,0 +1,34 @@
/**
* Entier.java 8 mai 2021
* IUT Rodez info1 2020-2021, pas de copyright, aucun droit
*/
package interpreteurlir.donnees.litteraux;
/**
* BOUCHON
* @author
*
*/
public class Entier extends Litteral {
/** TODO commenter l'état initial
* @param i
*/
public Entier(int i) {
super(Integer.valueOf(i));
// TODO Auto-generated constructor stub
valeur = i;
}
/* non javadoc
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return valeur.toString();
}
}
@@ -0,0 +1,63 @@
/**
* Litteral.java 7 mai 2021
* IUT info1 2020-2021, pas de copyright, aucun droit
*/
package interpreteurlir.donnees.litteraux;
/**
* Valeur littérale utilisée dans une expression.
* Chaque littérale est reconnue par sont type.
* @author Nicolas Caminade
* @author Sylvan Courtiol
* @author Pierre Debas
* @author Heïa Dexter
* @author Lucas Vabre
*/
public class Litteral implements Comparable<Litteral> {
/** valeur de ce littéral */
protected Object valeur;
/**
* Initialise ce littéral par défaut.
*/
protected Litteral() {
super();
}
/**
* Initialise cette valeur avec un objet argument.
* @param valeur
*/
public Litteral(Object valeur) { // TODO public >>> protected
super();
this.valeur = valeur;
}
/**
* @return la valeur de valeur
*/
public Object getValeur() {
return valeur;
}
/* non javadoc
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return valeur.toString();
}
/* non javadoc
* @see java.lang.Comparable#compareTo(java.lang.Object)
*/
@Override
public int compareTo(Litteral autre) {
if (autre.valeur.getClass() == this.valeur.getClass())
return 0;
return this.valeur.hashCode() - autre.valeur.hashCode();
}
}
@@ -0,0 +1,151 @@
/**
* TestChaine.java 8 mai 2021
* IUT info1 2020-2021, pas de copyright, aucun droit
*/
package interpreteurlir.donnees.litteraux.tests;
import interpreteurlir.InterpreteurException;
import interpreteurlir.donnees.litteraux.Chaine;
import static info1.outils.glg.Assertions.*;
/**
* Tests unitaires de Chaine
* @author Nicolas Caminade
* @author Sylvan Courtiol
* @author Pierre Debas
* @author Heïa Dexter
* @author Lucas Vabre
*/
public class TestChaine {
/** test de Chaine(String) */
public static void testChaine() {
final String[] VALIDE = {
"\"arztyehjklmpoijhghnbghjklmpoiuytrf" +
"ghjnklmpoiuytrezaqsdfghnjklmpjbfrtyu\"",
"\"\"","\"coucou \"",
"\"" + 42 + "\""
};
final String INVALIDE =
"arztyehjklmpoijhghnbghjklmpoiuytrf" +
"yeryghjnklmpoiuytrezaqsdfghnjklmpjbfrtyu";
System.out.println("test de Chaine(String)");
for (String aTester : VALIDE)
new Chaine(aTester);
try {
new Chaine(INVALIDE);
throw new RuntimeException("Instanciation interdite");
} catch (InterpreteurException lancee) {
System.out.println("Revoi d'exception OK\nfin du test");
}
}
/** test de compareTo */
public static void testCompareTo() {
final Chaine[][] EGALITES = {
{new Chaine("\"coucou\""), new Chaine("\"coucou\"")},
{new Chaine("\" \""), new Chaine("\" \"")},
{new Chaine("\"\""), new Chaine()}
};
final Chaine[][] DIFFERENCES = {
{new Chaine("\"coucou\""), new Chaine("\"camomille\"")},
{new Chaine("\"tarentule\""), new Chaine("\"coucou\"")},
{new Chaine("\"coucou\""), new Chaine("\" \"")},
{new Chaine("\"coucou\""), new Chaine()},
{new Chaine("\" \""), new Chaine()}
};
System.out.println("test de compareTo(Chaine)\nAvec égalités");
for (Chaine[] couple : EGALITES) {
try {
assert couple[0].compareTo(couple[1]) == 0;
} catch (AssertionError lancee) {
System.err.println("Echec du test");
}
}
System.out.println("Avec des inégalités");
for (Chaine[] couple : DIFFERENCES) {
try {
assert couple[0].compareTo(couple[1]) > 0;
} catch (AssertionError lancee) {
System.err.println("Echec du test");
}
}
System.out.println("fin du test");
}
/** test de toString */
public static void testToString() {
final Chaine[] A_AFFICHER = {
new Chaine(), new Chaine("\" \""),
new Chaine("\"coucou\""),
new Chaine("\" coucou \""),
new Chaine("\"coucou monsieur\"")
};
final String[] AFFICHAGE_GUILLEMETS = {
"\"\"", "\" \"", "\"coucou\"", "\" coucou \"",
"\"coucou monsieur\""
};
System.out.println("test de toString");
for (int i = 0 ; i < A_AFFICHER.length ; i++) {
try {
assert A_AFFICHER[i].toString().equals(AFFICHAGE_GUILLEMETS[i]);
} catch (AssertionError lancee) {
System.err.println("Echec du test a l'indice " + i);
}
}
System.out.println("==>test terminé\n");
}
/**
* Tests unitaires de concaténer
*/
public void testConcatener() {
final Chaine[] ATTENDU = {
new Chaine(),
new Chaine("\"Bonjour le monde ! \""),
new Chaine("\" \""),
new Chaine("\"3,1415\""),
};
final Chaine[][] A_CONCATENER = {
{new Chaine(), new Chaine("\"\"")},
{new Chaine("\"Bonjour \""), new Chaine("\"le monde ! \"")},
{new Chaine("\"\""), new Chaine("\" \"")},
{new Chaine("\"3,\""), new Chaine("\"1415\"")},
};
System.out.println("\tExécution du test de concaténer");
for (int numTest = 0 ; numTest < ATTENDU.length ; numTest++ ) {
assertTrue(ATTENDU[numTest].compareTo(Chaine.concatener(
A_CONCATENER[numTest][0], A_CONCATENER[numTest][1]))
== 0);
}
}
/**
* Lancement des tests
* @param args non utilisés
*/
public static void main(String[] args) {
testChaine();
testCompareTo();
testToString();
}
}
@@ -0,0 +1,171 @@
/**
* TestLitteraux.java 7 mai 2021
* IUT info1 2020-2021, pas de copyright, aucun droit
*/
package interpreteurlir.donnees.litteraux.tests;
import interpreteurlir.donnees.litteraux.Litteral;
/**
* Test unitaires des constantes littérales de l'interpréteurlir
* @author Nicolas Caminade
* @author Sylvan Courtiol
* @author Pierre Debas
* @author Heïa Dexter
* @author Lucas Vabre
*/
public class TestLitteraux {
/** Jeux de littéraux pour test. */
private static final Litteral[] VALIDES = {
/* Caractères */
new Litteral('a'),
new Litteral('!'),
new Litteral('\"'),
new Litteral('1'),
new Litteral('\t'),
/* Chaînes */
new Litteral("ceci est une chaine"),
new Litteral("bonjour"),
new Litteral(" bonjour "),
new Litteral(""),
new Litteral(" "),
/* Entier */
new Litteral(123),
new Litteral(-123),
new Litteral(0),
new Litteral(Integer.MAX_VALUE),
/* Double */
new Litteral(14.258),
new Litteral(-14.128),
new Litteral(0.0),
new Litteral(Double.NaN),
new Litteral(Double.NEGATIVE_INFINITY),
new Litteral(Double.MAX_VALUE),
new Litteral(Double.MIN_VALUE),
new Litteral(Double.MIN_NORMAL),
/* Boolean */
new Litteral(true),
new Litteral(false),
new Litteral(3 >= 4),
new Litteral(true),
new Litteral(true),
new Litteral(true)
};
/** test de getValeur */
public static void testGetValeur() {
final Object[] VALEURS_ATTENDUES = {
'a', '!', '\"', '1', '\t' ,"ceci est une chaîne", "bonjour",
" bonjour ", "", " ", 123, -123, 0, 2147483647, 14.258, -14.128,
0.0, Double.NaN, Double.NEGATIVE_INFINITY, Double.MAX_VALUE,
Double.MIN_VALUE, Double.MIN_NORMAL, true, false, false, true, true,
true
};
System.out.println("test de getValeur\n");
for (int i = 0 ; i < VALIDES.length ; i++) {
try {
assert (VALIDES[i].getValeur().equals(VALEURS_ATTENDUES[i]));
} catch (AssertionError lancee) {
System.err.println("Echec du test a l'indice " + i);
}
}
System.out.println("==>test terminé\n");
}
/** test de toString */
public static void testToString() {
final String[] STRING_ATTENDUE = {
"a", "!", "\"", "1", "\t", "ceci est une chaîne", "bonjour",
" bonjour ", "", " ", "123", "-123", "0", "2147483647", "14.258",
"-14.128", "0.0", "NaN", "-Infinity", "1.7976931348623157E308",
"4.9E-324", "2.2250738585072014E-308", "true", "false", "false",
"true", "true", "true"
};
System.out.println("test de toString\n");
for (int i = 0 ; i < VALIDES.length ; i++ ) {
try {
assert (VALIDES[i].toString().equals(STRING_ATTENDUE[i]));
} catch (AssertionError lancee) {
System.err.println("Echec du test a l'indice " + i);
}
}
System.out.println("==>test terminé\n");
}
/** test de compareTo */
public static void testCompareTo() {
final Litteral[] MEMES_TYPES = {
new Litteral('a'),
new Litteral('!'),
new Litteral('\"'),
new Litteral('Z'),
new Litteral('s'),
new Litteral("bonjour"),
new Litteral("bonjour"),
new Litteral("arar"),
new Litteral("zarar za "),
new Litteral("CAFE_BABE"),
new Litteral(123),
new Litteral(123),
new Litteral(0),
new Litteral(-123),
new Litteral(Double.MAX_VALUE),
new Litteral(Double.NaN),
new Litteral(12.3),
new Litteral(Double.NaN),
new Litteral(45.7),
new Litteral(-12.6),
new Litteral(0.0),
new Litteral(Double.MIN_NORMAL),
new Litteral(false),
new Litteral(false),
new Litteral(true),
new Litteral(true),
new Litteral(true),
new Litteral(true)
};
System.out.println("test de compareTo\nAvec des types identiques");
for (int i = 0 ; i < VALIDES.length ; i++ ) {
try {
assert (VALIDES[i].compareTo(MEMES_TYPES[i]) == 0);
} catch (AssertionError lancee) {
System.err.println("Echec du test a l'indice " + i);
}
}
System.out.println("Avec des types différents");
for (int i = 0 ; i < VALIDES.length ; i++ ) {
try {
assert (VALIDES[i].compareTo(MEMES_TYPES[MEMES_TYPES.length
- (i + 1)]) != 0);
} catch (AssertionError lancee) {
System.err.println("Echec du test a l'indice " + i);
}
}
System.out.println("==>test terminé\n");
}
/**
* Lancement des test
* @param args non utilisé
*/
public static void main(String[] args) {
testGetValeur();
testToString();
testCompareTo();
}
}
@@ -0,0 +1,114 @@
/**
* TestIdentificateur.java 8 mai 2021
* IUT-Rodez info1 2020-2021, pas de droits, pas de copyrights
*/
package interpreteurlir.donnees.tests;
import static info1.outils.glg.Assertions.*;
import interpreteurlir.donnees.Identificateur;
/**
* Test de la classe donnees.Identificateur
* @author Nicolas Caminade
* @author Sylvan Courtiol
* @author Pierre Debas
* @author Heia Dexter
* @author Lucas Vabre
*/
public class TestIdentificateur {
/** Jeu d'identificateurs correctement instanciés */
public static final Identificateur[] FIXTURE = {
new Identificateur("b"),
new Identificateur("A"),
new Identificateur("zalpha"),
new Identificateur("Alpha"),
new Identificateur("Alpha5"),
new Identificateur("jeSuisUnTresLongIdentifi"),
new Identificateur("$b"),
new Identificateur("z"),
new Identificateur("$zalpha"),
new Identificateur("$Alpha"),
new Identificateur("$Alpha5"),
new Identificateur("$jeSuisUnTresLongIdentifi")
};
/**
* Test de Identificateur(String identificateur)
*/
public static void testIdentificateurString() {
final String[] INVALIDE = {
null,
"",
// Fait au maximum 24 caractères
"$jeSuisUnTresLongIdentificateur", // 30 char
"$jeSuisUnTresLongIdentific",
// Espaces
"id 3a",
"$id 3a",
" ",
"$ ",
// caractères d'échapements
"\t",
"\n",
"$\t",
"$\n",
// , cas particulier
"$"
};
for(int noJeu = 0 ; noJeu < INVALIDE.length ; noJeu++) {
try {
new Identificateur(INVALIDE[noJeu]);
echec();
} catch (IllegalArgumentException lancee) {
// Test OK
}
}
}
/**
* Test de compareTo(Identificateur aComparer)
*/
public static void testCompareTo() {
final Identificateur REF_MIN = new Identificateur("$AAAAAAAAAAAAAAAAAAAAAAAA");
final Identificateur REF_MAX = new Identificateur("zzzzzzzzzzzzzzzzzzzzzzzz");
for(int noJeu = 0; noJeu < FIXTURE.length; noJeu++) {
assertTrue(FIXTURE[noJeu].compareTo(REF_MIN) >= 0);
assertTrue(FIXTURE[noJeu].compareTo(REF_MAX) <= 0);
assertTrue(FIXTURE[noJeu].compareTo(FIXTURE[noJeu]) == 0);
}
}
/**
* Tests unitaires de toString
*/
public static void testToString() {
final String[] CHAINES_VALIDES = {
"b",
"A",
"zalpha",
"Alpha",
"Alpha5",
"jeSuisUnTresLongIdentifi",
"$b",
"z",
"$zalpha",
"$Alpha",
"$Alpha5",
"$jeSuisUnTresLongIdentifi"
};
for (int noJeu = 0 ; noJeu < CHAINES_VALIDES.length ; noJeu++) {
assertEquivalence(CHAINES_VALIDES[noJeu],
FIXTURE[noJeu].toString());
}
}
}
@@ -0,0 +1,92 @@
/*
* TestIdentificateurChaine.java, 08/05/2021
* IUT Rodez 2020-2021, info1
* pas de copyright, aucun droits
*/
package interpreteurlir.donnees.tests;
import static info1.outils.glg.Assertions.*;
import interpreteurlir.donnees.IdentificateurChaine;
/**
* Tests unitaires de la classe donnees.IdentificateurEntier
* @author Nicolas Caminade
* @author Sylvan Courtiol
* @author Pierre Debas
* @author Heia Dexter
* @author Lucas Vabre
*/
public class TestIdentificateurChaine {
/** Jeu d'identificateurs de chaîne correctement instanciés */
private static IdentificateurChaine[] FIXTURE = {
new IdentificateurChaine("$a"),
new IdentificateurChaine("$A"),
new IdentificateurChaine("$alpha"),
new IdentificateurChaine("$Alpha"),
new IdentificateurChaine("$Alpha5"),
new IdentificateurChaine("$jeSuisUnTresLongIdentifi")
};
/**
* Tests unitaires du constructeur IdentificateurEntier(String identificateur)
*/
public static void testIdentificateurChaineString() {
final String[] INVALIDE = {
null,
"",
// Commence par une lettre
"9alpha",
" 5alpha",
// Fait au maximum 24 caractères
"$jeSuisUnTresLongIdentificateur", // 30 char
"$jeSuisUnTresLongIdentific",
// Espaces
"id 3a",
"$id 3a",
" ",
"$ ",
// caractères d'échapements
"\t",
"\n",
"$\t",
"$\n",
// , cas particulier
"$",
"$1"
};
for(int noJeu = 0; noJeu < INVALIDE.length ; noJeu++) {
try {
new IdentificateurChaine(INVALIDE[noJeu]);
echec();
} catch (IllegalArgumentException lancee) {
// test OK
}
}
}
/**
* Tests unitaires de getNom()
*/
public static void testGetNom() {
final String[] NOM_VALIDES = {
"$a",
"$A",
"$alpha",
"$Alpha",
"$Alpha5",
"$jeSuisUnTresLongIdentifi"
};
for (int noJeu = 0 ; noJeu < NOM_VALIDES.length ; noJeu++) {
assertEquivalence(NOM_VALIDES[noJeu], FIXTURE[noJeu].getNom());
}
}
}
@@ -0,0 +1,83 @@
/*
* TestIdentificateurEntier.java , 08/05/2021
* IUT Rodez 2020-2021, info1
* pas de copyright, aucun droits
*/
package interpreteurlir.donnees.tests;
import static info1.outils.glg.Assertions.*;
import interpreteurlir.donnees.IdentificateurEntier;
/**
* Tests unitaires de la classe donnees.IdentificateurEntier
* @author Nicolas Caminade
* @author Sylvan Courtiol
* @author Pierre Debas
* @author Heia Dexter
* @author Lucas Vabre
*/
public class TestIdentificateurEntier {
/** Jeu d'identificateurs d'entier correctement instanciés */
private static IdentificateurEntier[] FIXTURE = {
new IdentificateurEntier("a"),
new IdentificateurEntier("A"),
new IdentificateurEntier("alpha"),
new IdentificateurEntier("Alpha"),
new IdentificateurEntier("Alpha5"),
new IdentificateurEntier("jeSuisUnTresLongIdentifi")
};
/**
* Tests unitaires du constructeur IdentificateurEntier(String identificateur)
*/
public static void testIdentificateurEntierString() {
final String[] INVALIDE = {
// Commence par une lettre
"9alpha",
" 5alpha",
"$beta",
// Fait au maximum 24 caractères
"jeSuisUnTresLongIdentificateur", // 30 char
"jeSuisUnTresLongIdentific",
// Espaces, caractères d'échapements, cas particulier
"id 3a",
"",
" ",
"\t",
"\n",
null
};
for(int noJeu = 0; noJeu < INVALIDE.length ; noJeu++) {
try {
new IdentificateurEntier(INVALIDE[noJeu]);
echec();
} catch (IllegalArgumentException lancee) {
// test OK
}
}
}
/**
* Tests unitaires de getNom()
*/
public static void testGetNom() {
final String[] NOM_VALIDES = {
"a",
"A",
"alpha",
"Alpha",
"Alpha5",
"jeSuisUnTresLongIdentifi"
};
for (int noJeu = 0 ; noJeu < NOM_VALIDES.length ; noJeu++) {
assertEquivalence(NOM_VALIDES[noJeu], FIXTURE[noJeu].getNom());
}
}
}
@@ -0,0 +1,210 @@
/**
* TestVariable.java 8 mai 2021
* IUT-Rodez info1 2020-2021, pas de droits, pas de copyrights
*/
package interpreteurlir.donnees.tests;
import interpreteurlir.donnees.Variable;
import interpreteurlir.donnees.IdentificateurChaine;
import interpreteurlir.donnees.IdentificateurEntier;
import interpreteurlir.donnees.litteraux.*;
import interpreteurlir.InterpreteurException;
import static info1.outils.glg.Assertions.*;
/**
* Tests unitaires de la classe Variable
*
* @author Nicolas Caminade
* @author Sylvan Courtiol
* @author Pierre Debas
* @author Heia Dexter
* @author Lucàs Vabre
*/
public class TestVariable {
/** Jeu d'identificateurs de chaîne valides */
private static final IdentificateurChaine[] ID_CHAINE = {
new IdentificateurChaine("$a"),
new IdentificateurChaine("$B"),
new IdentificateurChaine("$alpha"),
new IdentificateurChaine("$Alpha"),
new IdentificateurChaine("$Alpha5"),
new IdentificateurChaine("$jeSuisUnTresLongIdentifi"),
new IdentificateurChaine("$R2D2"),
new IdentificateurChaine("$MichelSardou"),
new IdentificateurChaine("$PhilippePoutou2022")
};
/** Jeu d'identificateurs d'entier valides */
private static final IdentificateurEntier[] ID_ENTIER = {
new IdentificateurEntier("a"),
new IdentificateurEntier("A"),
new IdentificateurEntier("alpha"),
new IdentificateurEntier("Alpha"),
new IdentificateurEntier("Alpha5"),
new IdentificateurEntier("jeSuisUnTresLongIdentifi"),
new IdentificateurEntier("R2D2"),
new IdentificateurEntier("MichelSardou"),
new IdentificateurEntier("PhilippePoutou2022")
};
/** Jeu de chaînes valides */
private static final Chaine[] VALEURS_CHAINE = {
new Chaine(),
new Chaine("\"arztyehjklmpoijhghnbghjklmpoiuytrf"
+ "ghjnklmpoiuytrezaqsdfghnjklmpjbfrtyu\""),
new Chaine("\"\""),
new Chaine("\"coucou \""),
new Chaine("\"" + Integer.toString(42) + "\""),
new Chaine("\"Bidon\""),
new Chaine("\"toto\""),
new Chaine("\"tata\t\""),
new Chaine("\"titi\n\"")
};
// /** Jeu d'entiers valides */
// private static final Entier[] VALEUR_ENTIER = {
// // TODO: jeu d'entiers valide
// };
/** Jeu de variables chaîne valides*/
private static Variable[] fixtureChaine = new Variable[ID_CHAINE.length];
/* Jeu de variables entières valides*/
//private static Variable[] fixtureEntier= new Variable[ID_ENTIER.length];
private static void fixtureReload() {
for (int i = 0; i < ID_CHAINE.length; i++) {
fixtureChaine[i] = new Variable(ID_CHAINE[i], VALEURS_CHAINE[i]);
}
//TODO reload fixtureEntier
}
/**
* Test unitaire du constructeur Variable(Identificateur, Littéral)
*/
public static void testVariableIdentificateurChaineLitteral() {
for (int noJeu = 0; noJeu < VALEURS_CHAINE.length; noJeu++) {
try {
//new Variable(ID_CHAINE[noJeu], VALEURS_CHAINE[noJeu]); // bouchon
new Variable(ID_ENTIER[noJeu], VALEURS_CHAINE[noJeu]);
// TODO tester avec la classe Entier
// new Variable(ID_CHAINE[noJeu], VALEURS_ENTIER[noJeu]);
echec();
} catch (InterpreteurException lancee) {
// test OK
}
}
}
/**
* Test unitaire de getIdentificateur() d'une variable chaîne
*/
public static void testGetIdentificateurChaine() {
fixtureReload();
for (int i = 0; i < VALEURS_CHAINE.length; i++ ) {
assertTrue(ID_CHAINE[i].compareTo(fixtureChaine[i]
.getIdentificateur()) == 0);
}
}
/**
* Test unitaire de getIdentificateur() d'une variable entière
*/
public static void testGetIdentificateurEntier() {
// fixtureReload();
//
// for (int i = 0; i < VALEURS_Entier.length; i++ ) {
// assertTrue(ID_ENTIER[i].compareTo(fixtureEntier[i]
// .getIdentificateur()) == 0);
// }
echec();
}
/**
* Test unitaire de getValeur() d'une variable chaîne
*/
public static void testGetValeurChaine() {
fixtureReload();
for (int i = 0; i < VALEURS_CHAINE.length; i++ ) {
assertTrue(VALEURS_CHAINE[i]
.compareTo(fixtureChaine[i].getValeur()) == 0);
}
}
/**
* Test unitaire de setValeur() d'une chaîne
*/
public static void testSetValeurChaine() {
fixtureReload();
final Chaine[] NOUVELLE_CHAINE = {
new Chaine("\"titi\""),
new Chaine("\"Mathématiques\""),
new Chaine("\"!?9563Message\""),
new Chaine("\"test TESTS\""),
new Chaine("\"-5 + 962\"")
};
for (int i = 0; i < NOUVELLE_CHAINE.length; i++) {
fixtureChaine[i].setValeur(NOUVELLE_CHAINE[i]);
assertTrue(NOUVELLE_CHAINE[i]
.compareTo(fixtureChaine[i].getValeur()) == 0);
}
}
/**
* Test unitaire de toString()
*/
public static void testToString() {
fixtureReload();
final String[] ATTENDUS = {
"$a = \"\"",
"$B = \"arztyehjklmpoijhghnbghjklmpoiuytrf"
+ "ghjnklmpoiuytrezaqsdfghnjklmpjbfrtyu\"",
"$alpha = \"\"",
"$Alpha = \"coucou \"",
"$Alpha5 = \"42\"",
"$jeSuisUnTresLongIdentifi = \"Bidon\"",
"$R2D2 = \"toto\"",
"$MichelSardou = \"tata\t\"",
"$PhilippePoutou2022 = \"titi\n\""
};
for (int noJeu = 0; noJeu < fixtureChaine.length; noJeu++ ) {
assertEquivalence(fixtureChaine[noJeu].toString(),
ATTENDUS[noJeu]);
}
}
/**
* Test unitaire de compareTo()
*/
public static void testCompareTo() {
fixtureReload();
final Variable REF_MIN
= new Variable(new IdentificateurChaine("$A"),
new Chaine("\"Min\""));
final Variable REF_MAX
= new Variable(new IdentificateurChaine("$z"),
new Chaine("\"Max\""));
for(int noJeu = 0; noJeu < fixtureChaine.length; noJeu++) {
assertTrue(fixtureChaine[noJeu].compareTo(REF_MIN) > 0);
assertTrue(fixtureChaine[noJeu].compareTo(REF_MAX) < 0);
assertTrue(fixtureChaine[noJeu].compareTo(fixtureChaine[noJeu]) == 0);
}
// TODO Faire le même test pour les variables contenant des entiers
}
}
@@ -0,0 +1,132 @@
/**
* Expression.java 7 mai 2021
* IUT Rodez info1 2020-2021, pas de copyright, aucun droit
*/
package interpreteurlir.expressions;
import interpreteurlir.Contexte;
import interpreteurlir.InterpreteurException;
import interpreteurlir.donnees.Identificateur;
import interpreteurlir.donnees.litteraux.Litteral;
/**
* Une expression contient tous les liens et données nécessaires à son calcul.
* Une expression peut être calculée pour obtenir une valeur.
* Elle peut affecter une valeur à une variable dans le contexte.
* @author Nicolas Caminade
* @author Sylvan Courtiol
* @author Pierre Debas
* @author Heïa Dexter
* @author Lucas Vabre
*/
public class Expression {
/** Index de l'operande gauche */
protected static final int INDEX_OPERANDE_G = 0;
/** Index de l'operande droite */
protected static final int INDEX_OPERANDE_D = 1;
/** Index de de l'identificateur pour l'affectation */
protected static final int INDEX_AFFECTATION = 2;
/** Contexte global pour accéder aux données. */
protected static Contexte contexteGlobal;
/** Identificateurs opérandes de cette l'expression */
protected Identificateur[] identificateursOperandes;
/** Littéraux opérandes de cette expression */
protected Litteral[] litterauxOperandes;
/**
* Initialise une expression par défaut avec les liens nécessaires à
* son calcul.
*/
protected Expression() {
super();
final int NB_IDENTIFICATEUR = 3;
final int NB_LITTERAL = 2;
identificateursOperandes = new Identificateur[NB_IDENTIFICATEUR];
litterauxOperandes = new Litteral[NB_LITTERAL];
}
/**
* Calculer la valeur de cette expression à ce moment précis.
* Peut accéder au contexte.
* @return un Litteral de valeur du résultat de l'expression
* @throws RuntimeException si le contexte n'est pas référencer
* dans la classe Expression
*/
public Litteral calculer() {
if (contexteGlobal == null) {
throw new RuntimeException("Le contexte doit être référencé "
+ "dans la classe Expression");
}
return null;
}
/* non javadoc
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
StringBuilder resultat = new StringBuilder("");
Identificateur affect = identificateursOperandes[INDEX_AFFECTATION];
resultat.append(affect == null ? "" : (affect.toString() + " = "));
Identificateur gaucheId = identificateursOperandes[INDEX_OPERANDE_G];
Litteral gaucheLitteral = litterauxOperandes[INDEX_OPERANDE_G];
resultat.append(gaucheId != null ? gaucheId.toString()
: gaucheLitteral.toString());
Identificateur droiteId = identificateursOperandes[INDEX_OPERANDE_D];
Litteral droiteLitteral = litterauxOperandes[INDEX_OPERANDE_D];
if (droiteId != null || droiteLitteral != null) {
resultat.append(" + ");
resultat.append(droiteId != null ? droiteId.toString()
: droiteLitteral.toString());
}
return resultat.toString();
}
/**
* Référence le contexte pour accéder aux variables lors du calcul.
* Le référencement vaut pour toutes les expressions
* et est possible une unique fois.
* @param aReferencer référence du contexte global
* @return <ul><li>true si le contexte a pu être référencé</li>
* <li>true si aReferencer == contexte déjà référencer</li>
* <li>false si aReferencer est null</li>
* <li>false si un contexte est déjà référencer</li>
* </ul>
*/
public static boolean referencerContexte(Contexte aReferencer) {
if (aReferencer != null
&& (contexteGlobal == null || aReferencer == contexteGlobal)) {
contexteGlobal = aReferencer;
return true;
}
return false;
}
/**
* Détermine et créé une expression du bon type selon texteExpression.
* Les types possibles sont ExpressionChaine ou ExpressionEntier.
* @param texteExpression texte suivant la syntaxe d'une expression
* @return l'expression du bon type correspondant à texteExpression
* @throws InterpreteurException si texteExpression n'est pas valide
* ou amène à une incohérence de type
*/
public static Expression determinerTypeExpression(String texteExpression) {
String aTraiter = texteExpression.trim();
if (aTraiter.startsWith("$") || aTraiter.startsWith("\"")) {
return new ExpressionChaine(aTraiter);
} else {
return new ExpressionEntier(aTraiter);
}
}
}
@@ -0,0 +1,154 @@
/**
* ExpressionChaine.java 7 mai 2021
* IUT Rodez info1 2020-2021, pas de copyright, aucun droit
*/
package interpreteurlir.expressions;
import interpreteurlir.InterpreteurException;
import interpreteurlir.donnees.Identificateur;
import interpreteurlir.donnees.IdentificateurChaine;
import interpreteurlir.donnees.litteraux.Chaine;
/**
* Expression de type Chaine qui peut être calculer.
* @author Nicolas Caminade
* @author Sylvan Courtiol
* @author Pierre Debas
* @author Heïa Dexter
* @author Lucas Vabre
*/
public class ExpressionChaine extends Expression {
/**
* Initalise une expression de type Chaine
* avec les liens nécessaires à son calcul.
* @param texteExpression texte suivant la syntaxe d'une expression
* @throws InterpreteurException si texteExpression n'est pas valide
* ou amène à une incohérence de type
*/
public ExpressionChaine(String texteExpression) {
super();
final String MESSAGE_ERREUR = "une expression ne peut être vide";
String gauche;
String droite;
String aTraiter = texteExpression;
/* chaîne null ou blanche */
if (aTraiter == null || aTraiter.isBlank()) {
throw new InterpreteurException(MESSAGE_ERREUR);
}
aTraiter = aTraiter.trim();
/* Traitement de la possible affectation */
int indexEgal = aTraiter.startsWith("$") ? aTraiter.indexOf('=') : -1;
if (indexEgal > -1) {
identificateursOperandes[INDEX_AFFECTATION] =
new IdentificateurChaine(aTraiter.substring(0, indexEgal));
aTraiter = aTraiter.substring(indexEgal + 1);
}
/* Traitement du nombre d'opérande */
int indexPlus = indexOperateur(aTraiter, '+');
gauche = aTraiter;
if (indexPlus > -1) {
gauche = aTraiter.substring(0, indexPlus);
droite = aTraiter.substring(indexPlus + 1, aTraiter.length());
initialiserOperande(droite, INDEX_OPERANDE_D);
}
initialiserOperande(gauche, INDEX_OPERANDE_G);
}
/**
* Détermine l'index de l'opérateur en dehors des constantes littérales
* @param aTraiter chaîne à traiter
* @param operateur opérateur à chercher hors guillemet
* @return index dans à traiter du plus sinon -1 si aucun plus
*/
public static int indexOperateur(String aTraiter, char operateur) {
char[] aTester = aTraiter.toCharArray();
int indexPlus;
int nbGuillemet = 0;
for (indexPlus = 0 ;
indexPlus < aTester.length
&& (aTester[indexPlus] != operateur || nbGuillemet % 2 != 0) ;
indexPlus++) {
if (aTester[indexPlus] == '"') {
nbGuillemet++;
}
}
return indexPlus >= aTester.length ? -1 : indexPlus;
}
/**
* Initialise l'opérande à sa place dans l'expression.
* @param operande représentation texte de l'opérande
* @param index index de l'operande parmi INDEX_OPERANDE_G
* et INDEX_OPERANDE_D
* @throws IllegalArgumentException si index non valide
*/
private void initialiserOperande(String operande, int index) {
if (INDEX_OPERANDE_G != index && INDEX_OPERANDE_D != index) {
throw new IllegalArgumentException("index invalide");
}
if (operandeEstLitteral(operande)) {
litterauxOperandes[index] = new Chaine(operande);
} else {
identificateursOperandes[index] =
new IdentificateurChaine(operande);
}
}
/**
* Détermine le genre de l'opérande (Chaine ou IdentificateurChaine).
* @param operande représentation texte de l'opérande
* @return true si operande est du genre Litteral sinon false
*/
private static boolean operandeEstLitteral(String operande) {
return operande.trim().startsWith("\"");
}
/* non javadoc
* @see interpreteurlir.expressions.Expression#calculer()
*/
@Override
public Chaine calculer() {
Chaine valeur;
super.calculer(); // exception levée si pas de contexte
/* Détermine opérandeGauche */
Identificateur idGauche =
identificateursOperandes[INDEX_OPERANDE_G];
Chaine operandeG = (Chaine)(idGauche == null
? litterauxOperandes[INDEX_OPERANDE_G]
: contexteGlobal.lireValeurVariable(idGauche));
/* Détermine possible operandeDroite */
Identificateur idDroite =
identificateursOperandes[INDEX_OPERANDE_D];
Chaine operandeD = null;
if (idDroite != null || litterauxOperandes[INDEX_OPERANDE_D] != null) {
operandeD = (Chaine)(idDroite == null
? litterauxOperandes[INDEX_OPERANDE_D]
: contexteGlobal.lireValeurVariable(idDroite));
}
/* Calcul de la valeur */
valeur = operandeD == null ? operandeG
: Chaine.concatener(operandeG, operandeD);
/* Affectation si nécessaire */
if (identificateursOperandes[INDEX_AFFECTATION] != null) {
contexteGlobal.ajouterVariable(
identificateursOperandes[INDEX_AFFECTATION], valeur);
}
return valeur;
}
}
@@ -0,0 +1,50 @@
/**
* ExpressionEntier.java 7 mai 2021
* IUT Rodez info1 2020-2021, pas de copyright, aucun droit
*/
package interpreteurlir.expressions;
import interpreteurlir.InterpreteurException;
import interpreteurlir.donnees.litteraux.Entier;
/**
* Expression de type Entier qui peut être calculer.
* @author Nicolas Caminade
* @author Sylvan Courtiol
* @author Pierre Debas
* @author Heïa Dexter
* @author Lucas Vabre
*/
public class ExpressionEntier extends Expression {
/**
* Initalise une expression de type Entier avec les liens nécessaires à son
* calcule.
* @param texteExpression texte suivant la syntaxe d'une expression
* @throws InterpreteurException si texteExpression n'est pas valide
* ou amène à une incohérence de type
*/
public ExpressionEntier(String texteExpression) {
super();
// TODO
}
/* non javadoc
* @see interpreteurlir.expressions.Expression#calculer()
*/
@Override
public Entier calculer() {
// TODO Auto-generated method stub
return null;
}
/* non javadoc
* @see interpreteurlir.expressions.Expression#toString()
*/
@Override
public String toString() {
// TODO Auto-generated method stub
return "ExpressionEntier#toString() BOUCHON";
}
}
@@ -0,0 +1,135 @@
/**
* TestExpression.java 7 mai 2021
* IUT Rodez info1 2020-2021, pas de copyright, aucun droit
*/
package interpreteurlir.expressions.tests;
import static info1.outils.glg.Assertions.*;
import interpreteurlir.expressions.Expression;
import interpreteurlir.expressions.ExpressionChaine;
import interpreteurlir.expressions.ExpressionEntier;
import interpreteurlir.Contexte;
/**
* Tests unitaires de {@link Expression}
* @author Nicolas Caminade
* @author Sylvan Courtiol
* @author Pierre Debas
* @author Heïa Dexter
* @author Lucas Vabre
*/
public class TestExpression {
/** Jeu d'essai d'expression typée */
private Expression[] fixture = {
new ExpressionChaine("$chaine = \"texte\""),
new ExpressionChaine("$chaine=\"tata\""),
new ExpressionChaine(" $tata \t "),
new ExpressionChaine("\"une chaine de texte\""),
new ExpressionChaine("$chaine= \"toto\"+\"titi\""),
new ExpressionChaine("$chaine= $toto +\"titi\""),
new ExpressionChaine("$chaine= \"toto\"+ $titi"),
new ExpressionChaine("$chaine=$toto +$titi"),
new ExpressionChaine(" \"toto\"+\"titi\""),
new ExpressionChaine("$toto +\"titi\""),
new ExpressionChaine("\"toto\"+ $titi"),
new ExpressionChaine("$toto + $titi"),
// TODO expression entière
};
/**
* Tests unitaires de {@link Expression#referencerContexte(Contexte)}
*/
public void testReferencerContexte() {
Contexte reference = new Contexte();
Contexte[] contextes = {
null, reference, reference, new Contexte()
};
boolean[] resultatAttendu = { false, true, true, false };
System.out.println("\tExécution du test de "
+ "Expression#referencerContexte(Contexte)");
for (int numTest = 0 ; numTest < contextes.length ; numTest++) {
assertTrue( Expression.referencerContexte(contextes[numTest])
== resultatAttendu[numTest]);
}
}
/**
* Tests unitaires de {@link Expression#toString()}
*/
public void testToString() {
final String[] chaineAttendue = {
"$chaine = \"texte\"",
"$chaine = \"tata\"",
"$tata",
"\"une chaine de texte\"",
"$chaine = \"toto\" + \"titi\"",
"$chaine = $toto + \"titi\"",
"$chaine = \"toto\" + $titi",
"$chaine = $toto + $titi",
"\"toto\" + \"titi\"",
"$toto + \"titi\"",
"\"toto\" + $titi",
"$toto + $titi"
};
System.out.println("\tExécution du test de Expression#toString()");
for (int numTest = 0 ; numTest < chaineAttendue.length ; numTest++) {
assertEquivalence(chaineAttendue[numTest],
fixture[numTest].toString());
}
}
/**
* Tests unitaires de {@link Expression#determinerTypeExpression(String)}
*/
public void testDeterminerTypeExpression() {
final String[] TEXTE_EXPRESSION = {
/* Expression de type chaine */
"$chaine = \"texte\"",
"$chaine=\"tata\"",
" $tata \t ",
" \"une chaine de texte\"",
"$chaine= \"toto\"+\"titi\"",
" $chaine= $toto +\"titi\"",
"$chaine= \"toto\"+ $titi",
"$chaine=$toto +$titi",
" \"toto\"+\"titi\"",
"\t$toto +\"titi\"",
"\"toto\"+ $titi",
"$toto + $titi",
/* Expression de type Entier */
"78",
" entier",
"78 %89",
" entier- nombre",
"\t entier/78",
"entier = 78 ",
" nombre= nombre + 78",
" entier =78 *2"
// TODO expressionEntier
};
final int INDEX_DEBUT_ENTIER = 12;
System.out.println("\tExécution du test de "
+ "Expression#determinerTypeExpression(String)");
for (int numTest = 0; numTest < TEXTE_EXPRESSION.length ; numTest++) {
if (numTest < INDEX_DEBUT_ENTIER) {
assertTrue(Expression.determinerTypeExpression(
TEXTE_EXPRESSION[numTest]) instanceof ExpressionChaine);
} else {
assertTrue(Expression.determinerTypeExpression(
TEXTE_EXPRESSION[numTest]) instanceof ExpressionEntier);
}
}
}
}
@@ -0,0 +1,144 @@
/**
* TestExpressionChaine.java 7 mai 2021
* IUT Rodez info1 2020-2021, pas de copyright, aucun droit
*/
package interpreteurlir.expressions.tests;
import static info1.outils.glg.Assertions.*;
import interpreteurlir.Contexte;
import interpreteurlir.InterpreteurException;
import interpreteurlir.donnees.IdentificateurChaine;
import interpreteurlir.donnees.litteraux.Chaine;
import interpreteurlir.expressions.Expression;
import interpreteurlir.expressions.ExpressionChaine;
/**
* Tests unitaires de {@link ExpressionChaine}
* @author Nicolas Caminade
* @author Sylvan Courtiol
* @author Pierre Debas
* @author Heïa Dexter
* @author Lucas Vabre
*/
public class TestExpressionChaine {
/** Jeu de tests d'expression chaîne valides*/
private ExpressionChaine[] fixture = {
new ExpressionChaine("$chaine = \"texte\""),
new ExpressionChaine("$chaine=\"tata\""),
new ExpressionChaine(" $tata \t "),
new ExpressionChaine("\"une chaine de texte\""),
new ExpressionChaine("$chaine= \"toto\"+\"titi\""),
new ExpressionChaine("$chaine= $toto +\"titi\""),
new ExpressionChaine("$chaine= \"toto\"+ $titi"),
new ExpressionChaine("$chaine=$toto +$titi"),
new ExpressionChaine(" \"toto\"+\"titi\""),
new ExpressionChaine("$toto +\"titi\""),
new ExpressionChaine("\"toto\"+ $titi"),
new ExpressionChaine("$toto + $titi"),
new ExpressionChaine("\"ab=bc\""),
new ExpressionChaine("$chaine = \"ab+cd\"+$toto")
};
/**
* Tests unitaires de {@link ExpressionChaine#ExpressionChaine(String)}
*/
public void testExpressionChaineString() {
final String[] INVALIDES = {
null,
"",
"3,1415", "3.1415", "1.7976931348623157E308",
"45", "-89",
"tata + $toto",
"\"chaine\" = $vie",
"$chaine / \"tata\"",
"£", "$"
};
final String[] VALIDES = {
"$chaine = \"texte\"",
"$chaine=\"tata\"",
" $tata \t ",
"\"une chaine de texte\"",
"$chaine= \"toto\"+\"titi\"",
"$chaine= $toto +\"titi\"",
"$chaine= \"toto\"+ $titi",
"$chaine=$toto +$titi",
" \"toto\"+\"titi\"",
"$toto +\"titi\"",
"\"toto\"+ $titi",
"$toto + $titi",
"\"ab=bc\"",
"$chaine = \"ab+cd\"+$toto"
};
System.out.println("\tExécution du test de "
+ "ExpressionChaine#ExpressionChaine(String)");
for (String texteArgs : INVALIDES) {
try {
new ExpressionChaine(texteArgs);
echec();
} catch (InterpreteurException lancee) {
// empty
}
}
for (String texteArgs : VALIDES) {
try {
new ExpressionChaine(texteArgs);
} catch (InterpreteurException lancee) {
echec();
}
}
}
/**
* Tests unitaires de {@link ExpressionChaine#calculer()}
*/
public void testCalculer() {
final Chaine[] RESULTAT_ATTENDU = {
new Chaine("\"texte\""),
new Chaine("\"tata\""),
new Chaine("\"\""),
new Chaine("\"une chaine de texte\""),
new Chaine("\"tototiti\""),
new Chaine("\"valTototiti\""),
new Chaine("\"toto\""),
new Chaine("\"valToto\""),
new Chaine("\"tototiti\""),
new Chaine("\"valTototiti\""),
new Chaine("\"toto\""),
new Chaine("\"valToto\""),
new Chaine("\"ab=bc\""),
new Chaine("\"ab+cdvalToto\"")
};
System.out.println("\tExécution du test de "
+ "ExpressionChaine#calculer()");
/* Exception levée si contexte non référencé */
try {
fixture[0].calculer();
echec();
} catch (RuntimeException e) {
// vide
}
/* Création contexte (avec $toto = "valToto") et référencement */
Contexte contexteGlobal = new Contexte();
contexteGlobal.ajouterVariable(new IdentificateurChaine("$toto"),
new Chaine("\"valToto\""));
Expression.referencerContexte(contexteGlobal);
System.out.print("\tContexte initial : \n" + contexteGlobal);
for (int numTest = 0; numTest < RESULTAT_ATTENDU.length ; numTest++) {
System.out.println("\nCalcul de : " + fixture[numTest]);
assertEquivalence(fixture[numTest].calculer()
.compareTo(RESULTAT_ATTENDU[numTest]), 0);
System.out.println("\tContexte : \n" + contexteGlobal);
}
}
}
@@ -0,0 +1,19 @@
/**
* TestExpressionEntier.java 7 mai 2021
* IUT Rodez info1 2020-2021, pas de copyright, aucun droit
*/
package interpreteurlir.expressions.tests;
import interpreteurlir.expressions.Expression;
/**
* Tests unitaires de {@link Expression}
* @author Nicolas Caminade
* @author Sylvan Courtiol
* @author Pierre Debas
* @author Heïa Dexter
* @author Lucas Vabre
*/
public class TestExpressionEntier {
}
@@ -0,0 +1,58 @@
/**
* Commande.java 7 mai 2021
* IUT Rodez info1 2020-2021, pas de copyright, aucun droit
*/
package interpreteurlir.motscles;
import interpreteurlir.Contexte;
import interpreteurlir.InterpreteurException;
/**
* Une commande (générale) n'a aucun comportement.
* Voir les sous-classes pour les comportements.
* Une commande contient tous les liens nécessaires à son exécution.
* Une commande peut être exécutée.
* @author Nicolas Caminade
* @author Sylvan Courtiol
* @author Pierre Debas
* @author Heïa Dexter
* @author Lucas Vabre
*/
public class Commande {
/** référence du contexte possiblement manié directement par la commande */
protected Contexte contexte;
/**
* Initialise une commande avec les liens dont elle a besoin pour
* s'exécuter à partir des arguments.
* Cependant la commande ne s'exécute pas à la construction.
* La commande a accès au contexte passé en argument.
* @param arguments chaîne de texte représentant les arguments
* @param contexte référence du contexte global
* @throws InterpreteurException est propagée si Commande la reçoit
* @throws NullPointerException si contexte ou arguments est null
*/
public Commande(String arguments, Contexte contexte) {
super();
if (arguments == null || contexte == null) {
throw new NullPointerException();
}
// arguments non utilisés dans Commande générale
this.contexte = contexte;
}
/**
* Commande d'exécution de la commande.
* @return true si la commande affiche un feedback directement sur la sortie
* standard, sinon false
*/
public boolean executer() {
// pas de comportement pour une Commande générale
return false; // pas de feedback
}
}

Some files were not shown because too many files have changed in this diff Show More