org.antlr.codegen
Class ActionScriptTarget
java.lang.Object
org.antlr.codegen.Target
org.antlr.codegen.ActionScriptTarget
public class ActionScriptTarget
- extends Target
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
ActionScriptTarget
public ActionScriptTarget()
getTargetCharLiteralFromANTLRCharLiteral
public java.lang.String getTargetCharLiteralFromANTLRCharLiteral(CodeGenerator generator,
java.lang.String literal)
- Description copied from class:
Target
- Convert from an ANTLR char literal found in a grammar file to
an equivalent char literal in the target language. For most
languages, this means leaving 'x' as 'x'. Actually, we need
to escape '
' so that it doesn't get converted to \n by
the compiler. Convert the literal to the char value and then
to an appropriate target char literal.
Expect single quotes around the incoming literal.
- Overrides:
getTargetCharLiteralFromANTLRCharLiteral
in class Target
getTokenTypeAsTargetLabel
public java.lang.String getTokenTypeAsTargetLabel(CodeGenerator generator,
int ttype)
- Description copied from class:
Target
- Target must be able to override the labels used for token types
- Overrides:
getTokenTypeAsTargetLabel
in class Target
encodeIntAsCharEscape
public java.lang.String encodeIntAsCharEscape(int v)
- ActionScript doesn't support Unicode String literals that are considered "illegal"
or are in the surrogate pair ranges. For example "/uffff" will not encode properly
nor will "/ud800". To keep things as compact as possible we use the following encoding
if the int is below 255, we encode as hex literal
If the int is between 255 and 0x7fff we use a single unicode literal with the value
If the int is above 0x7fff, we use a unicode literal of 0x80hh, where hh is the high-order
bits followed by \xll where ll is the lower order bits of a 16-bit number.
Ideally this should be improved at a future date. The most optimal way to encode this
may be a compressed AMF encoding that is embedded using an Embed tag in ActionScript.
- Overrides:
encodeIntAsCharEscape
in class Target
- Parameters:
v
-
- Returns:
getTarget64BitStringFromValue
public java.lang.String getTarget64BitStringFromValue(long word)
- Convert long to two 32-bit numbers separted by a comma.
ActionScript does not support 64-bit numbers, so we need to break
the number into two 32-bit literals to give to the Bit. A number like
0xHHHHHHHHLLLLLLLL is broken into the following string:
"0xLLLLLLLL, 0xHHHHHHHH"
Note that the low order bits are first, followed by the high order bits.
This is to match how the BitSet constructor works, where the bits are
passed in in 32-bit chunks with low-order bits coming first.
- Overrides:
getTarget64BitStringFromValue
in class Target
chooseWhereCyclicDFAsGo
protected StringTemplate chooseWhereCyclicDFAsGo(Tool tool,
CodeGenerator generator,
Grammar grammar,
StringTemplate recognizerST,
StringTemplate cyclicDFAST)