Class JavaScriptTarget
- java.lang.Object
-
- org.antlr.v4.codegen.Target
-
- org.antlr.v4.codegen.target.JavaScriptTarget
-
public class JavaScriptTarget extends Target
- Author:
- Eric Vergnaud
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static class
JavaScriptTarget.JavaStringRenderer
-
Field Summary
Fields Modifier and Type Field Description protected Set<String>
badWords
Avoid grammar symbols in this set to prevent conflicts in gen'd code.protected static String[]
javaScriptKeywords
Source: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar-
Fields inherited from class org.antlr.v4.codegen.Target
gen, targetCharValueEscape
-
-
Constructor Summary
Constructors Constructor Description JavaScriptTarget(CodeGenerator gen)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
addBadWords()
String
encodeIntAsCharEscape(int v)
Assume 16-bit charSet<String>
getBadWords()
int
getInlineTestSetWordSize()
How many bits should be used to do inline token type tests? Java assumes a 64-bit word for bitsets.int
getSerializedATNSegmentLimit()
Gets the maximum number of 16-bit unsigned integers that can be encoded in a single segment of the serialized ATN.String
getTargetStringLiteralFromANTLRStringLiteral(CodeGenerator generator, String literal, boolean addQuotes)
Convert from an ANTLR string literal found in a grammar file to an equivalent string literal in the target language.String
getVersion()
ANTLR tool should check output templates / target are compatible with tool code generation.protected org.stringtemplate.v4.STGroup
loadTemplates()
boolean
supportsOverloadedMethods()
protected boolean
visibleGrammarSymbolCausesIssueInGeneratedCode(GrammarAST idNode)
boolean
wantsBaseListener()
boolean
wantsBaseVisitor()
-
Methods inherited from class org.antlr.v4.codegen.Target
genFile, getAltLabelContextStructName, getBaseListenerFileName, getBaseVisitorFileName, getCodeGenerator, getElementListName, getElementName, getImplicitRuleLabel, getImplicitSetLabel, getImplicitTokenLabel, getLanguage, getListenerFileName, getListLabel, getLoopCounter, getLoopLabel, getRecognizerFileName, getRuleFunctionContextStructName, getRuleFunctionContextStructName, getTargetStringLiteralFromString, getTargetStringLiteralFromString, getTemplates, getTokenTypeAsTargetLabel, getTokenTypesAsTargetLabels, getVisitorFileName, grammarSymbolCausesIssueInGeneratedCode, needsHeader, templatesExist
-
-
-
-
Constructor Detail
-
JavaScriptTarget
public JavaScriptTarget(CodeGenerator gen)
-
-
Method Detail
-
getVersion
public String getVersion()
Description copied from class:Target
ANTLR tool should check output templates / target are compatible with tool code generation. For now, a simple string match used on x.y of x.y.z scheme. We use a method to avoid mismatches between a template called VERSION. This value is checked against Tool.VERSION during load of templates. This additional method forces all targets 4.3 and beyond to add this method.- Specified by:
getVersion
in classTarget
-
addBadWords
protected void addBadWords()
-
getTargetStringLiteralFromANTLRStringLiteral
public String getTargetStringLiteralFromANTLRStringLiteral(CodeGenerator generator, 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.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.- Overrides:
getTargetStringLiteralFromANTLRStringLiteral
in classTarget
-
encodeIntAsCharEscape
public String encodeIntAsCharEscape(int v)
Description copied from class:Target
Assume 16-bit char- Overrides:
encodeIntAsCharEscape
in classTarget
-
getSerializedATNSegmentLimit
public int getSerializedATNSegmentLimit()
Description copied from class:Target
Gets the maximum number of 16-bit unsigned integers that can be encoded in a single segment of the serialized ATN.- Overrides:
getSerializedATNSegmentLimit
in classTarget
- Returns:
- the serialized ATN segment limit
- See Also:
SerializedATN.getSegments()
-
getInlineTestSetWordSize
public int getInlineTestSetWordSize()
Description copied from class:Target
How many bits should be used to do inline token type tests? Java assumes a 64-bit word for bitsets. Must be a valid wordsize for your target like 8, 16, 32, 64, etc...- Overrides:
getInlineTestSetWordSize
in classTarget
-
visibleGrammarSymbolCausesIssueInGeneratedCode
protected boolean visibleGrammarSymbolCausesIssueInGeneratedCode(GrammarAST idNode)
- Specified by:
visibleGrammarSymbolCausesIssueInGeneratedCode
in classTarget
-
loadTemplates
protected org.stringtemplate.v4.STGroup loadTemplates()
- Overrides:
loadTemplates
in classTarget
-
wantsBaseListener
public boolean wantsBaseListener()
- Overrides:
wantsBaseListener
in classTarget
-
wantsBaseVisitor
public boolean wantsBaseVisitor()
- Overrides:
wantsBaseVisitor
in classTarget
-
supportsOverloadedMethods
public boolean supportsOverloadedMethods()
- Overrides:
supportsOverloadedMethods
in classTarget
-
-