Quote keys in |parseFunctions| table in generated parsers

IE and Nitro choked when rule names that are JavaScript reserved words
(e.g. "class") were used.
redux
David Majda 13 years ago
parent 596bf6eba9
commit 1f89c7746f

@ -98,7 +98,7 @@ PEG.compiler.emitter = function(ast) {
var parseFunctionTableItems = []; var parseFunctionTableItems = [];
for (var name in node.rules) { for (var name in node.rules) {
parseFunctionTableItems.push(name + ": parse_" + name); parseFunctionTableItems.push(quote(name) + ": parse_" + name);
} }
parseFunctionTableItems.sort(); parseFunctionTableItems.sort();

@ -10,61 +10,61 @@ PEG.parser = (function(){
*/ */
parse: function(input, startRule) { parse: function(input, startRule) {
var parseFunctions = { var parseFunctions = {
__: parse___, "__": parse___,
action: parse_action, "action": parse_action,
and: parse_and, "and": parse_and,
braced: parse_braced, "braced": parse_braced,
bracketDelimitedCharacter: parse_bracketDelimitedCharacter, "bracketDelimitedCharacter": parse_bracketDelimitedCharacter,
choice: parse_choice, "choice": parse_choice,
class: parse_class, "class": parse_class,
classCharacter: parse_classCharacter, "classCharacter": parse_classCharacter,
classCharacterRange: parse_classCharacterRange, "classCharacterRange": parse_classCharacterRange,
colon: parse_colon, "colon": parse_colon,
comment: parse_comment, "comment": parse_comment,
digit: parse_digit, "digit": parse_digit,
dot: parse_dot, "dot": parse_dot,
doubleQuotedCharacter: parse_doubleQuotedCharacter, "doubleQuotedCharacter": parse_doubleQuotedCharacter,
doubleQuotedLiteral: parse_doubleQuotedLiteral, "doubleQuotedLiteral": parse_doubleQuotedLiteral,
eol: parse_eol, "eol": parse_eol,
eolChar: parse_eolChar, "eolChar": parse_eolChar,
eolEscapeSequence: parse_eolEscapeSequence, "eolEscapeSequence": parse_eolEscapeSequence,
equals: parse_equals, "equals": parse_equals,
grammar: parse_grammar, "grammar": parse_grammar,
hexDigit: parse_hexDigit, "hexDigit": parse_hexDigit,
hexEscapeSequence: parse_hexEscapeSequence, "hexEscapeSequence": parse_hexEscapeSequence,
identifier: parse_identifier, "identifier": parse_identifier,
initializer: parse_initializer, "initializer": parse_initializer,
labeled: parse_labeled, "labeled": parse_labeled,
letter: parse_letter, "letter": parse_letter,
literal: parse_literal, "literal": parse_literal,
lowerCaseLetter: parse_lowerCaseLetter, "lowerCaseLetter": parse_lowerCaseLetter,
lparen: parse_lparen, "lparen": parse_lparen,
multiLineComment: parse_multiLineComment, "multiLineComment": parse_multiLineComment,
nonBraceCharacter: parse_nonBraceCharacter, "nonBraceCharacter": parse_nonBraceCharacter,
nonBraceCharacters: parse_nonBraceCharacters, "nonBraceCharacters": parse_nonBraceCharacters,
not: parse_not, "not": parse_not,
plus: parse_plus, "plus": parse_plus,
prefixed: parse_prefixed, "prefixed": parse_prefixed,
primary: parse_primary, "primary": parse_primary,
question: parse_question, "question": parse_question,
rparen: parse_rparen, "rparen": parse_rparen,
rule: parse_rule, "rule": parse_rule,
semicolon: parse_semicolon, "semicolon": parse_semicolon,
sequence: parse_sequence, "sequence": parse_sequence,
simpleBracketDelimitedCharacter: parse_simpleBracketDelimitedCharacter, "simpleBracketDelimitedCharacter": parse_simpleBracketDelimitedCharacter,
simpleDoubleQuotedCharacter: parse_simpleDoubleQuotedCharacter, "simpleDoubleQuotedCharacter": parse_simpleDoubleQuotedCharacter,
simpleEscapeSequence: parse_simpleEscapeSequence, "simpleEscapeSequence": parse_simpleEscapeSequence,
simpleSingleQuotedCharacter: parse_simpleSingleQuotedCharacter, "simpleSingleQuotedCharacter": parse_simpleSingleQuotedCharacter,
singleLineComment: parse_singleLineComment, "singleLineComment": parse_singleLineComment,
singleQuotedCharacter: parse_singleQuotedCharacter, "singleQuotedCharacter": parse_singleQuotedCharacter,
singleQuotedLiteral: parse_singleQuotedLiteral, "singleQuotedLiteral": parse_singleQuotedLiteral,
slash: parse_slash, "slash": parse_slash,
star: parse_star, "star": parse_star,
suffixed: parse_suffixed, "suffixed": parse_suffixed,
unicodeEscapeSequence: parse_unicodeEscapeSequence, "unicodeEscapeSequence": parse_unicodeEscapeSequence,
upperCaseLetter: parse_upperCaseLetter, "upperCaseLetter": parse_upperCaseLetter,
whitespace: parse_whitespace, "whitespace": parse_whitespace,
zeroEscapeSequence: parse_zeroEscapeSequence "zeroEscapeSequence": parse_zeroEscapeSequence
}; };
if (startRule !== undefined) { if (startRule !== undefined) {

Loading…
Cancel
Save