Package org.mozilla.javascript
Class Parser
- java.lang.Object
-
- org.mozilla.javascript.Parser
-
- Direct Known Subclasses:
IRFactory
public class Parser extends java.lang.Object
This class implements the JavaScript parser.It is based on the SpiderMonkey C source files jsparse.c and jsparse.h in the jsref package.
The parser generates an
AstRoot
parse tree representing the source code. No tree rewriting is permitted at this stage, so that the parse tree is a faithful representation of the source for frontend processing tools and IDEs.This parser implementation is not intended to be reused after a parse finishes, and will throw an IllegalStateException() if invoked again.
- Author:
- Mike McCabe, Brendan Eich
- See Also:
TokenStream
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected class
Parser.PerFunctionVariables
-
Field Summary
Fields Modifier and Type Field Description static int
ARGC_LIMIT
Maximum number of allowed function or constructor arguments, to follow SpiderMonkey.protected boolean
inUseStrictDirective
protected int
nestingOfFunction
-
Constructor Summary
Constructors Constructor Description Parser()
Parser(CompilerEnvirons compilerEnv)
Parser(CompilerEnvirons compilerEnv, ErrorReporter errorReporter)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
checkActivationName(java.lang.String name, int token)
protected void
checkMutableReference(Node n)
protected Node
createName(int type, java.lang.String name, Node child)
protected Node
createName(java.lang.String name)
protected Node
createNumber(double number)
protected Scope
createScopeNode(int token, int lineno)
Create a node that can be used to hold lexically scoped variable definitions (via let declarations).boolean
eof()
AstRoot
parse(java.io.Reader sourceReader, java.lang.String sourceURI, int lineno)
Builds a parse tree from the given sourcereader.AstRoot
parse(java.lang.String sourceString, java.lang.String sourceURI, int lineno)
Builds a parse tree from the given source string.protected AstNode
removeParens(AstNode node)
protected void
setIsGenerator()
protected void
setRequiresActivation()
protected Node
simpleAssignment(Node left, Node right)
-
-
-
Field Detail
-
ARGC_LIMIT
public static final int ARGC_LIMIT
Maximum number of allowed function or constructor arguments, to follow SpiderMonkey.- See Also:
- Constant Field Values
-
nestingOfFunction
protected int nestingOfFunction
-
inUseStrictDirective
protected boolean inUseStrictDirective
-
-
Constructor Detail
-
Parser
public Parser()
-
Parser
public Parser(CompilerEnvirons compilerEnv)
-
Parser
public Parser(CompilerEnvirons compilerEnv, ErrorReporter errorReporter)
-
-
Method Detail
-
eof
public boolean eof()
-
parse
public AstRoot parse(java.lang.String sourceString, java.lang.String sourceURI, int lineno)
Builds a parse tree from the given source string.- Returns:
- an
AstRoot
object representing the parsed program. If the parse fails,null
will be returned. (The parse failure will result in a call to theErrorReporter
fromCompilerEnvirons
.)
-
parse
public AstRoot parse(java.io.Reader sourceReader, java.lang.String sourceURI, int lineno) throws java.io.IOException
Builds a parse tree from the given sourcereader.- Throws:
java.io.IOException
- if theReader
encounters an error- See Also:
parse(String,String,int)
-
checkActivationName
protected void checkActivationName(java.lang.String name, int token)
-
setRequiresActivation
protected void setRequiresActivation()
-
setIsGenerator
protected void setIsGenerator()
-
createName
protected Node createName(java.lang.String name)
-
createNumber
protected Node createNumber(double number)
-
createScopeNode
protected Scope createScopeNode(int token, int lineno)
Create a node that can be used to hold lexically scoped variable definitions (via let declarations).- Parameters:
token
- the token of the node to createlineno
- line number of source- Returns:
- the created node
-
checkMutableReference
protected void checkMutableReference(Node n)
-
-