35 lines
796 B
Plaintext
35 lines
796 B
Plaintext
skill = inline_expr+
|
|
expr = (inline_expr / nl)
|
|
|
|
inline_expr = (listraw / listc / listskill / inline_get / inline_op / inline_assign / ws / nl)
|
|
|
|
inline_assign = TOKEN ws* "=" ws* (inline_expr / LITERAL / TOKEN)
|
|
|
|
inline_op = TOKEN ws* inline_op_symbol ws* (inline_expr / TOKEN / LITERAL)
|
|
inline_op_symbol = ~"[*-+/]"
|
|
|
|
inline_get = TOKEN inline_get_symbol (inline_expr / TOKEN / LITERAL)
|
|
inline_get_symbol = ~"(~>|->)"
|
|
|
|
|
|
listraw = "'" list_start expr* list_end
|
|
listc = TOKEN list_start expr* list_end
|
|
listskill = list_start expr* list_end
|
|
|
|
list_start = "("
|
|
list_end = ")"
|
|
|
|
TOKEN = ~"[a-zA-Z_][_a-zA-Z0-9]+"
|
|
LITERAL = L_num / L_t / L_nil / L_str
|
|
|
|
L_num = ~"[0-9]+(\.[0-9]+)?"
|
|
L_t = "t"
|
|
L_nil = "nil"
|
|
|
|
L_str = delim_str any_str delim_str
|
|
delim_str = "\""
|
|
any_str = ~"[^\"]*"
|
|
|
|
ws = ~"\\h"
|
|
nl = ~"\\n"
|