bsh

Class Parser

public class Parser extends Object implements ParserTreeConstants, ParserConstants

This is the BeanShell parser. It is used internally by the Interpreter class (which is probably what you are looking for). The parser knows only how to parse the structure of the language, it does not understand names, commands, etc.

You can use the Parser from the command line to do basic structural validation of BeanShell files without actually executing them. e.g.

		java bsh.Parser [ -p ] file [ file ] [ ... ]
	

The -p option causes the abstract syntax to be printed.

From code you'd use the Parser like this:

		Parser parser = new Parser(in);
		while( !(eof=parser.Line()) ) {
			SimpleNode node = parser.popNode();
			// use the node, etc. (See bsh.BSH* classes)
		}
	
Field Summary
protected JJTParserStatejjtree
Tokenjj_nt
booleanlookingAhead
Tokentoken
ParserTokenManagertoken_source
Constructor Summary
Parser(InputStream stream)
Parser(Reader stream)
Parser(ParserTokenManager tm)
Method Summary
voidAdditiveExpression()
voidAllocationExpression()
voidAmbiguousName()
voidAndExpression()
voidArgumentList()
voidArguments()
voidArrayDimensions()
voidArrayInitializer()
voidAssignment()
intAssignmentOperator()
voidBlock()
voidBlockStatement()
booleanBooleanLiteral()
voidBreakStatement()
voidCastExpression()
voidCastLookahead()
voidClassDeclaration()
voidConditionalAndExpression()
voidConditionalExpression()
voidConditionalOrExpression()
voidContinueStatement()
voiddisable_tracing()
voidDoStatement()
voidenable_tracing()
voidEmptyStatement()
voidEnhancedForStatement()
voidEqualityExpression()
voidExclusiveOrExpression()
voidExpression()
voidForInit()
voidFormalComment()
voidFormalParameter()
voidFormalParameters()
voidForStatement()
voidForUpdate()
ParseExceptiongenerateParseException()
TokengetNextToken()
TokengetToken(int index)
voidIfStatement()
voidImportDeclaration()
voidInclusiveOrExpression()
voidInstanceOfExpression()
voidLabeledStatement()
booleanLine()
voidLiteral()
static voidmain(String[] args)
voidMethodDeclaration()
voidMethodDeclarationLookahead()
It's tempting to collapse this to one like like so: [ LOOKAHEAD( { methodHasReturnType() } ) ReturnType() ] FormalParameters() "{" However this doesn't work because nested lookaheads are not evaluated during lookahead!
voidMethodInvocation()
ModifiersModifiers(int context, boolean lookahead)
THE JAVA LANGUAGE GRAMMAR STARTS HERE *
voidMultiplicativeExpression()
intNameList()
voidNullLiteral()
SimpleNodepopNode()
voidPostfixExpression()
voidPreDecrementExpression()
voidPreIncrementExpression()
voidPrimaryExpression()
voidPrimaryPrefix()
voidPrimarySuffix()
voidPrimitiveType()
voidReInit(InputStream stream)
voidReInit(Reader stream)
voidReInit(ParserTokenManager tm)
voidRelationalExpression()
voidReturnStatement()
voidReturnType()
voidsetRetainComments(boolean b)
voidShiftExpression()
voidStatement()
voidStatementExpression()
voidStatementExpressionList()
voidSwitchLabel()
voidSwitchStatement()
voidSynchronizedStatement()
voidThrowStatement()
voidTryStatement()
voidType()
voidTypedVariableDeclaration()
Declared a typed variable.
voidUnaryExpression()
voidUnaryExpressionNotPlusMinus()
voidVariableDeclarator()
voidVariableInitializer()
voidVoidLiteral()
voidWhileStatement()

Field Detail

jjtree

protected JJTParserState jjtree

jj_nt

public Token jj_nt

lookingAhead

public boolean lookingAhead

token

public Token token

token_source

public ParserTokenManager token_source

Constructor Detail

Parser

public Parser(InputStream stream)

Parser

public Parser(Reader stream)

Parser

public Parser(ParserTokenManager tm)

Method Detail

AdditiveExpression

public final void AdditiveExpression()

AllocationExpression

public final void AllocationExpression()

AmbiguousName

public final void AmbiguousName()

AndExpression

public final void AndExpression()

ArgumentList

public final void ArgumentList()

Arguments

public final void Arguments()

ArrayDimensions

public final void ArrayDimensions()

ArrayInitializer

public final void ArrayInitializer()

Assignment

public final void Assignment()

AssignmentOperator

public final int AssignmentOperator()

Block

public final void Block()

BlockStatement

public final void BlockStatement()

BooleanLiteral

public final boolean BooleanLiteral()

BreakStatement

public final void BreakStatement()

CastExpression

public final void CastExpression()

CastLookahead

public final void CastLookahead()

ClassDeclaration

public final void ClassDeclaration()

ConditionalAndExpression

public final void ConditionalAndExpression()

ConditionalExpression

public final void ConditionalExpression()

ConditionalOrExpression

public final void ConditionalOrExpression()

ContinueStatement

public final void ContinueStatement()

disable_tracing

public final void disable_tracing()

DoStatement

public final void DoStatement()

enable_tracing

public final void enable_tracing()

EmptyStatement

public final void EmptyStatement()

EnhancedForStatement

public final void EnhancedForStatement()

EqualityExpression

public final void EqualityExpression()

ExclusiveOrExpression

public final void ExclusiveOrExpression()

Expression

public final void Expression()

ForInit

public final void ForInit()

FormalComment

public final void FormalComment()

FormalParameter

public final void FormalParameter()

FormalParameters

public final void FormalParameters()

ForStatement

public final void ForStatement()

ForUpdate

public final void ForUpdate()

generateParseException

public ParseException generateParseException()

getNextToken

public final Token getNextToken()

getToken

public final Token getToken(int index)

IfStatement

public final void IfStatement()

ImportDeclaration

public final void ImportDeclaration()

InclusiveOrExpression

public final void InclusiveOrExpression()

InstanceOfExpression

public final void InstanceOfExpression()

LabeledStatement

public final void LabeledStatement()

Line

public final boolean Line()

Literal

public final void Literal()

main

public static void main(String[] args)

MethodDeclaration

public final void MethodDeclaration()

MethodDeclarationLookahead

public final void MethodDeclarationLookahead()
It's tempting to collapse this to one like like so: [ LOOKAHEAD( { methodHasReturnType() } ) ReturnType() ] FormalParameters() "{" However this doesn't work because nested lookaheads are not evaluated during lookahead! http://www.engr.mun.ca/~theo/JavaCC-FAQ/javacc-faq.htm#tth_sEc4.9

MethodInvocation

public final void MethodInvocation()

Modifiers

public final Modifiers Modifiers(int context, boolean lookahead)
THE JAVA LANGUAGE GRAMMAR STARTS HERE *

MultiplicativeExpression

public final void MultiplicativeExpression()

NameList

public final int NameList()

NullLiteral

public final void NullLiteral()

popNode

public SimpleNode popNode()

PostfixExpression

public final void PostfixExpression()

PreDecrementExpression

public final void PreDecrementExpression()

PreIncrementExpression

public final void PreIncrementExpression()

PrimaryExpression

public final void PrimaryExpression()

PrimaryPrefix

public final void PrimaryPrefix()

PrimarySuffix

public final void PrimarySuffix()

PrimitiveType

public final void PrimitiveType()

ReInit

public void ReInit(InputStream stream)

ReInit

public void ReInit(Reader stream)

ReInit

public void ReInit(ParserTokenManager tm)

RelationalExpression

public final void RelationalExpression()

ReturnStatement

public final void ReturnStatement()

ReturnType

public final void ReturnType()

setRetainComments

public void setRetainComments(boolean b)

ShiftExpression

public final void ShiftExpression()

Statement

public final void Statement()

StatementExpression

public final void StatementExpression()

StatementExpressionList

public final void StatementExpressionList()

SwitchLabel

public final void SwitchLabel()

SwitchStatement

public final void SwitchStatement()

SynchronizedStatement

public final void SynchronizedStatement()

ThrowStatement

public final void ThrowStatement()

TryStatement

public final void TryStatement()

Type

public final void Type()

TypedVariableDeclaration

public final void TypedVariableDeclaration()
Declared a typed variable. Untyped variables are not declared per-se but are handled by the part of the grammar that deals with assignments.

UnaryExpression

public final void UnaryExpression()

UnaryExpressionNotPlusMinus

public final void UnaryExpressionNotPlusMinus()

VariableDeclarator

public final void VariableDeclarator()

VariableInitializer

public final void VariableInitializer()

VoidLiteral

public final void VoidLiteral()

WhileStatement

public final void WhileStatement()
B) 2000 pat@pat.net :-)