Dernière mise à jour... plus de suivi après
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
```
|
||||
local function strsplit(delimiter, text)
|
||||
if delimiter == "" then
|
||||
error("delimiter matches empty string!")
|
||||
end
|
||||
local list, pos, first, last = {}, 1
|
||||
while true do
|
||||
first, last = text:find(delimiter, pos, true)
|
||||
if first then -- found?
|
||||
table.insert(list, text:sub(pos, first - 1))
|
||||
pos = last + 1
|
||||
else
|
||||
table.insert(list, text:sub(pos))
|
||||
break
|
||||
end
|
||||
end
|
||||
return list
|
||||
end
|
||||
M.private.strsplit = strsplit
|
||||
```
|
||||
|
||||
## statements
|
||||
### keyword:
|
||||
`local` `function` `if...then..[else]...end` `while...do...end` `return` `break` `private`
|
||||
|
||||
### operators/symbols:
|
||||
`==` `.` `=` `,` `.` `:` `+` `-` `()` `--`
|
||||
|
||||
Éléments syntaxiques du langage qui permettent d'effectuer une action détérminé par
|
||||
l'interpréteur ou le compilateur, selon qu'il s'agisse d'un langage scripté ou compilé.
|
||||
Il peut s'agir d'un nom ou d'un symbole que l'on applique à 0 ou plusieurs opérandes.
|
||||
|
||||
Ces opérandes peuvent être des valeurs, des variables ou des expressions composées).
|
||||
|
||||
J'ai regroupé les opérateurs et les keywords dans la même catégorie car leur utilisation
|
||||
et syntaxes sont similaires quand bien même, leurs usages peuvent varier grandement et ne
|
||||
pas servir, du tout, le même but.
|
||||
|
||||
Exemple de ce que j'entend par là : un `+` permet de réduire deux operandes à un seul en
|
||||
appliquant une addition tandis qu'un `if` permet, en fonction d'un opérande booléen de
|
||||
décider d'éxecuter un set d'opérandes plutôt qu'un autre.
|
||||
|
||||
Peut-être pouvons-nous parler de compound statement pour les (`if`/`while`)... ? ;D
|
||||
|
||||
#### Exemple `+`:
|
||||
```
|
||||
operand operator operand
|
||||
|
||||
3 + 2
|
||||
```
|
||||
|
||||
|
||||
#### Exemple `while...do...end`:
|
||||
```
|
||||
operator operatand operator
|
||||
operand
|
||||
...
|
||||
operand
|
||||
operator
|
||||
|
||||
while operand_1 do
|
||||
operand_2
|
||||
...
|
||||
operand_n
|
||||
end
|
||||
```
|
||||
|
||||
|
||||
## functions/callable expressions/routines/methods:
|
||||
`strsplit` `error` `find` `insert` `sub`
|
||||
|
||||
Ces expressions agissent comme un opérateur mais à leur différence, ils ne sont pas
|
||||
définies dans la grammaire du langages et ne sont donc pas des mots réservés.
|
||||
|
||||
|
||||
## constants/values:
|
||||
`true` `""` `"delimiter matches empty string!"` `{}` `1`
|
||||
|
||||
Ces noms, au moment de l'éxécution du programme, représentent un état de la mémoire
|
||||
invariable. Seules les opérations de lectures sont autorisés.
|
||||
|
||||
|
||||
## variables:
|
||||
`delimiter` `text` `list` `pos` `first` `last` `table` `M`
|
||||
|
||||
Ces noms représentent aussi un état variable de la mémoire. Les actions d'écritures sont
|
||||
autorisés autant que les actions de lectures.
|
||||
Reference in New Issue
Block a user