public abstract class Target
extends java.lang.Object
| Modifier and Type | Field and Description |
|---|---|
protected java.lang.String[] |
targetCharValueEscape
For pure strings of Java 16-bit Unicode char, how can we display
it in the target language as a literal.
|
| Modifier | Constructor and Description |
|---|---|
protected |
Target(CodeGenerator gen,
java.lang.String language) |
| Modifier and Type | Method and Description |
|---|---|
java.lang.String |
encodeIntAsCharEscape(int v)
Assume 16-bit char
|
protected void |
genFile(Grammar g,
org.stringtemplate.v4.ST outputFileST,
java.lang.String fileName) |
protected void |
genListenerFile(Grammar g,
org.stringtemplate.v4.ST outputFileST) |
protected void |
genRecognizerHeaderFile(Grammar g,
org.stringtemplate.v4.ST headerFileST,
java.lang.String extName) |
java.lang.String |
getAltLabelContextStructName(java.lang.String label) |
CodeGenerator |
getCodeGenerator() |
java.lang.String |
getElementListName(java.lang.String name) |
java.lang.String |
getElementName(java.lang.String name) |
java.lang.String |
getImplicitRuleLabel(java.lang.String ruleName) |
java.lang.String |
getImplicitSetLabel(java.lang.String id) |
java.lang.String |
getImplicitTokenLabel(java.lang.String tokenName) |
int |
getInlineTestSetWordSize()
How many bits should be used to do inline token type tests? Java assumes
a 64-bit word for bitsets.
|
java.lang.String |
getLanguage() |
java.lang.String |
getListLabel(java.lang.String label) |
java.lang.String |
getLoopCounter(GrammarAST ast) |
java.lang.String |
getLoopLabel(GrammarAST ast) |
java.lang.String |
getRuleFunctionContextStructName(Rule r) |
java.lang.String |
getRuleFunctionContextStructName(RuleFunction function)
If we know which actual function, we can provide the actual ctx type.
|
int |
getSerializedATNSegmentLimit()
Gets the maximum number of 16-bit unsigned integers that can be encoded
in a single segment of the serialized ATN.
|
java.lang.String |
getTargetStringLiteralFromANTLRStringLiteral(CodeGenerator generator,
java.lang.String literal,
boolean addQuotes)
Convert from an ANTLR string literal found in a grammar file to an
equivalent string literal in the target language.
|
java.lang.String |
getTargetStringLiteralFromString(java.lang.String s) |
java.lang.String |
getTargetStringLiteralFromString(java.lang.String s,
boolean quoted)
Given a random string of Java unicode chars, return a new string with
optionally appropriate quote characters for target language and possibly
with some escaped characters.
|
org.stringtemplate.v4.STGroup |
getTemplates() |
java.lang.String |
getTokenTypeAsTargetLabel(Grammar g,
int ttype)
Get a meaningful name for a token type useful during code generation.
|
java.lang.String[] |
getTokenTypesAsTargetLabels(Grammar g,
int[] ttypes) |
abstract java.lang.String |
getVersion()
ANTLR tool should check output templates / target are compatible with tool code generation.
|
boolean |
grammarSymbolCausesIssueInGeneratedCode(GrammarAST idNode) |
protected org.stringtemplate.v4.STGroup |
loadTemplates() |
boolean |
supportsOverloadedMethods() |
boolean |
templatesExist() |
protected abstract boolean |
visibleGrammarSymbolCausesIssueInGeneratedCode(GrammarAST idNode) |
boolean |
wantsBaseListener() |
boolean |
wantsBaseVisitor() |
protected java.lang.String[] targetCharValueEscape
Target subclass is free to alter the translated chars
or add more definitions. This is non-static so each target can have
a different set in memory at same time.protected Target(CodeGenerator gen, java.lang.String language)
public CodeGenerator getCodeGenerator()
public java.lang.String getLanguage()
public abstract java.lang.String getVersion()
public org.stringtemplate.v4.STGroup getTemplates()
protected void genFile(Grammar g, org.stringtemplate.v4.ST outputFileST, java.lang.String fileName)
protected void genListenerFile(Grammar g, org.stringtemplate.v4.ST outputFileST)
protected void genRecognizerHeaderFile(Grammar g, org.stringtemplate.v4.ST headerFileST, java.lang.String extName)
public java.lang.String getTokenTypeAsTargetLabel(Grammar g, int ttype)
public java.lang.String[] getTokenTypesAsTargetLabels(Grammar g, int[] ttypes)
public java.lang.String getTargetStringLiteralFromString(java.lang.String s,
boolean quoted)
public java.lang.String getTargetStringLiteralFromString(java.lang.String s)
public java.lang.String getTargetStringLiteralFromANTLRStringLiteral(CodeGenerator generator, java.lang.String literal, boolean addQuotes)
Convert from an ANTLR string literal found in a grammar file to an equivalent string literal in the target language.
For Java, this is the translation 'a\n"' → "a\n\"".
Expect single quotes around the incoming literal. Just flip the quotes
and replace double quotes with \".
Note that we have decided to allow people to use '\"' without penalty, so
we must build the target string in a loop as String.replace(char, char)
cannot handle both \" and " without a lot of messing
around.
public java.lang.String encodeIntAsCharEscape(int v)
public java.lang.String getLoopLabel(GrammarAST ast)
public java.lang.String getLoopCounter(GrammarAST ast)
public java.lang.String getListLabel(java.lang.String label)
public java.lang.String getRuleFunctionContextStructName(Rule r)
public java.lang.String getAltLabelContextStructName(java.lang.String label)
public java.lang.String getRuleFunctionContextStructName(RuleFunction function)
public java.lang.String getImplicitTokenLabel(java.lang.String tokenName)
public java.lang.String getImplicitSetLabel(java.lang.String id)
public java.lang.String getImplicitRuleLabel(java.lang.String ruleName)
public java.lang.String getElementListName(java.lang.String name)
public java.lang.String getElementName(java.lang.String name)
public int getSerializedATNSegmentLimit()
SerializedATN.getSegments()public int getInlineTestSetWordSize()
public boolean grammarSymbolCausesIssueInGeneratedCode(GrammarAST idNode)
protected abstract boolean visibleGrammarSymbolCausesIssueInGeneratedCode(GrammarAST idNode)
public boolean templatesExist()
protected org.stringtemplate.v4.STGroup loadTemplates()
public boolean wantsBaseListener()
public boolean wantsBaseVisitor()
public boolean supportsOverloadedMethods()