algo-lang
v1.2.2
Published
Algorithmic language interpreter (in French only for now)
Downloads
7
Readme
Algorithmic natural language interpreter (language using french keywords)
Usage
Installation
npm install -g algo-lang
Command line
Basic usage:
algo-lang path/to/file.algo
Pretty print your file in console:
algo-lang --pretty-print path/to/file.algo
Language
Quick example
algorithme test
variables
entier i, j
algorithme procedure swap
parametres globaux
entier i, j
variables
entier tmp
debut
tmp ← i
i ← j
j ← tmp
fin algorithme procedure swap
debut
i ← 2
j ← 4
swap(i, j)
afficher(chaine(i) + chaine(j)) /* prints 42 */
fin algorithme test
Language documentation
Note
selon
expressions differ slightly from the previous documentation. There is a cas
keyword added in the mix to allow LALR parsing :
selon expression faire
cas val1, val2: expr1
expr2
autrement expr3
expr4
fin selon
Good to know
Operator aliases
Some operators have aliases to ease development:
<-
is equivalent to←
^
is equivalent to↑
nul
There is a special nul
keyword to assign the null pointer to any pointer variable and check if a pointer is null.
Available types
Only those base types are available:
booleen
(defined just likebooleen = (faux, vrai)
)caractere
(can be cast with system routines to:chaine
,entier
)chaine
(can be cast with system routines to:entier
,reel
)entier
(can be cast with system routines to:caractere
,chaine
,reel
)reel
(can be cast with system routines to:chaine
,entier
)
System routines
There are some system routines you can use:
afficher(chaine)
: prints the string on stdout (no endline is added automatically)allouer(pointer)
: allocate memory for the pointed valuecaractere(value)
: try to castvalue
incaractere
chaine(value)
: try to castvalue
inchaine
entier(value)
: try to castentier
inchaine
liberer(pointer)
: free memory pointed by the provided pointer, do nothing if pointer isnul
, resetspointer
tonul
longueur(chaine)
: returns the length of the string
Operator []
The operator also allows you to access characters (caractere
) in a string (chaine
) like in:
afficher("toto"[1])
Important note: In this language, index are from 1
to n
and not from 0
to n − 1
!