Skip to content
esonetec edited this page Nov 14, 2014 · 19 revisions

Abstract Syntax

Program -> epislon | ( class IDENT { ClassMember' } Program ) *

Program :: ClassMember+

ClassMember' -> public ClassMember''

ClassMember'' -> MainMethod' | Member

MainMethod' -> static void IDENT ( String [ ] IDENT ) Block

Member -> Type IDENT Member'

Member' -> ; | ( Parameters? ) Block

MainMethod :: Type Parameters Block

Member :: Type Symbol

Member' :: Type Symbol Parameters Block

Parameters -> Parameter (, Parameters)?

Parameter -> Type IDENT

Parameters :: Parameter+

Parameter :: Type Symbol

Type -> Basictype ([])*

BasicType -> int | boolean | void | IDENT

Type :: Symbol

Statement -> Block | EmptyStatement | IfStatement | ExpressionStatement | WhileStatement | ReturnStatement

Block -> { BlockStatement* }

Block :: Statement+

BlockStatement -> Block | EmptyStatement | IfStatement | ExpressionStatement | WhileStatement | ReturnStatement | LocalVariableDeclarationStatement

LocalVariableDeclarationStatement -> Type IDENT (= Expression)? ;

EmptyStatement -> ;

WhileStatement-> while ( Expression ) Statement

IfStatement -> if ( Expression ) Statement (else Statement)?

ExpressionStatement -> Expression ;

ReturnStatement -> return Expression? ;

LocalVariableDeclarationStatement :: Type Symbol (Expression)

EmptyStatement ::

WhileStatement :: Expression Statement

IfStatement Expression Statement (Statement)

ExpressionStatement :: Expression

ReturnStatement :: Expression

UnaryExpressions and following

UnaryExpression = LogicalNotExpression | NegateExpression | PostfixExpression

LogicalNotExpression :: Expression

NegateExpression :: Expression

PostfixExpression = PrimaryExpression | ArrayAccessExpression | MethodInvovationExpression | VariableAccessExpression

ArrayAccessExpression :: Expression Expression

MethodInvovationExpression :: Expression Symbol (Expression)*

VariableAccessExpression :: Expression Symbol

Symbol :: Symbol

PrimaryExpression = BooleanConstantExpression | IntegerConstantExpression | NullExpression | ThisExpression | NewArrayExpression | NewObjectExpression

BooleanConstantExpression :: value

IntegerConstantExpression :: value

NullExpression ::

ThisExpression ::

NewArrayExpression :: Type Expression

NewObjectExpression :: Symbol

Clone this wiki locally