0.3.1 • Published 2 years ago

@cyk-language/cyk-core v0.3.1

Weekly downloads
-
License
ISC
Repository
-
Last release
2 years ago

lang: fr permalink: /language-syntax/ title: Noyau

layout: default

Instructions du noyau du cadriciel

Sommaire

Conventions typographiques

ElémentDescription
literalnom de commandes ou options à taper tel quel
les éléments optionnels sont entre crochets. Les attributs optionnels sont encadrés par des crochets avec un fond différent
normalun élément défini par une autre règle syntaxique
|la barre verticale sépare des éléments optionnels alternatifs exclusifs les uns des autres
...les points de suspension indiquent que l'élément précédent peut être répété une ou plusieurs fois
{ }les accolades regroupent les éléments situés entre elles en un seul élément pour appliquer un opérateur ... ou |

Types de données

  • Texte :
  • Nombre : <number/>
  • Heure : <datetime/>
  • Booléen : <boolean/>
  • Object : <object/>
  • Module : <module/>
  • Fonction : <function/>
  • Undefined

Déclaration de données primitives

Déclaration de string (chaine de caractères)

<string [ name="identifier" ] [ literal="" ] > 
  expression  | text_literal  | 
</string>
  • Si l'attribut literal est spécifié, le contenu de la balise n'est pas évalué en tant qu'expression mais considéré comme un texte litéral
  • Un contenu de balise vide est équivalent à la valeur undefined
  • La XML CDATA est acceptée
  • L'attribut name est facultatif : utile dans le cas de l'initialisation d'une liste de données anonymes

Exemples

<string name="person_1"> "John Doe" </string>
<string name="person_2" literal="">John Doe</string>
<string name="math_formula_1"> <![CDATA[ "x < y" ]]> </string>
<string name="math_formula_2" literal=""> <![CDATA[ x < y ]]> </string>

Déclaration de nombre

<number [ name="identifier" ] > *expression* | undefined | </number>  

Exemples

<number name="id"/>
<number name="intvalue"> 12 </number>
<number name="amount"> 10.25 </number>

Déclaration de datatime

Instructions de Contrôle

Instruction Conditionelle

conditional_instruction :

<if>   
  <condition> expression </condition>   
  <then>  
    instruction ...    
  </then>  
  [      
  <condition> expression </condition>   
  <then>   
    instruction ...  
  </then>   
  ] ...   
  [   
  <else>   
    instruction ...     
  </else>  
  ]    
</if>

Instruction While

while_instruction :

<while>    
  <condition> expression </condition>   
  <then>   
    instruction ...   
  </then>  
</while>

Sortie de boucle par <break/> Itération suivante par '`

Instruction Loop

loop_instruction :

<loop>   
  instruction ...      
</loop>

Instruction break

break_instruction :

<break>   
  [ expression ]   
</break>

Si expression est présente, elle est évaluée Si le résultat est équivalent à VRAI, le programme quitte le bloc en cours Si expression est absente, le programme quitte le bloc en cours

Instruction Affectation

set_instruction :

<set name="identifier"> expression </set>
<let name="identifier"> expression </let>

Les noms de balise set et let ont la même signification

Instruction Stringexec

<stringexec> expression </stringexec>

L'expression est évaluée en tant que chaine, puis considérée comme un texte de programme qui est exécuté

Instruction Parallel

<parallel>   
  instruction ...     
</parallel>

Chaque instruction dans le bloc est exécuté en parallèle des autres. L'instruction <parallel/> se termine lorsque toutes les intrutions du bloc sont terminées.

Définition de fonction

Exemple : la fonction factorielle

    <function name="fact" returns="result: number">
        <number name="N"/>
        <block>
            <if>
                <condition><![CDATA[ N <= 0]]></condition>
                <then>
                    <let name="result">1</let>
                </then>
                <else>
                    <number name="fact1">1</number>
                    <call function="fact" returns="fact1">
                        <number name="N">N - 1</number>
                    </call>
                    <let name="result">N * fact1</let>
                </else>
            </if>
        </block>
    </function>

Instruction Appel de Fonction

Function

<call function="identifier" [ returns="identifier : datatype" ] >   
  declare_instruction ...   
</call>

Methode d'Objet

<call object="identifier" method="identifier" [ returns="identifier : datatype" ] >   
  declare_instruction ...    
</call>

Méthode d'un Module

<call module="identifier" method="identifier" [ returns="identifier: datatype*" ] >   
  declare_instruction ...    
</call>

Format des expressions

0.3.1

2 years ago

0.3.0

2 years ago