Logo Search packages:      
Sourcecode: yui-compressor version File versions  Download package

org::mozilla::javascript::Decompiler Class Reference

List of all members.


Detailed Description

The following class save decompilation information about the source. Source information is returned from the parser as a String associated with function nodes and with the toplevel script. When saved in the constant pool of a class, this string will be UTF-8 encoded, and token values will occupy a single byte.

Source is saved (mostly) as token numbers. The tokens saved pretty much correspond to the token stream of a 'canonical' representation of the input program, as directed by the parser. (There were a few cases where tokens could have been left out where decompiler could easily reconstruct them, but I left them in for clarity). (I also looked adding source collection to TokenStream instead, where I could have limited the changes to a few lines in getToken... but this wouldn't have saved any space in the resulting source representation, and would have meant that I'd have to duplicate parser logic in the decompiler to disambiguate situations where newlines are important.) The function decompile expands the tokens back into their string representations, using simple lookahead to correct spacing and indentation.

Assignments are saved as two-token pairs (Token.ASSIGN, op). Number tokens are stored inline, as a NUMBER token, a character representing the type, and either 1 or 4 characters representing the bit-encoding of the number. String types NAME, STRING and OBJECT are currently stored as a token type, followed by a character giving the length of the string (assumed to be less than 2^16), followed by the characters of the string inlined into the source string. Changing this to some reference to to the string in the compiled class' constant pool would probably save a lot of space... but would require some method of deriving the final constant pool entry from information available at parse time.

Definition at line 77 of file Decompiler.java.


Static Public Member Functions

static String decompile (String source, int flags, UintMap properties)

Static Public Attributes

static final int CASE_GAP_PROP = 3
static final int INDENT_GAP_PROP = 2
static final int INITIAL_INDENT_PROP = 1
static final int ONLY_BODY_FLAG = 1 << 0
static final int TO_SOURCE_FLAG = 1 << 1

Package Functions

void addEOL (int token)
void addName (String str)
void addNumber (double n)
void addRegexp (String regexp, String flags)
void addString (String str)
void addToken (int token)
int getCurrentOffset ()
String getEncodedSource ()
int markFunctionEnd (int functionStart)
int markFunctionStart (int functionType)

Private Member Functions

void append (char c)
void appendString (String str)
void increaseSourceCapacity (int minimalCapacity)
String sourceToString (int offset)

Static Private Member Functions

static int getNext (String source, int length, int i)
static int getSourceStringEnd (String source, int offset)
static int printSourceNumber (String source, int offset, StringBuffer sb)
static int printSourceString (String source, int offset, boolean asQuotedString, StringBuffer sb)

Private Attributes

char[] sourceBuffer = new char[128]
int sourceTop

Static Private Attributes

static final int FUNCTION_END = Token.LAST_TOKEN + 1
static final boolean printSource = false

The documentation for this class was generated from the following file:

Generated by  Doxygen 1.6.0   Back to index