|
|
@ -1,4 +1,5 @@
|
|
|
|
var utils = require("../../utils");
|
|
|
|
var utils = require("../../utils"),
|
|
|
|
|
|
|
|
GrammarError = require("../../grammar-error.js");
|
|
|
|
|
|
|
|
|
|
|
|
/* Checks that no left recursion is present. */
|
|
|
|
/* Checks that no left recursion is present. */
|
|
|
|
module.exports = function(ast) {
|
|
|
|
module.exports = function(ast) {
|
|
|
@ -48,7 +49,7 @@ module.exports = function(ast) {
|
|
|
|
rule_ref:
|
|
|
|
rule_ref:
|
|
|
|
function(node, appliedRules) {
|
|
|
|
function(node, appliedRules) {
|
|
|
|
if (utils.contains(appliedRules, node.name)) {
|
|
|
|
if (utils.contains(appliedRules, node.name)) {
|
|
|
|
throw new PEG.GrammarError(
|
|
|
|
throw new GrammarError(
|
|
|
|
"Left recursion detected for rule \"" + node.name + "\"."
|
|
|
|
"Left recursion detected for rule \"" + node.name + "\"."
|
|
|
|
);
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
|
|
|