9717dc3417
The new terminology is more precise and in line with commonly used programming languages. The change involves mainly renaming related compiler pass and files associated with it.
24 lines
536 B
JavaScript
24 lines
536 B
JavaScript
"use strict";
|
|
|
|
var GrammarError = require("../../grammar-error"),
|
|
asts = require("../asts"),
|
|
visitor = require("../visitor");
|
|
|
|
/* Checks that all referenced rules exist. */
|
|
function reportUndefinedRules(ast) {
|
|
var check = visitor.build({
|
|
rule_ref: function(node) {
|
|
if (!asts.findRule(ast, node.name)) {
|
|
throw new GrammarError(
|
|
"Rule \"" + node.name + "\" is not defined.",
|
|
node.location
|
|
);
|
|
}
|
|
}
|
|
});
|
|
|
|
check(ast);
|
|
}
|
|
|
|
module.exports = reportUndefinedRules;
|