74 lines
1.3 KiB
Plaintext
74 lines
1.3 KiB
Plaintext
// Quest 1.0 Syntax
|
|
|
|
quest = {
|
|
"quest" ~ quest_name ~ with_cond? ~ "begin"
|
|
~ state*
|
|
~ "end"
|
|
}
|
|
quest_name = @{ key_name }
|
|
|
|
key_name = _{
|
|
((ASCII_ALPHA | "_") | (ASCII_ALPHA ~ "_"))*
|
|
}
|
|
|
|
with_cond = _{ "with" ~ lua_expr }
|
|
lua_expr = @{ ASCII_ALPHANUMERIC* }
|
|
|
|
state_name = @{ key_name }
|
|
state = {
|
|
"state" ~ state_name
|
|
~ "begin"
|
|
~ ( function | when_condition | when_with_condition )*
|
|
~ "end"
|
|
}
|
|
|
|
|
|
variable = { (ASCII_ALPHANUMERIC ~ "."?)* }
|
|
when_trigger = @{ variable }
|
|
when_condition = {
|
|
"when" ~ when_trigger ~ "begin"
|
|
~ lua_expression_scope
|
|
~ "end"
|
|
}
|
|
|
|
|
|
when_with_expression = {
|
|
( (call | variable) ~ "or")*
|
|
}
|
|
when_with_condition = {
|
|
"when" ~ when_trigger
|
|
~ "with" ~ when_with_expression
|
|
~ "begin" ~ lua_expression_scope
|
|
~ "end"
|
|
}
|
|
|
|
|
|
// Properties
|
|
key = { ASCII_ALPHANUMERIC* }
|
|
value = { ASCII_DIGIT* }
|
|
|
|
|
|
/// Lua section
|
|
function_name = @{ key_name }
|
|
function_arguments = { ASCII_ALPHANUMERIC | ASCII_ALPHANUMERIC ~ "," }
|
|
function = {
|
|
"function" ~ function_name
|
|
~ "(" ~ function_arguments* ~ ")"
|
|
~ lua_expression_scope
|
|
~ "end"
|
|
}
|
|
|
|
lua_expression_scope = { (!"end" ~ ANY)* }
|
|
|
|
call = {
|
|
(ASCII_ALPHANUMERIC | "_")* ~ "(" ~ (call | ",")* ~ ")"
|
|
}
|
|
|
|
|
|
/// General Section
|
|
|
|
// Inferred rules
|
|
COMMENT = _{ "--" ~ (!"\n" ~ ANY)* }
|
|
WHITESPACE = _{ " " | "\t" | NEWLINE }
|
|
|