grammarfile.java
来自「SRI international 发布的OAA框架软件」· Java 代码 · 共 72 行
JAVA
72 行
package antlr_oaa.preprocessor;
/* ANTLR Translator Generator
* Project led by Terence Parr at http://www.jGuru.com
* Software rights: http://www.antlr.org/RIGHTS.html
*
* $Id: GrammarFile.java,v 1.1 2002/11/08 17:36:59 agno Exp $
*/
import antlr_oaa.collections.impl.IndexedVector;
import java.util.Enumeration;
import java.io.*;
/** Stores header action, grammar preamble, file options, and
* list of grammars in the file
*/
public class GrammarFile {
protected String fileName;
protected String headerAction="";
protected IndexedVector options;
protected IndexedVector grammars;
protected boolean expanded = false; // any grammars expanded within?
public GrammarFile(String f) {
fileName = f;
grammars = new IndexedVector();
}
public void addGrammar(Grammar g) {
grammars.appendElement(g.getName(), g);
}
public void generateExpandedFile() throws IOException {
if ( !expanded ) {
return; // don't generate if nothing got expanded
}
String expandedFileName = nameForExpandedGrammarFile(this.getName());
// create the new grammar file with expanded grammars
PrintWriter expF = antlr_oaa.Tool.openOutputFile(expandedFileName);
expF.println(toString());
expF.close();
}
public IndexedVector getGrammars() {
return grammars;
}
public String getName() {return fileName;}
public String nameForExpandedGrammarFile(String f) {
if ( expanded ) {
// strip path to original input, make expanded file in current dir
return "expanded"+antlr_oaa.Tool.fileMinusPath(f);
}
else {
return f;
}
}
public void setExpanded(boolean exp) {
expanded = exp;
}
public void addHeaderAction(String a) {headerAction+=a+System.getProperty("line.separator");}
public void setOptions(IndexedVector o) {options=o;}
public String toString() {
String h = headerAction==null ? "" : headerAction;
String o = options==null ? "" : Hierarchy.optionsToString(options);
String s=h+o;
for (Enumeration e=grammars.elements(); e.hasMoreElements(); ) {
Grammar g = (Grammar)e.nextElement();
s += g;
}
return s;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?