AST refactoring 2/6: Add |type| property to AST nodes

redux
David Majda 14 years ago
parent 4e99a2bda7
commit c59516541f

@ -182,43 +182,71 @@ PEG.Grammar.GrammarError.prototype = Error.prototype;
/* ===== PEG.Grammar.* ===== */
PEG.Grammar.Rule = function(name, displayName, expression) {
this.type = "rule";
this.name = name;
this.displayName = displayName;
this.expression = expression;
};
PEG.Grammar.Choice = function(alternatives) {
this.type = "choice";
this.alternatives = alternatives;
};
PEG.Grammar.Sequence = function(elements) { this.elements = elements; };
PEG.Grammar.Sequence = function(elements) {
this.type = "sequence";
this.elements = elements;
};
PEG.Grammar.AndPredicate = function(expression) {
this.type = "and_predicate";
this.expression = expression;
};
PEG.Grammar.NotPredicate = function(expression) {
this.type = "not_predicate";
this.expression = expression;
};
PEG.Grammar.Optional = function(expression) { this.expression = expression; };
PEG.Grammar.Optional = function(expression) {
this.type = "optional";
this.expression = expression;
};
PEG.Grammar.ZeroOrMore = function(expression) { this.expression = expression; };
PEG.Grammar.ZeroOrMore = function(expression) {
this.type = "zero_or_more";
this.expression = expression;
};
PEG.Grammar.OneOrMore = function(expression) { this.expression = expression; };
PEG.Grammar.OneOrMore = function(expression) {
this.type = "one_or_more";
this.expression = expression;
};
PEG.Grammar.Action = function(expression, action) {
this.type = "action";
this.expression = expression;
this.action = action;
};
PEG.Grammar.RuleRef = function(name) { this.name = name; };
PEG.Grammar.RuleRef = function(name) {
this.type = "rule_ref";
this.name = name;
};
PEG.Grammar.Literal = function(value) { this.value = value; };
PEG.Grammar.Literal = function(value) {
this.type = "literal";
this.value = value;
};
PEG.Grammar.Any = function() {};
PEG.Grammar.Any = function() {
this.type = "any";
};
PEG.Grammar.Class = function(characters) { this.characters = characters; };
PEG.Grammar.Class = function(characters) {
this.type = "class";
this.characters = characters;
};
/* ===== Referenced Rule Existence Checks ===== */
@ -967,7 +995,7 @@ PEG.Grammar.Action.prototype.compile = function(resultVar) {
var expressionResultVar = PEG.Compiler.generateUniqueIdentifier("result");
if (this.expression instanceof PEG.Grammar.Sequence) {
if (this.expression.type === "sequence") {
var params = PEG.ArrayUtils.map(
PEG.ArrayUtils.range(1, this.expression.elements.length + 1),
function(n) { return "$" + n; }

Loading…
Cancel
Save