org.antlr.v4.tool.LexerGrammar Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of antlr4 Show documentation
Show all versions of antlr4 Show documentation
The ANTLR 4 grammar compiler.
/*
* Copyright (c) 2012 The ANTLR Project. All rights reserved.
* Use of this file is governed by the BSD-3-Clause license that
* can be found in the LICENSE.txt file in the project root.
*/
package org.antlr.v4.tool;
import org.antlr.runtime.RecognitionException;
import org.antlr.v4.Tool;
import org.antlr.v4.runtime.misc.MultiMap;
import org.antlr.v4.tool.ast.GrammarRootAST;
/** */
public class LexerGrammar extends Grammar {
public static final String DEFAULT_MODE_NAME = "DEFAULT_MODE";
/** The grammar from which this lexer grammar was derived (if implicit) */
public Grammar implicitLexerOwner;
/** DEFAULT_MODE rules are added first due to grammar syntax order */
public MultiMap modes;
public LexerGrammar(Tool tool, GrammarRootAST ast) {
super(tool, ast);
}
public LexerGrammar(String grammarText) throws RecognitionException {
super(grammarText);
}
public LexerGrammar(String grammarText, ANTLRToolListener listener) throws RecognitionException {
super(grammarText, listener);
}
public LexerGrammar(String fileName, String grammarText, ANTLRToolListener listener) throws RecognitionException {
super(fileName, grammarText, listener);
}
@Override
public boolean defineRule(Rule r) {
if (!super.defineRule(r)) {
return false;
}
if ( modes==null ) modes = new MultiMap();
modes.map(r.mode, r);
return true;
}
@Override
public boolean undefineRule(Rule r) {
if (!super.undefineRule(r)) {
return false;
}
boolean removed = modes.get(r.mode).remove(r);
assert removed;
return true;
}
}