Scilab Home page | Wiki | Bug tracker | Forge | Mailing list archives | ATOMS | File exchange
Please login or create an account
Change language to: English - Português - 日本語 - Русский
Aide de Scilab >> Code Matlab => Scilab > m2scideclare

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 syntaxe x(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://bugzilla.scilab.org

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

VersionDescription
< 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.
Scilab Enterprises
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Mon Jan 03 14:33:08 CET 2022