Ash


Un langage de script simple et concis avec support pour l'orienté objet.

Sommaire

  1. Introduction
  2. Noyau du langage
    1. Installation
    2. Premier programme
    3. Commentaires
    4. Constantes et variables
    5. Expressions et instructions
  3. Types de base
    1. Booléen
    2. Entier et réel
    3. Chaîne
    4. Liste
    5. Dictionnaire
  4. Contrôle du flux
    1. Séquence
    2. Sélection
    3. Boucle
  5. Fonctions et procédures

Classes et objets
Gestion des erreurs
Bibliothèque standard

  1. + Console
    1. Fichiers
    2. Système d'exploitation
  2. Implémentations et interfaces
    1. Ash/Python
    2. Ash/JavaScript
    3. Ash/C

Introduction

1. Noyau du langage

1.1 Installation

Pour lancer coder avec Ash, il existe trois façons :

ash.exe

ash.exe pipo.ash
ash.ex -i pipo.ash

 ash.exe -transpy pipo.ash
 python pipo.py

Les arguments sont stockés dans une liste. 0 est le nom du script. En nég, les options préalables. En pos, les options du script.

1.2 Premiers programmes

La tradition veut qu'on affiche "Bonjour le monde !" sur la sortie standard. Pour cela, il faut lancer l'interpréteur interactif
ash.exe
Puis tapez :

 writeln("Hello World!")

Une autre tradition est le calcul d'une factorielle. Ouvrez un fichier texte, enregistrez-le sous le nom de fact.ash puis tapez dedans :

-- fonction factorielle récursive
fun fact(nb : int)
    if nb == 0 then
        return 1
    elif nb > 0 then
        return nb * fact(nb - 1)
    else
        raise Exception("Invalid number")
    end
end
nb = input('enter a number:')
writeln(fact(nb))

1.3 Commentaires

-- comment
--[[ start of multi line
]] end of multi line

1.4 Constantes et variables

nom de variable : (@/_A-Za-z)(0-9A-Za-z)

_ is for dummy variable or the last expression. utf-8 variable are supported.

following word are reserved because they are keyword.

Ash is case sensitive.

defined?(tst) --> nil
tst = nil --> variable defined with value
if tst is nil then
    writeln('tst is nil')
end
tst = 22
writeln(tst)  --> 2

A variable is automatically cleaned after its containing scope is destroy (function or prog body).

1.5 Expressions et instructions

Séparateurs d'expression : \n, ;

2. Types de base

2.1 Booléen

2.2 Entier et réel

2.3 Chaîne

2.4 Liste

2.5 Dictionnaire

3. Contrôle du flux

3.1 Séquence

Un bloc est un ensemble d'instructions ou d'expressions. Les instructions et expressions sont séparées par des nouvelles lignes ou des points virgules.

a = 1 + 4
2              -- valide
a = 1 + 4 ; 2  -- valide (équivalent aux 2 lignes du dessus)
a = 1 + 4 2    -- ceci n'est pas valide en ash

3.2 Sélection

3.3 Boucle

4. Fonctions et procédures

5. Classes et objets

6. Gestion des erreurs

7. Bibliothèque standard

7.1 Console

7.2 Fichiers

7.3 Système d'exploitation

8. Implémentations et interfaces

8.1 Ash/Python

8.2 Ash/JavaScript

8.3 Ash/C