Permalink
Find file
Fetching contributors…
Cannot retrieve contributors at this time
238 lines (237 sloc) 4.82 KB
---
+grammar: testml
+include: atom
+toprule: testml_document
+version: 0.0.1
__:
.rgx: (?:[\ \t]|\r?\n|\#.*\r?\n)+
assertion_call:
.any:
- -wrap: 1
.ref: assertion_eq
- -wrap: 1
.ref: assertion_ok
- -wrap: 1
.ref: assertion_has
assertion_call_test:
.rgx: (?:\.(?:[\ \t]|\r?\n|\#.*\r?\n)*|(?:[\ \t]|\r?\n|\#.*\r?\n)*\.)(?:EQ|OK|HAS)
assertion_eq:
.any:
- -wrap: 1
.ref: assertion_operator_eq
- -wrap: 1
.ref: assertion_function_eq
assertion_function_eq:
.all:
- .rgx: (?:\.(?:[\ \t]|\r?\n|\#.*\r?\n)*|(?:[\ \t]|\r?\n|\#.*\r?\n)*\.)EQ\(
- .ref: code_expression
- .rgx: \)
assertion_function_has:
.all:
- .rgx: (?:\.(?:[\ \t]|\r?\n|\#.*\r?\n)*|(?:[\ \t]|\r?\n|\#.*\r?\n)*\.)HAS\(
- .ref: code_expression
- .rgx: \)
assertion_function_ok:
.rgx: (?:\.(?:[\ \t]|\r?\n|\#.*\r?\n)*|(?:[\ \t]|\r?\n|\#.*\r?\n)*\.)(OK)(?:\((?:[\
\t]|\r?\n|\#.*\r?\n)*\))?
assertion_has:
.any:
- -wrap: 1
.ref: assertion_operator_has
- -wrap: 1
.ref: assertion_function_has
assertion_ok:
.ref: assertion_function_ok
assertion_operator_eq:
.all:
- .rgx: (?:[\ \t]|\r?\n|\#.*\r?\n)+==(?:[\ \t]|\r?\n|\#.*\r?\n)+
- .ref: code_expression
assertion_operator_has:
.all:
- .rgx: (?:[\ \t]|\r?\n|\#.*\r?\n)+\~\~(?:[\ \t]|\r?\n|\#.*\r?\n)+
- .ref: code_expression
assignment_statement:
.all:
- .ref: variable_name
- .rgx: \s+=\s+
- .ref: code_expression
- .ref: ending
blank_line:
.rgx: '[\ \t]*\r?\n'
blanks:
.rgx: '[\ \t]+'
block_header:
.all:
- .ref: block_marker
- +max: 1
.all:
- .ref: blanks
- .ref: block_label
- .ref: blank_line
block_label:
.ref: unquoted_string
block_marker:
.rgx: ===
block_point:
.any:
- .ref: lines_point
- .ref: phrase_point
call_argument:
.ref: code_expression
call_argument_list:
.all:
- .rgx: \((?:[\ \t]|\r?\n|\#.*\r?\n)*
- +max: 1
.all:
- .ref: call_argument
- +min: 0
-flat: 1
.all:
- .rgx: (?:[\ \t]|\r?\n|\#.*\r?\n)*,(?:[\ \t]|\r?\n|\#.*\r?\n)*
- .ref: call_argument
- .rgx: (?:[\ \t]|\r?\n|\#.*\r?\n)*\)
call_call:
.all:
- +asr: -1
.ref: assertion_call_test
- .ref: call_indicator
- .ref: code_object
call_indicator:
.rgx: (?:\.(?:[\ \t]|\r?\n|\#.*\r?\n)*|(?:[\ \t]|\r?\n|\#.*\r?\n)*\.)
call_name:
.any:
- .ref: user_call
- .ref: core_call
call_object:
.all:
- .ref: call_name
- +max: 1
.ref: call_argument_list
code_expression:
.all:
- .ref: code_object
- +min: 0
.ref: call_call
code_object:
.any:
- .ref: function_object
- .ref: point_object
- .ref: string_object
- .ref: number_object
- .ref: call_object
code_section:
+min: 0
.any:
- .ref: __
- .ref: assignment_statement
- .ref: code_statement
code_statement:
.all:
- .ref: code_expression
- +max: 1
.ref: assertion_call
- .ref: ending
comment:
.rgx: \#.*\r?\n
core_call:
.rgx: ([A-Z]\w*)
data_block:
.all:
- .ref: block_header
- +min: 0
-skip: 1
.any:
- .ref: blank_line
- .ref: comment
- +min: 0
.ref: block_point
data_section:
+min: 0
.ref: data_block
double_quoted_string:
.rgx: (?:"((?:[^\n\\"]|\\"|\\\\|\\[0nt])*?)")
ending:
.any:
- .rgx: (?:;|\r?\n)
- +asr: 1
.ref: ending2
ending2:
.rgx: (?:[\ \t]|\r?\n|\#.*\r?\n)*\}
function_object:
.all:
- +max: 1
.ref: function_signature
- .ref: function_start
- +min: 0
.any:
- .ref: __
- .ref: assignment_statement
- .ref: code_statement
- .rgx: (?:[\ \t]|\r?\n|\#.*\r?\n)*\}
function_signature:
.all:
- .rgx: \((?:[\ \t]|\r?\n|\#.*\r?\n)*
- +max: 1
.ref: function_variables
- .rgx: (?:[\ \t]|\r?\n|\#.*\r?\n)*\)
function_start:
.rgx: (?:[\ \t]|\r?\n|\#.*\r?\n)*(\{)(?:[\ \t]|\r?\n|\#.*\r?\n)*
function_variable:
.rgx: ([a-zA-Z]\w*)
function_variables:
.all:
- .ref: function_variable
- +min: 0
-flat: 1
.all:
- .rgx: (?:[\ \t]|\r?\n|\#.*\r?\n)*,(?:[\ \t]|\r?\n|\#.*\r?\n)*
- .ref: function_variable
lines_point:
.all:
- .ref: point_marker
- .ref: blanks
- .ref: point_name
- .ref: blank_line
- .ref: point_lines
number:
.rgx: ([0-9]+)
number_object:
.ref: number
phrase_point:
.all:
- .ref: point_marker
- .ref: blanks
- .ref: point_name
- .rgx: :[\ \t]
- .ref: point_phrase
- .rgx: \r?\n
- .rgx: (?:\#.*\r?\n|[\ \t]*\r?\n)*
point_lines:
.rgx: ((?:(?!(?:===|\-\-\-)\ \w).*\r?\n)*)
point_marker:
.rgx: \-\-\-
point_name:
.rgx: ([a-z]\w*|[A-Z]\w*)
point_object:
.rgx: (\*[a-z]\w*)
point_phrase:
.ref: unquoted_string
quoted_string:
.any:
- .ref: single_quoted_string
- .ref: double_quoted_string
single_quoted_string:
.rgx: (?:'((?:[^\n\\']|\\'|\\\\)*?)')
string_object:
.ref: quoted_string
testml_document:
.all:
- .ref: code_section
- +max: 1
.ref: data_section
unquoted_string:
.rgx: ([^\ \t\n\#](?:[^\n\#]*[^\ \t\n\#])?)
user_call:
.rgx: ([a-z]\w*)
variable_name:
.rgx: ([a-zA-Z]\w*)