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
%m2scideclare
décrit une nouvelle donnée, celle-ci est ajoutée à la liste des objets partiellement ou totalement connus.Si l'objet décrit par
%m2scideclare
est déjà connu, le convertisseur compare les informations apportées par%m2scideclare
avec 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
%m2scideclare
dans le fichier converti, et les informations données par%m2scideclare
sont ignorées.
Ce fonctionnement peut être mis à profit par les développeurs souhaitant corriger ou étendre le convertisseur, en utilisant%m2scideclare
dans 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
%m2scideclare
qui 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|Real
var1 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|Complex
var2 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|Real
var6 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 >> |