NichtHaskell/Grammatik.txt

218 lines
3.4 KiB
Plaintext
Raw Normal View History

2024-04-24 13:12:07 +00:00
Grammatik:
1. Ausdrücke
Primary:
Literal
Variable
IncDecExpression
( Expression )
MethodInvocation
Variable:
Identifier { [ Expression ] }
Identifier:
[ Identifier . ] Name
IncDecExpression:
Variable IncDec
IncDec Variable
IncDec:
++ | --
Expression:
UnaryExpression
BinaryExpression
ConditionalExpression
AssignmentExpression
MethodInvocation
CreationExpression
UnaryExpression:
Primary
UnaryOperator
UnaryExpression
UnaryOperator
+ | - | ! | ...
BinaryExpression:
Expression BinaryOperator Expression
BinaryOperator:
+ | - | * | / | & | && | | | || | ...
AssignmentExpression:
Variable AssignmentOperator Expression
AssignmentOperator:
= | += | -= | *= | /= | ...
MethodInvocation:
Method ( [ ActualArguments ] )
Method:
Identifier
ActualArguments:
Expression { , Expression }
CreationExpression:
new ClassIdentifier ( [ ActualArguments ] )
2. Anweisungen
Statement:
SimpleStatement
CompositeStatement
Label : Statement
SimpleStatement:
EmptyStatement
ExpressionStatement
JumpStatement
EmptyStatement ;
ExpressionStatement:
StatementExpression ;
StatementExpression:
AssignmentExpression
IncDecExpression
MethodInvocation
CreationExpression
JumpStatement:
BreakStatement
ContinueStatement
ReturnStatement
BreakStatement
break [ Label ] ;
ContinueStatement:
continue [ Label ] ;
ReturnStatement.
return [ Expression ] ;
Label:
Name
CompositeStatement:
Block
CaseStatement
RepetitiveStatement
Block:
{ { VariableDeclaration | Statement } }
VariableDeclaration [ final ] Type VariableDeclarators ;
VariableDeclarators VariableDeclarator { , VariableDeclarator }
VariableDeclarator Name [ = Expression ]
Type:
PrimitiveType
ClassType
PrimitiveType:
Name
ClassType:
Identifier
CaseStatement:
ConditionalStatement
SwitchStatement
RepetitiveStatement WhileStatement
DoStatement
ForStatement
ConditionalStatement:
if ( Expression ) Statement [ else Statement ]
SwitchStatement:
switch ( Expression ) SwitchBlock
SwitchBlock:
{ { CaseGroup } }
CaseGroup:
SwitchLabel { SwitchLabel } StatementSequence
SwitchLabel:
case ConstantExpression :
default :
ConstantExpression:
Expression
WhileStatement:
while ( Expression ) Statement
DoStatement:
do Statement while ( Expression ) ;
ForStatement:
for ( [ Initialization ] ; [ Expression ] ; [ Update ] ) Statement
Initialization:
StatementExpression { , StatementExpression }
VariableDeclaration
Update:
StatementExpression { , StatementExpression }
3. Methoden
MethodDeclaration:
MethodHeader MethodBody
MethodHeader:
{ Modifier } ResultType MethodDeclarator
Modifier:
public | static | ...
ResultType:
Type | void
MethodDeclarator:
Identifier ( [ FormalArguments ] )
FormalArguments:
FormalArgument { , FormalArgument }
FormalArgument:
Type Name
MethodBody:
; | Block
4. Klassen
ClassDeclaration:
[ public ] class Name ClassBody
ClassBody:
{ { { Modifier } Declaration } }
Declaration:
FieldDeclaration
MethodDeclaration
ClassDeclaration
ConstructorDeclaration
Initializer
FieldDeclaration:
VariableDeclaration
ConstructorDeclaration:
[ public ] Name ( [ FormalArguments ] ) Block
Initializer:
[ static ] Block