Skip to content

Commit

Permalink
grammar updates.
Browse files Browse the repository at this point in the history
  • Loading branch information
Mathias Lorenzen committed Jul 10, 2019
1 parent 90a1722 commit ea4d630
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 37 deletions.
42 changes: 22 additions & 20 deletions src/nearley/grammar.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,14 @@
// http://github.com/Hardmath123/nearley
(function () {
function id(x) { return x[0]; }
function nuller() { return null; }
function rejecter(d, l, reject) { return reject; }
function joiner(d) { return d.join(''); } var grammar = {
Lexer: undefined,
ParserRules: [
{"name": "input", "symbols": []},
{"name": "input", "symbols": ["input_section"]},
{"name": "main", "symbols": ["input"]},
{"name": "input$ebnf$1", "symbols": ["input_section"], "postprocess": id},
{"name": "input$ebnf$1", "symbols": [], "postprocess": function(d) {return null;}},
{"name": "input", "symbols": ["input$ebnf$1"]},
{"name": "input_section", "symbols": ["input_section_part"]},
{"name": "input_section", "symbols": ["input_section", "input_section_part"]},
{"name": "input_section_part$ebnf$1", "symbols": ["input_elements"], "postprocess": id},
Expand Down Expand Up @@ -36,7 +38,7 @@ function id(x) { return x[0]; }
{"name": "single_line_comment", "symbols": ["single_line_comment$string$1", "single_line_comment$ebnf$1"]},
{"name": "input_characters", "symbols": ["input_character"]},
{"name": "input_characters", "symbols": ["input_characters", "input_character"]},
{"name": "input_character", "symbols": ["new_line"], "postprocess": nuller},
{"name": "input_character", "symbols": ["new_line"], "postprocess": rejecter},
{"name": "input_character", "symbols": ["unicode_character"]},
{"name": "unicode_character", "symbols": [/[\u0000-\uFFFF]/]},
{"name": "new_line_character", "symbols": ["charriage_return_character"]},
Expand All @@ -56,8 +58,8 @@ function id(x) { return x[0]; }
{"name": "delimited_comment_section", "symbols": ["delimited_comment_section$ebnf$1", "not_slash_or_asterisk"]},
{"name": "asterisks", "symbols": [{"literal":"*"}]},
{"name": "asterisks", "symbols": ["asterisks", {"literal":"*"}]},
{"name": "not_slash_or_asterisk", "symbols": [{"literal":"/"}], "postprocess": nuller},
{"name": "not_slash_or_asterisk", "symbols": [{"literal":"*"}], "postprocess": nuller},
{"name": "not_slash_or_asterisk", "symbols": [{"literal":"/"}], "postprocess": rejecter},
{"name": "not_slash_or_asterisk", "symbols": [{"literal":"*"}], "postprocess": rejecter},
{"name": "not_slash_or_asterisk", "symbols": ["unicode_character"]},
{"name": "whitespace", "symbols": ["whitespace_character"]},
{"name": "whitespace", "symbols": ["whitespace", "whitespace_character"]},
Expand All @@ -80,7 +82,7 @@ function id(x) { return x[0]; }
{"name": "unicode_escape_sequence", "symbols": ["unicode_escape_sequence$string$1", "hex_digit", "hex_digit", "hex_digit", "hex_digit", "unicode_escape_sequence$string$2", "hex_digit", "hex_digit", "hex_digit", "hex_digit", "hex_digit", "hex_digit", "hex_digit", "hex_digit"]},
{"name": "identifier", "symbols": ["available_identifier"]},
{"name": "identifier", "symbols": [{"literal":"@"}, "identifier_or_keyword"]},
{"name": "available_identifier", "symbols": ["keyword"], "postprocess": nuller},
{"name": "available_identifier", "symbols": ["keyword"], "postprocess": rejecter},
{"name": "available_identifier", "symbols": ["identifier_or_keyword"]},
{"name": "identifier_or_keyword$ebnf$1", "symbols": ["identifier_part_characters"], "postprocess": id},
{"name": "identifier_or_keyword$ebnf$1", "symbols": [], "postprocess": function(d) {return null;}},
Expand Down Expand Up @@ -422,9 +424,9 @@ function id(x) { return x[0]; }
{"name": "character", "symbols": ["simple_escape_sequence"]},
{"name": "character", "symbols": ["hexadecimal_escape_sequence"]},
{"name": "character", "symbols": ["unicode_escape_sequence"]},
{"name": "single_character", "symbols": [{"literal":"'"}], "postprocess": nuller},
{"name": "single_character", "symbols": [{"literal":"\\"}], "postprocess": nuller},
{"name": "single_character", "symbols": ["new_line_character"], "postprocess": nuller},
{"name": "single_character", "symbols": [{"literal":"'"}], "postprocess": rejecter},
{"name": "single_character", "symbols": [{"literal":"\\"}], "postprocess": rejecter},
{"name": "single_character", "symbols": ["new_line_character"], "postprocess": rejecter},
{"name": "single_character", "symbols": ["character"]},
{"name": "simple_escape_sequence$string$1", "symbols": [{"literal":"\\"}, {"literal":"'"}], "postprocess": function joiner(d) {return d.join('');}},
{"name": "simple_escape_sequence", "symbols": ["simple_escape_sequence$string$1"]},
Expand Down Expand Up @@ -467,9 +469,9 @@ function id(x) { return x[0]; }
{"name": "regular_string_literal_character", "symbols": ["simple_escape_sequence"]},
{"name": "regular_string_literal_character", "symbols": ["hexadecimal_escape_sequence"]},
{"name": "regular_string_literal_character", "symbols": ["unicode_escape_sequence"]},
{"name": "single_regular_string_literal_character", "symbols": [{"literal":"\""}], "postprocess": nuller},
{"name": "single_regular_string_literal_character", "symbols": [{"literal":"\\"}], "postprocess": nuller},
{"name": "single_regular_string_literal_character", "symbols": ["new_line_character"], "postprocess": nuller},
{"name": "single_regular_string_literal_character", "symbols": [{"literal":"\""}], "postprocess": rejecter},
{"name": "single_regular_string_literal_character", "symbols": [{"literal":"\\"}], "postprocess": rejecter},
{"name": "single_regular_string_literal_character", "symbols": ["new_line_character"], "postprocess": rejecter},
{"name": "single_regular_string_literal_character", "symbols": ["character"]},
{"name": "verbatim_string_literal$string$1", "symbols": [{"literal":"@"}, {"literal":"\""}], "postprocess": function joiner(d) {return d.join('');}},
{"name": "verbatim_string_literal$ebnf$1", "symbols": ["verbatim_string_literal_characters"], "postprocess": id},
Expand All @@ -479,7 +481,7 @@ function id(x) { return x[0]; }
{"name": "verbatim_string_literal_characters", "symbols": ["verbatim_string_literal_characters", "verbatim_string_literal_character"]},
{"name": "verbatim_string_literal_character", "symbols": ["single_verbatim_string_literal_character"]},
{"name": "verbatim_string_literal_character", "symbols": ["quote_escape_sequence"]},
{"name": "single_verbatim_string_literal_character", "symbols": [{"literal":"\""}], "postprocess": nuller},
{"name": "single_verbatim_string_literal_character", "symbols": [{"literal":"\""}], "postprocess": rejecter},
{"name": "single_verbatim_string_literal_character", "symbols": ["character"]},
{"name": "quote_escape_sequence$string$1", "symbols": [{"literal":"\""}, {"literal":"\""}], "postprocess": function joiner(d) {return d.join('');}},
{"name": "quote_escape_sequence", "symbols": ["quote_escape_sequence$string$1"]},
Expand Down Expand Up @@ -562,9 +564,9 @@ function id(x) { return x[0]; }
{"name": "pp_directive", "symbols": ["pp_region"]},
{"name": "pp_directive", "symbols": ["pp_pragma"]},
{"name": "conditional_symbol$string$1", "symbols": [{"literal":"t"}, {"literal":"r"}, {"literal":"u"}, {"literal":"e"}], "postprocess": function joiner(d) {return d.join('');}},
{"name": "conditional_symbol", "symbols": ["conditional_symbol$string$1"], "postprocess": nuller},
{"name": "conditional_symbol", "symbols": ["conditional_symbol$string$1"], "postprocess": rejecter},
{"name": "conditional_symbol$string$2", "symbols": [{"literal":"f"}, {"literal":"a"}, {"literal":"l"}, {"literal":"s"}, {"literal":"e"}], "postprocess": function joiner(d) {return d.join('');}},
{"name": "conditional_symbol", "symbols": ["conditional_symbol$string$2"], "postprocess": nuller},
{"name": "conditional_symbol", "symbols": ["conditional_symbol$string$2"], "postprocess": rejecter},
{"name": "conditional_symbol", "symbols": ["identifier_or_keyword"]},
{"name": "pp_expression$ebnf$1", "symbols": ["whitespace"], "postprocess": id},
{"name": "pp_expression$ebnf$1", "symbols": [], "postprocess": function(d) {return null;}},
Expand Down Expand Up @@ -679,7 +681,7 @@ function id(x) { return x[0]; }
{"name": "skipped_characters$ebnf$2", "symbols": ["input_characters"], "postprocess": id},
{"name": "skipped_characters$ebnf$2", "symbols": [], "postprocess": function(d) {return null;}},
{"name": "skipped_characters", "symbols": ["skipped_characters$ebnf$1", "not_number_sign", "skipped_characters$ebnf$2"]},
{"name": "not_number_sign", "symbols": [{"literal":"#"}], "postprocess": nuller},
{"name": "not_number_sign", "symbols": [{"literal":"#"}], "postprocess": rejecter},
{"name": "not_number_sign", "symbols": ["input_character"]},
{"name": "pp_diagnostic$ebnf$1", "symbols": ["whitespace"], "postprocess": id},
{"name": "pp_diagnostic$ebnf$1", "symbols": [], "postprocess": function(d) {return null;}},
Expand Down Expand Up @@ -727,8 +729,8 @@ function id(x) { return x[0]; }
{"name": "file_name", "symbols": [{"literal":"\""}, "file_name_characters", {"literal":"\""}]},
{"name": "file_name_characters", "symbols": ["file_name_character"]},
{"name": "file_name_characters", "symbols": ["file_name_characters", "file_name_character"]},
{"name": "file_name_character", "symbols": [{"literal":"\""}], "postprocess": nuller},
{"name": "file_name_character", "symbols": ["new_line_character"], "postprocess": nuller},
{"name": "file_name_character", "symbols": [{"literal":"\""}], "postprocess": rejecter},
{"name": "file_name_character", "symbols": ["new_line_character"], "postprocess": rejecter},
{"name": "file_name_character", "symbols": ["input_character"]},
{"name": "pp_pragma$ebnf$1", "symbols": ["whitespace"], "postprocess": id},
{"name": "pp_pragma$ebnf$1", "symbols": [], "postprocess": function(d) {return null;}},
Expand All @@ -741,7 +743,7 @@ function id(x) { return x[0]; }
{"name": "pp_pragma_text$ebnf$1", "symbols": [], "postprocess": function(d) {return null;}},
{"name": "pp_pragma_text", "symbols": ["whitespace", "pp_pragma_text$ebnf$1", "new_line"]}
]
, ParserStart: "input"
, ParserStart: "main"
}
if (typeof module !== 'undefined'&& typeof module.exports !== 'undefined') {
module.exports = grammar;
Expand Down
34 changes: 17 additions & 17 deletions src/nearley/grammar.ne
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

# TODO: use underscore to match spaces in grammar

@{% function nuller() { return null; } %}
@{% function rejecter(d, l, reject) { return reject; } %}
@{% function joiner(d) { return d.join(''); } %}

main ->
Expand Down Expand Up @@ -65,7 +65,7 @@ input_characters ->
input_characters input_character

input_character ->
new_line {% nuller %} |
new_line {% rejecter %} |
unicode_character

unicode_character ->
Expand Down Expand Up @@ -94,8 +94,8 @@ asterisks ->
asterisks "*"

not_slash_or_asterisk ->
"/" {% nuller %} |
"*" {% nuller %} |
"/" {% rejecter %} |
"*" {% rejecter %} |
unicode_character

whitespace ->
Expand Down Expand Up @@ -135,7 +135,7 @@ identifier ->
"@" identifier_or_keyword

available_identifier ->
keyword {% nuller %} |
keyword {% rejecter %} |
identifier_or_keyword

identifier_or_keyword ->
Expand Down Expand Up @@ -405,9 +405,9 @@ character ->
unicode_escape_sequence

single_character ->
"\u0027" {% nuller %} |
"\u005C" {% nuller %} |
new_line_character {% nuller %} |
"\u0027" {% rejecter %} |
"\u005C" {% rejecter %} |
new_line_character {% rejecter %} |
character

simple_escape_sequence ->
Expand Down Expand Up @@ -444,9 +444,9 @@ regular_string_literal_character ->
unicode_escape_sequence

single_regular_string_literal_character ->
"\u0022" {% nuller %} |
"\u005C" {% nuller %} |
new_line_character {% nuller %} |
"\u0022" {% rejecter %} |
"\u005C" {% rejecter %} |
new_line_character {% rejecter %} |
character

verbatim_string_literal ->
Expand All @@ -461,7 +461,7 @@ verbatim_string_literal_character ->
quote_escape_sequence

single_verbatim_string_literal_character ->
"\"" {% nuller %} |
"\"" {% rejecter %} |
character

quote_escape_sequence ->
Expand Down Expand Up @@ -532,8 +532,8 @@ pp_directive ->
pp_pragma

conditional_symbol ->
"true" {% nuller %} |
"false" {% nuller %} |
"true" {% rejecter %} |
"false" {% rejecter %} |
identifier_or_keyword

pp_expression ->
Expand Down Expand Up @@ -604,7 +604,7 @@ skipped_characters ->
whitespace:? not_number_sign input_characters:?

not_number_sign ->
"#" {% nuller %} |
"#" {% rejecter %} |
input_character

pp_diagnostic ->
Expand Down Expand Up @@ -641,8 +641,8 @@ file_name_characters ->
file_name_characters file_name_character

file_name_character ->
"\u0022" {% nuller %} |
new_line_character {% nuller %} |
"\u0022" {% rejecter %} |
new_line_character {% rejecter %} |
input_character

pp_pragma ->
Expand Down

0 comments on commit ea4d630

Please sign in to comment.