2.4 KiB
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.