package grammar.java;
import static grammar.GrammarDSL.*;
import grammar.Expression;
import grammar.Grammar;
/**
* Grammar rules for require statements.
*
* See {@link driver.RequiresParser} for more information about require
* statement.
*
* @see JavaGrammar
*/
public class _D_Requires extends _C_Statements
{
/****************************************************************************/
public final Expression require = keyword("require");
/****************************************************************************/
public final Expression macro = keyword("macro");
/****************************************************************************/
public final Expression starryIdentifier = rule_seq(
qualifiedIdentifier, opt(dot, star));
/****************************************************************************/
public final Expression starryIdentifierOne = rule_seq(
identifier, dot, choice(star, starryIdentifier));
/****************************************************************************/
public final Expression staticRequire = rule_seq(
require, _static, starryIdentifierOne,
opt(colon, choice(
seq(colon, choice(star, starryIdentifier)),
seq(opt(colon), starryIdentifierOne)
)),
semi
);
/****************************************************************************/
public final Expression macroRequire = rule_seq(
require, macro, starryIdentifierOne,
opt(colon, choice(colon, star, identifier)), semi
);
/****************************************************************************/
public final Expression regularRequire = rule_seq(
require, starryIdentifierOne,
opt(colon, opt(colon), opt(choice(star, starryIdentifier))), semi
);
/****************************************************************************/
public final Expression.Rule requireDeclaration = rule(
macroRequire, staticRequire, regularRequire);
/****************************************************************************/
public void initialize(Grammar grammar)
{
grammar.addExistingRuleAlternative(grammar.rule("importDeclaration"),
requireDeclaration, false);
prelude.callbacks = new CallbacksPrelude();
}
}