m2scideclare
Donner des indices pour aider M2SCI...
Syntaxe
%m2scideclare variable_name|sizes|data_type|property
Arguments
- variable_name
nom de la variable déclarée. Ce nom peut être un champ de Struct (e.g.
x(1,2).nom) ou décrire le contenu d'une Cell en utilisant la syntaxex(1,2).entries.
NOTEZ que pour les Cells et les Structs*peut être utilisé comme index.- sizes
Tailles de la variable déclarée, séparées par des espaces. Si une taille est inconnue, la remplacer par
?.
NOTER qu'une chaînes de caractères Matlab (définies entre apostrophes) est considérée comme un vecteur de caractères adressables un à un. En conséquence, la taille de 'string' est|1 6|(non|1 1|).- data_type & property
Type et sous-type de la variable. Les valeurs possibles sont présentées dans la page décrivant Type.
Les valeurs de propriétés qui ne sont pas prédéfinies comme constantes dans m2ci -- telles que 'int8' ou 'Axes' -- doivent être spécifiées sans apostrophes ni guillements dans la ligne %m2scideclare.
Description
La conversion des expressions du langage Matlab en équivalent Scilab dépend notamment
du type et de la taille des objets impliqués.
Plus le convertisseur M2SCI (mfile2sci) connait ces informations,
plus précise et directe sera la conversion.
Dés lors que les données originelles sont littéralement définies dans le
code Matlab à convertir -- comme dans l'instruction a = [1 3 5]
indiquant directement le vtype==Double, la property=Real, et la taille
|1 3|, M2SCI sait alors tout
ce qu'il faut savoir à propos de a pour convertir les expressions
ultérieures dans lesquelles a intervient.
Cependant, l'information manque fréquemment. En particulier, en tête des
macros, le type et les dimensions des arguments d'entrée ne sont pas donnés (pouvoir
s'en abstenir est d'ailleurs un des avantages/soulagements des langages évolués tels
que Matlab ou Scilab).
Des lignes d'instructions %m2scideclare peuvent être alors ajoutées
(en commentaire Matlab, donc) pour donner ces informations au convertisseur, avant de
lancer celui-ci.
Lors de la conversion, lorsqu'une ligne %m2scideclare est rencontrée,
le convertisseur examine la liste des symboles déjà connus. Cette liste est établie
au cours de la conversion et est continuellement mise à jour, en fonction des symboles
déjà rencontrés et convertis, et des lignes %m2scideclare antérieures
déjà prises en compte :
Si
%m2scideclaredécrit une nouvelle donnée, celle-ci est ajoutée à la liste des objets partiellement ou totalement connus.Si l'objet décrit par
%m2scideclareest déjà connu, le convertisseur compare les informations apportées par%m2scideclareavec celles déjà connues.Si ces informations coincident ou sont compatibles, le convertisseur éventuellement complète le registre (par exemple si la property était Unknown et est précisée par
%m2scideclare), ou ne fait rien.Sinon, une ligne d'alerte est générée par
%m2scideclaredans le fichier converti, et les informations données par%m2scideclaresont ignorées.
Ce fonctionnement peut être mis à profit par les développeurs souhaitant corriger ou étendre le convertisseur, en utilisant%m2scideclaredans les tests : si le type, le sous-type ou les dimensions de l'objet considéré ne sont pas ceux attendus et donnés par%m2scideclare, l'alerte générée sera exploitée pour corriger le convertisseur.Si en tant qu'utilisateur du convertisseur vous rencontrez une telle alerte
%m2scideclarequi vous semble incompatible avec ce que vous connaissez de votre code, vous pouvez rapporter le cas sur https://gitlab.com/scilab/scilab/-/issues
Exemples
%m2scideclare var1|2 3|Double|Realvar1 est déclarée comme une matrice de Doubles de taille 2x3 et contenant des données réelles
%m2scideclare var2|2 3 10|Double|Complexvar2 est déclarée comme une hypermatrice de Doubles de taille 2x3x10 et contenant des nombres complexes.
%m2scideclare var3(1,2).name|1 10|String|?var3 est déclarée comme un tableau de Structs contenant une chaîne de caractères de taille 1x10 dans le champ 'name' de la Struct à l'indice (1,2)
%m2scideclare var4(1,5).entries|1 ?|Boolean|?var4 est déclarée comme un tableau de Cells contenant un vecteur ligne de booléens à l'indice (1,5)
%m2scideclare var4(1,6).entries|? ?|Int|?var4 est déclarée comme un tableau de Cells contenant un vecteur ligne de booléens à l'indice (1,5) et des données entières à l'indice (1,6).
%m2scideclare var5(*,*).name|1 ?|String|?var5 est déclarée comme un tableau de Structs contenant une chaîne de caractères de taille 1xn dans chaque champ 'name'
%m2scideclare var6(2,*).entries|1 3|Double|Realvar6 est déclarée comme un tableau de Cells contenant un veteur de Doubles de taille 1x3 dans chaque élement de sa seconde ligne.
Voir aussi
- Type — Crée un arbre contenant les données d'inférence de type
Historique
| Version | Description |
| < 5.0 | %m2sciassume est obsolète et est remplacée par
m2scideclare. |
| 6.1.1 | m2scideclare accepte tous les nouveaux vtypes et valeurs de
sous-types
Polynomial,
Function/Macro, Function/Builtin,
String/Char,
Handle/'Figure', Handle/'Axes',
Int/'int8', Int/'int16',
Int/'int32', Int/'int64',
Int/'uint8', Int/'uint16',
Int/'uint32', Int/'uint64',
Sparse/Boolean.
Le vtype Sparse devient effectivement utilisable. |
| Report an issue | ||
| << A propos des outils M2SCI | Code Matlab => Scilab | mfile2sci >> |