Created
August 5, 2010 01:30
-
-
Save ingydotnet/509079 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| assertion_call => <assertion_eq> | <assertion_ok> | <assertion_has> | |
| --- | |
| - '[' | |
| - '<assertion_eq>' | |
| - '|' | |
| - '<assertion_ok>' | |
| - '|' | |
| - '<assertion_has>' | |
| - ']' | |
| ... | |
| assertion_call_test => /<call_indicator>(?:EQ|OK|HAS)<LPAREN>/ | |
| --- | |
| - '[' | |
| - /<call_indicator>(?:EQ|OK|HAS)<LPAREN>/ | |
| - ']' | |
| ... | |
| assertion_eq => <assertion_operator_eq> | <assertion_function_eq> | |
| --- | |
| - '[' | |
| - '<assertion_operator_eq>' | |
| - '|' | |
| - '<assertion_function_eq>' | |
| - ']' | |
| ... | |
| assertion_function_eq => /<call_indicator>EQ<LPAREN>/ <test_expression> /<RPAREN>/ | |
| --- | |
| - '[' | |
| - /<call_indicator>EQ<LPAREN>/ | |
| - '<test_expression>' | |
| - /<RPAREN>/ | |
| - ']' | |
| ... | |
| assertion_function_has => /<call_indicator>HAS<LPAREN>/ <test_expression> /<RPAREN>/ | |
| --- | |
| - '[' | |
| - /<call_indicator>HAS<LPAREN>/ | |
| - '<test_expression>' | |
| - /<RPAREN>/ | |
| - ']' | |
| ... | |
| assertion_function_ok => /<call_indicator>OK<empty_parens>?/ | |
| --- | |
| - '[' | |
| - /<call_indicator>OK<empty_parens>?/ | |
| - ']' | |
| ... | |
| assertion_has => <assertion_operator_has> | <assertion_function_has> | |
| --- | |
| - '[' | |
| - '<assertion_operator_has>' | |
| - '|' | |
| - '<assertion_function_has>' | |
| - ']' | |
| ... | |
| assertion_ok => <assertion_function_ok> | |
| --- | |
| - '[' | |
| - '<assertion_function_ok>' | |
| - ']' | |
| ... | |
| assertion_operator_eq => /<ws>+<EQUAL><EQUAL><ws>+/ <test_expression> | |
| --- | |
| - '[' | |
| - /<ws>+<EQUAL><EQUAL><ws>+/ | |
| - '<test_expression>' | |
| - ']' | |
| ... | |
| assertion_operator_has => /<ws>+<TILDE><TILDE><ws>+/ <test_expression> | |
| --- | |
| - '[' | |
| - /<ws>+<TILDE><TILDE><ws>+/ | |
| - '<test_expression>' | |
| - ']' | |
| ... | |
| blank_line => /<SPACE>*<EOL>/ | |
| --- | |
| - '[' | |
| - /<SPACE>*<EOL>/ | |
| - ']' | |
| ... | |
| block_header => <block_marker> [ /<SPACE>+/ <block_label> ]? /<SPACE>*<EOL>/ | |
| --- | |
| - '[' | |
| - '<block_marker>' | |
| - | |
| - '[' | |
| - /<SPACE>+/ | |
| - '<block_label>' | |
| - ']?' | |
| - /<SPACE>*<EOL>/ | |
| - ']' | |
| ... | |
| block_label => <unquoted_string> | |
| --- | |
| - '[' | |
| - '<unquoted_string>' | |
| - ']' | |
| ... | |
| block_marker => /<EQUAL><EQUAL><EQUAL>/ | |
| --- | |
| - '[' | |
| - /<EQUAL><EQUAL><EQUAL>/ | |
| - ']' | |
| ... | |
| block_point => <lines_point> | <phrase_point> | |
| --- | |
| - '[' | |
| - '<lines_point>' | |
| - '|' | |
| - '<phrase_point>' | |
| - ']' | |
| ... | |
| call_indicator => /(?:<DOT><ws>*|<ws>*<DOT>)/ | |
| --- | |
| - '[' | |
| - /(?:<DOT><ws>*|<ws>*<DOT>)/ | |
| - ']' | |
| ... | |
| comment => /<HASH><line>/ | |
| --- | |
| - '[' | |
| - /<HASH><line>/ | |
| - ']' | |
| ... | |
| core_meta_keyword => /(?:Title|Data|Plan|BlockMarker|PointMarker)/ | |
| --- | |
| - '[' | |
| - /(?:Title|Data|Plan|BlockMarker|PointMarker)/ | |
| - ']' | |
| ... | |
| core_transform => /(<UPPER><WORD>*)/ | |
| --- | |
| - '[' | |
| - /(<UPPER><WORD>*)/ | |
| - ']' | |
| ... | |
| data_block => <block_header> [ <blank_line> | <comment> ]* <block_point>* | |
| --- | |
| - '[' | |
| - '<block_header>' | |
| - | |
| - '[' | |
| - '<blank_line>' | |
| - '|' | |
| - '<comment>' | |
| - ']*' | |
| - <block_point>* | |
| - ']' | |
| ... | |
| data_section => <testml_data_section> | <yaml_data_section> | <json_data_section> | <xml_data_section> | |
| --- | |
| - '[' | |
| - '<testml_data_section>' | |
| - '|' | |
| - '<yaml_data_section>' | |
| - '|' | |
| - '<json_data_section>' | |
| - '|' | |
| - '<xml_data_section>' | |
| - ']' | |
| ... | |
| document => <meta_section> <test_section> <data_section>? | |
| --- | |
| - '[' | |
| - '<meta_section>' | |
| - '<test_section>' | |
| - <data_section>? | |
| - ']' | |
| ... | |
| double_quoted_string => /(?:<DOUBLE>(([^<BREAK><BACK><DOUBLE>]|<BACK><DOUBLE>|<BACK><BACK>|<BACK><escape>)*?)<DOUBLE>)/ | |
| --- | |
| - '[' | |
| - '/(?:<DOUBLE>(([^<BREAK><BACK><DOUBLE>]|<BACK><DOUBLE>|<BACK><BACK>|<BACK><escape>)*?)<DOUBLE>)/' | |
| - ']' | |
| ... | |
| empty_parens => /(?:<LPAREN><ws>*<RPAREN>)/ | |
| --- | |
| - '[' | |
| - /(?:<LPAREN><ws>*<RPAREN>)/ | |
| - ']' | |
| ... | |
| escape => /[0nt]/ | |
| --- | |
| - '[' | |
| - '/[0nt]/' | |
| - ']' | |
| ... | |
| json_data_section => /(<LSQUARE><rest>)/ | |
| --- | |
| - '[' | |
| - /(<LSQUARE><rest>)/ | |
| - ']' | |
| ... | |
| line => /<ANY>*<EOL>/ | |
| --- | |
| - '[' | |
| - /<ANY>*<EOL>/ | |
| - ']' | |
| ... | |
| lines_point => <point_marker> /<SPACE>+/ <point_name> /<SPACE>*<EOL>/ <point_lines> | |
| --- | |
| - '[' | |
| - '<point_marker>' | |
| - /<SPACE>+/ | |
| - '<point_name>' | |
| - /<SPACE>*<EOL>/ | |
| - '<point_lines>' | |
| - ']' | |
| ... | |
| meta_keyword => /(?:<core_meta_keyword>|<user_meta_keyword>)/ | |
| --- | |
| - '[' | |
| - /(?:<core_meta_keyword>|<user_meta_keyword>)/ | |
| - ']' | |
| ... | |
| meta_section => /(?:<comment>|<blank_line>)*/ [ <meta_testml_statement> | `No TestML meta directive found` ] [ <meta_statement> | <comment> | <blank_line> ]* | |
| --- | |
| - '[' | |
| - /(?:<comment>|<blank_line>)*/ | |
| - | |
| - '[' | |
| - '<meta_testml_statement>' | |
| - '|' | |
| - '`No TestML meta directive found`' | |
| - ']' | |
| - | |
| - '[' | |
| - '<meta_statement>' | |
| - '|' | |
| - '<comment>' | |
| - '|' | |
| - '<blank_line>' | |
| - ']*' | |
| - ']' | |
| ... | |
| meta_statement => /%(<meta_keyword>):<SPACE>+(<meta_value>)(?:<SPACE>+<comment>|<EOL>)/ | |
| --- | |
| - '[' | |
| - /%(<meta_keyword>):<SPACE>+(<meta_value>)(?:<SPACE>+<comment>|<EOL>)/ | |
| - ']' | |
| ... | |
| meta_testml_statement => /%TestML:<SPACE>+(<testml_version>)(?:<SPACE>+<comment>|<EOL>)/ | |
| --- | |
| - '[' | |
| - /%TestML:<SPACE>+(<testml_version>)(?:<SPACE>+<comment>|<EOL>)/ | |
| - ']' | |
| ... | |
| meta_value => /(?:<single_quoted_string>|<double_quoted_string>|<unquoted_string>)/ | |
| --- | |
| - '[' | |
| - /(?:<single_quoted_string>|<double_quoted_string>|<unquoted_string>)/ | |
| - ']' | |
| ... | |
| phrase_point => <point_marker> /<SPACE>+/ <point_name> /<COLON><SPACE>/ <point_phrase> /<EOL>/ /(?:<comment>|<blank_line>)*/ | |
| --- | |
| - '[' | |
| - '<point_marker>' | |
| - /<SPACE>+/ | |
| - '<point_name>' | |
| - /<COLON><SPACE>/ | |
| - '<point_phrase>' | |
| - /<EOL>/ | |
| - /(?:<comment>|<blank_line>)*/ | |
| - ']' | |
| ... | |
| point_call => /(<STAR><LOWER><WORD>*)/ | |
| --- | |
| - '[' | |
| - /(<STAR><LOWER><WORD>*)/ | |
| - ']' | |
| ... | |
| point_lines => /((?:(?!<block_marker>|<point_marker>)<line>)*)/ | |
| --- | |
| - '[' | |
| - /((?:(?!<block_marker>|<point_marker>)<line>)*)/ | |
| - ']' | |
| ... | |
| point_marker => /<DASH><DASH><DASH>/ | |
| --- | |
| - '[' | |
| - /<DASH><DASH><DASH>/ | |
| - ']' | |
| ... | |
| point_name => /(<LOWER><WORD>*)/ | |
| --- | |
| - '[' | |
| - /(<LOWER><WORD>*)/ | |
| - ']' | |
| ... | |
| point_phrase => /(<unquoted_string>)/ | |
| --- | |
| - '[' | |
| - /(<unquoted_string>)/ | |
| - ']' | |
| ... | |
| quoted_string => <single_quoted_string> | <double_quoted_string> | |
| --- | |
| - '[' | |
| - '<single_quoted_string>' | |
| - '|' | |
| - '<double_quoted_string>' | |
| - ']' | |
| ... | |
| rest => /<ANY>+/ | |
| --- | |
| - '[' | |
| - /<ANY>+/ | |
| - ']' | |
| ... | |
| single_quoted_string => /(?:<SINGLE>(([^<BREAK><BACK><SINGLE>]|<BACK><SINGLE>|<BACK><BACK>)*?)<SINGLE>)/ | |
| --- | |
| - '[' | |
| - '/(?:<SINGLE>(([^<BREAK><BACK><SINGLE>]|<BACK><SINGLE>|<BACK><BACK>)*?)<SINGLE>)/' | |
| - ']' | |
| ... | |
| string_call => <quoted_string> | |
| --- | |
| - '[' | |
| - '<quoted_string>' | |
| - ']' | |
| ... | |
| sub_expression => <point_call> | <string_call> | <transform_call> | |
| --- | |
| - '[' | |
| - '<point_call>' | |
| - '|' | |
| - '<string_call>' | |
| - '|' | |
| - '<transform_call>' | |
| - ']' | |
| ... | |
| test_expression => <sub_expression> [ <!assertion_call_test> <call_indicator> <sub_expression> ]* | |
| --- | |
| - '[' | |
| - '<sub_expression>' | |
| - | |
| - '[' | |
| - '<!assertion_call_test>' | |
| - '<call_indicator>' | |
| - '<sub_expression>' | |
| - ']*' | |
| - ']' | |
| ... | |
| test_section => [ <ws> | <test_statement> ]* | |
| --- | |
| - '[' | |
| - | |
| - '[' | |
| - '<ws>' | |
| - '|' | |
| - '<test_statement>' | |
| - ']*' | |
| - ']' | |
| ... | |
| test_statement => <test_expression> <assertion_call>? [ <SEMI> | `You seem to be missing a semicolon` ] | |
| --- | |
| - '[' | |
| - '<test_expression>' | |
| - <assertion_call>? | |
| - | |
| - '[' | |
| - '<SEMI>' | |
| - '|' | |
| - '`You seem to be missing a semicolon`' | |
| - ']' | |
| - ']' | |
| ... | |
| testml_data_section => <data_block>* | |
| --- | |
| - '[' | |
| - <data_block>* | |
| - ']' | |
| ... | |
| testml_version => /(<DIGIT><DOT><DIGIT>+)/ | |
| --- | |
| - '[' | |
| - /(<DIGIT><DOT><DIGIT>+)/ | |
| - ']' | |
| ... | |
| transform_argument => <sub_expression> | |
| --- | |
| - '[' | |
| - '<sub_expression>' | |
| - ']' | |
| ... | |
| transform_argument_list => /<LPAREN><ws>*/ <transform_arguments>? /<ws>*<RPAREN>/ | |
| --- | |
| - '[' | |
| - /<LPAREN><ws>*/ | |
| - <transform_arguments>? | |
| - /<ws>*<RPAREN>/ | |
| - ']' | |
| ... | |
| transform_arguments => <transform_argument> [ /<ws>*<COMMA><ws>*/ <transform_argument> ]* | |
| --- | |
| - '[' | |
| - '<transform_argument>' | |
| - | |
| - '[' | |
| - /<ws>*<COMMA><ws>*/ | |
| - '<transform_argument>' | |
| - ']*' | |
| - ']' | |
| ... | |
| transform_call => <transform_name> <transform_argument_list>? | |
| --- | |
| - '[' | |
| - '<transform_name>' | |
| - <transform_argument_list>? | |
| - ']' | |
| ... | |
| transform_name => <user_transform> | <core_transform> | |
| --- | |
| - '[' | |
| - '<user_transform>' | |
| - '|' | |
| - '<core_transform>' | |
| - ']' | |
| ... | |
| unquoted_string => /([^<SPACES><BREAK><HASH>][^<BREAK><HASH>]*[^<SPACES><BREAK><HASH>])?)/ | |
| --- | |
| - '[' | |
| - '/([^<SPACES><BREAK><HASH>][^<BREAK><HASH>]*[^<SPACES><BREAK><HASH>])?)/' | |
| - ']' | |
| ... | |
| user_meta_keyword => /<LOWER><WORD>*/ | |
| --- | |
| - '[' | |
| - /<LOWER><WORD>*/ | |
| - ']' | |
| ... | |
| user_transform => /(<LOWER><WORD>*)/ | |
| --- | |
| - '[' | |
| - /(<LOWER><WORD>*)/ | |
| - ']' | |
| ... | |
| ws => /[<SPACE>|<EOL>|<comment>]/ | |
| --- | |
| - '[' | |
| - '/[<SPACE>|<EOL>|<comment>]/' | |
| - ']' | |
| ... | |
| xml_data_section => /(<LANGLE><rest>)/ | |
| --- | |
| - '[' | |
| - /(<LANGLE><rest>)/ | |
| - ']' | |
| ... | |
| yaml_data_section => /(<DASH><DASH><DASH><SPACE>*<EOL><rest>)/ | |
| --- | |
| - '[' | |
| - /(<DASH><DASH><DASH><SPACE>*<EOL><rest>)/ | |
| - ']' | |
| ... | |
| assertion_call => <assertion_eq> | <assertion_ok> | <assertion_has> | |
| --- | |
| - '[' | |
| - '<assertion_eq>' | |
| - '|' | |
| - '<assertion_ok>' | |
| - '|' | |
| - '<assertion_has>' | |
| - ']' | |
| ... | |
| assertion_call_test => /<call_indicator>(?:EQ|OK|HAS)<LPAREN>/ | |
| --- | |
| - '[' | |
| - /<call_indicator>(?:EQ|OK|HAS)<LPAREN>/ | |
| - ']' | |
| ... | |
| assertion_eq => <assertion_operator_eq> | <assertion_function_eq> | |
| --- | |
| - '[' | |
| - '<assertion_operator_eq>' | |
| - '|' | |
| - '<assertion_function_eq>' | |
| - ']' | |
| ... | |
| assertion_function_eq => /<call_indicator>EQ<LPAREN>/ <test_expression> /<RPAREN>/ | |
| --- | |
| - '[' | |
| - /<call_indicator>EQ<LPAREN>/ | |
| - '<test_expression>' | |
| - /<RPAREN>/ | |
| - ']' | |
| ... | |
| assertion_function_has => /<call_indicator>HAS<LPAREN>/ <test_expression> /<RPAREN>/ | |
| --- | |
| - '[' | |
| - /<call_indicator>HAS<LPAREN>/ | |
| - '<test_expression>' | |
| - /<RPAREN>/ | |
| - ']' | |
| ... | |
| assertion_function_ok => /<call_indicator>OK<empty_parens>?/ | |
| --- | |
| - '[' | |
| - /<call_indicator>OK<empty_parens>?/ | |
| - ']' | |
| ... | |
| assertion_has => <assertion_operator_has> | <assertion_function_has> | |
| --- | |
| - '[' | |
| - '<assertion_operator_has>' | |
| - '|' | |
| - '<assertion_function_has>' | |
| - ']' | |
| ... | |
| assertion_ok => <assertion_function_ok> | |
| --- | |
| - '[' | |
| - '<assertion_function_ok>' | |
| - ']' | |
| ... | |
| assertion_operator_eq => /<ws>+<EQUAL><EQUAL><ws>+/ <test_expression> | |
| --- | |
| - '[' | |
| - /<ws>+<EQUAL><EQUAL><ws>+/ | |
| - '<test_expression>' | |
| - ']' | |
| ... | |
| assertion_operator_has => /<ws>+<TILDE><TILDE><ws>+/ <test_expression> | |
| --- | |
| - '[' | |
| - /<ws>+<TILDE><TILDE><ws>+/ | |
| - '<test_expression>' | |
| - ']' | |
| ... | |
| blank_line => /<SPACE>*<EOL>/ | |
| --- | |
| - '[' | |
| - /<SPACE>*<EOL>/ | |
| - ']' | |
| ... | |
| block_header => <block_marker> [ /<SPACE>+/ <block_label> ]? /<SPACE>*<EOL>/ | |
| --- | |
| - '[' | |
| - '<block_marker>' | |
| - | |
| - '[' | |
| - /<SPACE>+/ | |
| - '<block_label>' | |
| - ']?' | |
| - /<SPACE>*<EOL>/ | |
| - ']' | |
| ... | |
| block_label => <unquoted_string> | |
| --- | |
| - '[' | |
| - '<unquoted_string>' | |
| - ']' | |
| ... | |
| block_marker => /<EQUAL><EQUAL><EQUAL>/ | |
| --- | |
| - '[' | |
| - /<EQUAL><EQUAL><EQUAL>/ | |
| - ']' | |
| ... | |
| block_point => <lines_point> | <phrase_point> | |
| --- | |
| - '[' | |
| - '<lines_point>' | |
| - '|' | |
| - '<phrase_point>' | |
| - ']' | |
| ... | |
| call_indicator => /(?:<DOT><ws>*|<ws>*<DOT>)/ | |
| --- | |
| - '[' | |
| - /(?:<DOT><ws>*|<ws>*<DOT>)/ | |
| - ']' | |
| ... | |
| comment => /<HASH><line>/ | |
| --- | |
| - '[' | |
| - /<HASH><line>/ | |
| - ']' | |
| ... | |
| core_meta_keyword => /(?:Title|Data|Plan|BlockMarker|PointMarker)/ | |
| --- | |
| - '[' | |
| - /(?:Title|Data|Plan|BlockMarker|PointMarker)/ | |
| - ']' | |
| ... | |
| core_transform => /(<UPPER><WORD>*)/ | |
| --- | |
| - '[' | |
| - /(<UPPER><WORD>*)/ | |
| - ']' | |
| ... | |
| data_block => <block_header> [ <blank_line> | <comment> ]* <block_point>* | |
| --- | |
| - '[' | |
| - '<block_header>' | |
| - | |
| - '[' | |
| - '<blank_line>' | |
| - '|' | |
| - '<comment>' | |
| - ']*' | |
| - <block_point>* | |
| - ']' | |
| ... | |
| data_section => <testml_data_section> | <yaml_data_section> | <json_data_section> | <xml_data_section> | |
| --- | |
| - '[' | |
| - '<testml_data_section>' | |
| - '|' | |
| - '<yaml_data_section>' | |
| - '|' | |
| - '<json_data_section>' | |
| - '|' | |
| - '<xml_data_section>' | |
| - ']' | |
| ... | |
| document => <meta_section> <test_section> <data_section>? | |
| --- | |
| - '[' | |
| - '<meta_section>' | |
| - '<test_section>' | |
| - <data_section>? | |
| - ']' | |
| ... | |
| double_quoted_string => /(?:<DOUBLE>(([^<BREAK><BACK><DOUBLE>]|<BACK><DOUBLE>|<BACK><BACK>|<BACK><escape>)*?)<DOUBLE>)/ | |
| --- | |
| - '[' | |
| - '/(?:<DOUBLE>(([^<BREAK><BACK><DOUBLE>]|<BACK><DOUBLE>|<BACK><BACK>|<BACK><escape>)*?)<DOUBLE>)/' | |
| - ']' | |
| ... | |
| empty_parens => /(?:<LPAREN><ws>*<RPAREN>)/ | |
| --- | |
| - '[' | |
| - /(?:<LPAREN><ws>*<RPAREN>)/ | |
| - ']' | |
| ... | |
| escape => /[0nt]/ | |
| --- | |
| - '[' | |
| - '/[0nt]/' | |
| - ']' | |
| ... | |
| json_data_section => /(<LSQUARE><rest>)/ | |
| --- | |
| - '[' | |
| - /(<LSQUARE><rest>)/ | |
| - ']' | |
| ... | |
| line => /<ANY>*<EOL>/ | |
| --- | |
| - '[' | |
| - /<ANY>*<EOL>/ | |
| - ']' | |
| ... | |
| lines_point => <point_marker> /<SPACE>+/ <point_name> /<SPACE>*<EOL>/ <point_lines> | |
| --- | |
| - '[' | |
| - '<point_marker>' | |
| - /<SPACE>+/ | |
| - '<point_name>' | |
| - /<SPACE>*<EOL>/ | |
| - '<point_lines>' | |
| - ']' | |
| ... | |
| meta_keyword => /(?:<core_meta_keyword>|<user_meta_keyword>)/ | |
| --- | |
| - '[' | |
| - /(?:<core_meta_keyword>|<user_meta_keyword>)/ | |
| - ']' | |
| ... | |
| meta_section => /(?:<comment>|<blank_line>)*/ [ <meta_testml_statement> | `No TestML meta directive found` ] [ <meta_statement> | <comment> | <blank_line> ]* | |
| --- | |
| - '[' | |
| - /(?:<comment>|<blank_line>)*/ | |
| - | |
| - '[' | |
| - '<meta_testml_statement>' | |
| - '|' | |
| - '`No TestML meta directive found`' | |
| - ']' | |
| - | |
| - '[' | |
| - '<meta_statement>' | |
| - '|' | |
| - '<comment>' | |
| - '|' | |
| - '<blank_line>' | |
| - ']*' | |
| - ']' | |
| ... | |
| meta_statement => /%(<meta_keyword>):<SPACE>+(<meta_value>)(?:<SPACE>+<comment>|<EOL>)/ | |
| --- | |
| - '[' | |
| - /%(<meta_keyword>):<SPACE>+(<meta_value>)(?:<SPACE>+<comment>|<EOL>)/ | |
| - ']' | |
| ... | |
| meta_testml_statement => /%TestML:<SPACE>+(<testml_version>)(?:<SPACE>+<comment>|<EOL>)/ | |
| --- | |
| - '[' | |
| - /%TestML:<SPACE>+(<testml_version>)(?:<SPACE>+<comment>|<EOL>)/ | |
| - ']' | |
| ... | |
| meta_value => /(?:<single_quoted_string>|<double_quoted_string>|<unquoted_string>)/ | |
| --- | |
| - '[' | |
| - /(?:<single_quoted_string>|<double_quoted_string>|<unquoted_string>)/ | |
| - ']' | |
| ... | |
| phrase_point => <point_marker> /<SPACE>+/ <point_name> /<COLON><SPACE>/ <point_phrase> /<EOL>/ /(?:<comment>|<blank_line>)*/ | |
| --- | |
| - '[' | |
| - '<point_marker>' | |
| - /<SPACE>+/ | |
| - '<point_name>' | |
| - /<COLON><SPACE>/ | |
| - '<point_phrase>' | |
| - /<EOL>/ | |
| - /(?:<comment>|<blank_line>)*/ | |
| - ']' | |
| ... | |
| point_call => /(<STAR><LOWER><WORD>*)/ | |
| --- | |
| - '[' | |
| - /(<STAR><LOWER><WORD>*)/ | |
| - ']' | |
| ... | |
| point_lines => /((?:(?!<block_marker>|<point_marker>)<line>)*)/ | |
| --- | |
| - '[' | |
| - /((?:(?!<block_marker>|<point_marker>)<line>)*)/ | |
| - ']' | |
| ... | |
| point_marker => /<DASH><DASH><DASH>/ | |
| --- | |
| - '[' | |
| - /<DASH><DASH><DASH>/ | |
| - ']' | |
| ... | |
| point_name => /(<LOWER><WORD>*)/ | |
| --- | |
| - '[' | |
| - /(<LOWER><WORD>*)/ | |
| - ']' | |
| ... | |
| point_phrase => /(<unquoted_string>)/ | |
| --- | |
| - '[' | |
| - /(<unquoted_string>)/ | |
| - ']' | |
| ... | |
| quoted_string => <single_quoted_string> | <double_quoted_string> | |
| --- | |
| - '[' | |
| - '<single_quoted_string>' | |
| - '|' | |
| - '<double_quoted_string>' | |
| - ']' | |
| ... | |
| rest => /<ANY>+/ | |
| --- | |
| - '[' | |
| - /<ANY>+/ | |
| - ']' | |
| ... | |
| single_quoted_string => /(?:<SINGLE>(([^<BREAK><BACK><SINGLE>]|<BACK><SINGLE>|<BACK><BACK>)*?)<SINGLE>)/ | |
| --- | |
| - '[' | |
| - '/(?:<SINGLE>(([^<BREAK><BACK><SINGLE>]|<BACK><SINGLE>|<BACK><BACK>)*?)<SINGLE>)/' | |
| - ']' | |
| ... | |
| string_call => <quoted_string> | |
| --- | |
| - '[' | |
| - '<quoted_string>' | |
| - ']' | |
| ... | |
| sub_expression => <point_call> | <string_call> | <transform_call> | |
| --- | |
| - '[' | |
| - '<point_call>' | |
| - '|' | |
| - '<string_call>' | |
| - '|' | |
| - '<transform_call>' | |
| - ']' | |
| ... | |
| test_expression => <sub_expression> [ <!assertion_call_test> <call_indicator> <sub_expression> ]* | |
| --- | |
| - '[' | |
| - '<sub_expression>' | |
| - | |
| - '[' | |
| - '<!assertion_call_test>' | |
| - '<call_indicator>' | |
| - '<sub_expression>' | |
| - ']*' | |
| - ']' | |
| ... | |
| test_section => [ <ws> | <test_statement> ]* | |
| --- | |
| - '[' | |
| - | |
| - '[' | |
| - '<ws>' | |
| - '|' | |
| - '<test_statement>' | |
| - ']*' | |
| - ']' | |
| ... | |
| test_statement => <test_expression> <assertion_call>? [ <SEMI> | `You seem to be missing a semicolon` ] | |
| --- | |
| - '[' | |
| - '<test_expression>' | |
| - <assertion_call>? | |
| - | |
| - '[' | |
| - '<SEMI>' | |
| - '|' | |
| - '`You seem to be missing a semicolon`' | |
| - ']' | |
| - ']' | |
| ... | |
| testml_data_section => <data_block>* | |
| --- | |
| - '[' | |
| - <data_block>* | |
| - ']' | |
| ... | |
| testml_version => /(<DIGIT><DOT><DIGIT>+)/ | |
| --- | |
| - '[' | |
| - /(<DIGIT><DOT><DIGIT>+)/ | |
| - ']' | |
| ... | |
| transform_argument => <sub_expression> | |
| --- | |
| - '[' | |
| - '<sub_expression>' | |
| - ']' | |
| ... | |
| transform_argument_list => /<LPAREN><ws>*/ <transform_arguments>? /<ws>*<RPAREN>/ | |
| --- | |
| - '[' | |
| - /<LPAREN><ws>*/ | |
| - <transform_arguments>? | |
| - /<ws>*<RPAREN>/ | |
| - ']' | |
| ... | |
| transform_arguments => <transform_argument> [ /<ws>*<COMMA><ws>*/ <transform_argument> ]* | |
| --- | |
| - '[' | |
| - '<transform_argument>' | |
| - | |
| - '[' | |
| - /<ws>*<COMMA><ws>*/ | |
| - '<transform_argument>' | |
| - ']*' | |
| - ']' | |
| ... | |
| transform_call => <transform_name> <transform_argument_list>? | |
| --- | |
| - '[' | |
| - '<transform_name>' | |
| - <transform_argument_list>? | |
| - ']' | |
| ... | |
| transform_name => <user_transform> | <core_transform> | |
| --- | |
| - '[' | |
| - '<user_transform>' | |
| - '|' | |
| - '<core_transform>' | |
| - ']' | |
| ... | |
| unquoted_string => /([^<SPACES><BREAK><HASH>][^<BREAK><HASH>]*[^<SPACES><BREAK><HASH>])?)/ | |
| --- | |
| - '[' | |
| - '/([^<SPACES><BREAK><HASH>][^<BREAK><HASH>]*[^<SPACES><BREAK><HASH>])?)/' | |
| - ']' | |
| ... | |
| user_meta_keyword => /<LOWER><WORD>*/ | |
| --- | |
| - '[' | |
| - /<LOWER><WORD>*/ | |
| - ']' | |
| ... | |
| user_transform => /(<LOWER><WORD>*)/ | |
| --- | |
| - '[' | |
| - /(<LOWER><WORD>*)/ | |
| - ']' | |
| ... | |
| ws => /[<SPACE>|<EOL>|<comment>]/ | |
| --- | |
| - '[' | |
| - '/[<SPACE>|<EOL>|<comment>]/' | |
| - ']' | |
| ... | |
| xml_data_section => /(<LANGLE><rest>)/ | |
| --- | |
| - '[' | |
| - /(<LANGLE><rest>)/ | |
| - ']' | |
| ... | |
| yaml_data_section => /(<DASH><DASH><DASH><SPACE>*<EOL><rest>)/ | |
| --- | |
| - '[' | |
| - /(<DASH><DASH><DASH><SPACE>*<EOL><rest>)/ | |
| - ']' | |
| ... |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment