BNF for F90.jj

NON-TERMINALS

Program ::= ( Cmnt )? ProgramUnit ( ProgramUnit )* <EOF>
| <EOF>
ProgramUnit ::= ( ExternalSubprogram | Module | BlockData | MainProgram )
ExternalSubprogram ::= ( FunctionSubprogram | SubroutineSubprogram )
SpecificationPart ::= ( UseStmt Cmnt )* ImplicitPart ( DeclarationConstruct )*
ImplicitPart ::= ( ImplicitPartStmt Cmnt )*
ImplicitPartStmt ::= ( ImplicitStmt | ParameterStmt | FormatStmt | EntryStmt )
DeclarationConstruct ::= ( DerivedTypeDef | InterfaceBlock | TypeDeclarationStmt Cmnt | SpecificationStmt Cmnt | ParameterStmt Cmnt | FormatStmt Cmnt | EntryStmt Cmnt | StmtFunctionStmt )
ExecutionPart ::= ExecutableConstruct Cmnt ( ExecutionPartConstruct Cmnt )*
OptLabel ::= ( NewLabel )?
ExecutionPartConstruct ::= ExecutableConstruct
| FormatStmt
| EntryStmt
| DataStmt
InternalSubprogramPart ::= ( ContainsStmt Cmnt ( InternalSubprogram )+ )?
InternalSubprogram ::= ( FunctionSubprogram | SubroutineSubprogram )
ModuleSubprogramPart ::= ( ContainsStmt Cmnt ModuleSubprogram ( ModuleSubprogram )* )?
ModuleSubprogram ::= ( FunctionSubprogram | SubroutineSubprogram )
SpecificationStmt ::= AccessStmt
| AllocatableStmt
| CommonStmt
| DataStmt
| DimensionStmt
| EquivalenceStmt
| ExternalStmt
| IntentStmt
| IntrinsicStmt
| NamelistStmt
| OptionalStmt
| PointerStmt
| SaveStmt
| TargetStmt
ExecutableConstruct ::= ( ( IfConstruct | ActionStmt ) | CaseConstruct | DoConstruct | ( ForallConstruct | ActionStmt ) | ( WhereConstruct | ActionStmt ) | ActionStmt )
ActionStmt ::= ( AllocateStmt | PointerAssignmentStmt | AssignmentStmt | BackspaceStmt | CallStmt | CloseStmt | ContinueStmt | CycleStmt | DeallocateStmt | EndfileStmt | ExitStmt | ForallStmt | InquireStmt | NullifyStmt | OpenStmt | PrintStmt | ReadStmt | ReturnStmt | RewindStmt | StopStmt | WhereStmt | WriteStmt | ArithmeticIfStmt | IfStmt | ComputedGotoStmt | GotoStmt )
ScalarConstant ::= Constant
Constant ::= ( Name | LiteralConstant | ComplexLiteralConstant )
LiteralConstant ::= ( CharLiteralConstant | IntLiteralConstant | RealLiteralConstant | LogicalLiteralConstant | BozLiteralConstant )
IntConstant ::= Constant
ScalarIntConstant ::= IntConstant
CharConstant ::= Constant
ScalarCharConstant ::= CharConstant
IntrinsicOperator ::= ( PowerOp | MultOp | AddOp | ConcatOp | RelOp | NotOp | AndOp | OrOp | EquivOp )
DefinedOperator ::= <DEFINED_OPERATOR>
DigitString ::= <DIGIT_STRING>
SignedIntLiteralConstant ::= <PLUS> IntLiteralConstant
| <MINUS> IntLiteralConstant
| IntLiteralConstant
ScalarIntLiteralConstant ::= IntLiteralConstant
IntLiteralConstant ::= <INTEGER_CONST>
BozLiteralConstant ::= ( <BINARY_CONST> | <OCTAL_CONST> | <HEX_CONST> )
SignedRealLiteralConstant ::= <PLUS> RealLiteralConstant
| <MINUS> RealLiteralConstant
| RealLiteralConstant
LexemeIsDouble ::= java code
RealLiteralConstant ::= RealConstant
RealConstant ::= <REAL_LITERAL_CONST>
ComplexLiteralConstant ::= <LBRACKET> RealPart <COMMA> ImagPart <RBRACKET>
RealPart ::= ( SignedRealLiteralConstant | SignedIntLiteralConstant )
ImagPart ::= ( SignedRealLiteralConstant | SignedIntLiteralConstant )
createComplexConstant ::= java code
CharLiteralConstant ::= <STRING>
LogicalLiteralConstant ::= ( <TRUEL> | <FALSEL> )
DerivedTypeDef ::= DerivedTypeStmt Cmnt ( PrivateSequenceStmt Cmnt )* ( ComponentDefStmt Cmnt )+ EndTypeStmt Cmnt
DerivedTypeStmt ::= <TYPE> ( ( <COMMA> AccessSpec )? <DOUBLECOLON> )? Name
PrivateSequenceStmt ::= <PRIVATE>
| SequenceStmt
SequenceStmt ::= <SEQUENCE>
ComponentDefStmt ::= TypeSpec ( <COMMA> ComponentAttrSpecList <DOUBLECOLON> ComponentDeclList | <DOUBLECOLON> ComponentDeclList | ComponentDeclList )
ComponentAttrSpecList ::= ComponentAttrSpec ( <COMMA> ComponentAttrSpec )*
ComponentDeclList ::= ComponentDecl ( <COMMA> ComponentDecl )*
ComponentAttrSpec ::= <POINTER>
| <DIMENSION> <LBRACKET> ComponentArraySpec <RBRACKET>
ComponentArraySpec ::= ExplicitShapeSpecList
| DeferredShapeSpecList
DeferredShapeSpecList ::= DeferredShapeSpec ( <COMMA> DeferredShapeSpec )*
ComponentDecl ::= Name ( <LBRACKET> ComponentArraySpec <RBRACKET> )? ( <MULTIPLY> CharLength )? ( ComponentInitialization )?
ComponentInitialization ::= <EQUAL> InitializationExpr
| <EQGT> Name <LBRACKET> <RBRACKET>
EndTypeStmt ::= <ENDTYPE> ( Name )?
StructureConstructor ::= Name <LBRACKET> ExprList <RBRACKET>
ExprList ::= Expr ( <COMMA> Expr )*
ArrayConstructor ::= <ACVALUE1> AcValueList <ACVALUE2>
AcValueList ::= AcValue RestAcValueList
RestAcValueList ::=
|
| <COMMA> AcValue RestAcValueList
AcValue ::= AcImpliedDo
| Expr
AcImpliedDo ::= <LBRACKET> AcValueList <COMMA> AcImpliedDoControl <RBRACKET>
AcImpliedDoControl ::= AcDoVariable <EQUAL> ScalarIntExpr <COMMA> ScalarIntExpr ( <COMMA> ScalarIntExpr )?
AcDoVariable ::= ScalarIntVariable
TypeDeclarationStmt ::= TypeSpec ( ( <COMMA> AttrSpecs )? <DOUBLECOLON> )? EntityDeclList
convertAttrIfNeeded ::= java code
AttrSpecs ::= AttrSpec ( <COMMA> AttrSpec )*
TypeSpec ::= <INTEGER> ( KindSelector | )
| <REAL> ( KindSelector | )
| <DOUBLEPRECISION>
| <COMPLEX> ( KindSelector | )
| <CHARACTER> ( CharSelector | )
| <LOGICAL> ( KindSelector | )
| <TYPE> <LBRACKET> Name <RBRACKET>
EntityDeclList ::= EntityDecl ( <COMMA> EntityDecl )*
AttrSpec ::= ( <PARAMETER> | AccessSpec | <ALLOCATABLE> | <DIMENSION> <LBRACKET> ArraySpec <RBRACKET> | <EXTERNAL> | <INTENT> <LBRACKET> IntentSpec <RBRACKET> | <INTRINSIC> | <OPTIONAL> | <POINTER> | <SAVE> | <TARGET> )
EntityDecl ::= Name ( <LBRACKET> ArraySpec <RBRACKET> ( <MULTIPLY> CharLength )? ( Initialization )? | ( <MULTIPLY> CharLength )? Initialization | )
Initialization ::= <EQUAL> InitializationExpr
| <EQGT> Name <LBRACKET> <RBRACKET>
KindSelector ::= <LBRACKET> ( <KINDEQ> )? ScalarIntInitializationExpr <RBRACKET>
CharSelector ::= ( <MULTIPLY> CharLength ( <COMMA> )? | <LBRACKET> ( CharLenParamValue ( <COMMA> ( <KINDEQ> ScalarIntInitializationExpr <RBRACKET> | ScalarIntInitializationExpr <RBRACKET> ) | <RBRACKET> ) | <LENEQ> CharLenParamValue ( <COMMA> <KINDEQ> ScalarIntInitializationExpr <RBRACKET> | <RBRACKET> ) | <KINDEQ> ScalarIntInitializationExpr ( <COMMA> <LENEQ> CharLenParamValue <RBRACKET> | <RBRACKET> ) ) )
CharLength ::= ( <LBRACKET> CharLenParamValue <RBRACKET> | ScalarIntLiteralConstant )
CharLenParamValue ::= SpecificationExpr
| <MULTIPLY>
AccessSpec ::= ( <PUBLIC> | <PRIVATE> )
IntentSpec ::= ( <IN> | <OUT> | <INOUT> )
ArraySpec ::= ( LowerBound <COLON> <MULTIPLY> | ExplicitShapeSpecList ( <COMMA> ( LowerBound <COLON> <MULTIPLY> | <MULTIPLY> ) | ) | DeferredShapeSpecList | AssumedShapeSpecList | <MULTIPLY> )
ExplicitShapeSpecList ::= ExplicitShapeSpec ( <COMMA> ExplicitShapeSpec )*
ExplicitShapeSpec ::= SpecificationExpr ( <COLON> UpperBound | )
LowerBound ::= SpecificationExpr
UpperBound ::= SpecificationExpr
AssumedShapeSpecList ::= AssumedShapeSpec ( <COMMA> AssumedShapeSpec )*
AssumedShapeSpec ::= LowerBound <COLON>
| <COLON>
DeferredShapeSpec ::= <COLON>
AssumedSizeSpec ::= LowerBound <COLON> <MULTIPLY>
| ExplicitShapeSpecList <COMMA> ( LowerBound <COLON> <MULTIPLY> | <MULTIPLY> )
| <MULTIPLY>
IntentStmt ::= <INTENT> <LBRACKET> IntentSpec <RBRACKET> OptDoubleColon Name ( <COMMA> Name )*
OptionalStmt ::= <OPTIONAL> OptDoubleColon Name ( <COMMA> Name )*
AccessStmt ::= AccessSpec ( OptDoubleColon AccessIdList | )
AccessIdList ::= AccessId ( <COMMA> AccessId )*
AccessId ::= ( Name | <OPERATOR> <LBRACKET> Operator <RBRACKET> | <ASSIGNMENT> <LBRACKET> <EQUAL> <RBRACKET> )
SaveStmt ::= <SAVE> ( OptDoubleColon SavedEntityList )?
SavedEntityList ::= SavedEntity ( <COMMA> SavedEntity )*
SavedEntity ::= Name
| <DIVIDE> Name <DIVIDE>
DimensionStmt ::= <DIMENSION> OptDoubleColon Name Dims ( <COMMA> Name Dims )*
AllocatableStmt ::= <ALLOCATABLE> OptDoubleColon Name ( <LBRACKET> DeferredShapeSpecList <RBRACKET> )? ( <COMMA> Name ( <LBRACKET> DeferredShapeSpecList <RBRACKET> )? )*
PointerStmt ::= <POINTER> OptDoubleColon Name ( <LBRACKET> DeferredShapeSpecList <RBRACKET> )? ( <COMMA> Name ( <LBRACKET> DeferredShapeSpecList <RBRACKET> )? )*
TargetStmt ::= <TARGET> OptDoubleColon Name ( Dims )? ( <COMMA> Name ( Dims )? )*
OptDoubleColon ::= ( <DOUBLECOLON> )?
Dims ::= <LBRACKET> ArraySpec <RBRACKET>
ParameterStmt ::= <PARAMETER> <LBRACKET> NamedConstantDefList <RBRACKET>
NamedConstantDefList ::= NamedConstantDef ( <COMMA> NamedConstantDef )*
NamedConstantDef ::= Name <EQUAL> InitializationExpr
DataStmt ::= <DATA> DataStmtList
DataStmtList ::= DataStmtSet ( ( <COMMA> )? DataStmtSet )*
DataStmtSet ::= DataStmtObjectList <DIVIDE> DataStmtValueList <DIVIDE>
DataStmtObjectList ::= DataStmtObject ( <COMMA> DataStmtObject )*
DataStmtObject ::= Variable
| DataImpliedDo
DataImpliedDo ::= <LBRACKET> DataIDoObjectList <COMMA> DataIDoVariable <EQUAL> ScalarIntExpr <COMMA> ScalarIntExpr ( <COMMA> ScalarIntExpr )? <RBRACKET>
DataIDoObjectList ::= DataIDoObject ( <COMMA> DataIDoObject )*
DataIDoObject ::= Variable
| DataImpliedDo
DataIDoVariable ::= ScalarIntVariable
DataStmtValueList ::= DataStmtValue ( <COMMA> DataStmtValue )*
DataStmtValue ::= ( DataStmtRepeat <MULTIPLY> )? DataStmtConstant
ScalarIntConstantSubobject ::= ConstantSubobject
DataStmtRepeat ::= ScalarIntConstantSubobject
| ScalarIntConstant
DataStmtConstant ::= ( ( Name <LBRACKET> <RBRACKET> | StructureConstructor | ScalarConstantSubobject ) | ScalarConstant )
| SignedRealLiteralConstant
| SignedIntLiteralConstant
| ScalarConstant
ImplicitStmt ::= <IMPLICITNONE>
| <IMPLICIT> ImplicitSpec ( <COMMA> ImplicitSpec )*
ImplicitSpec ::= TypeSpec <LBRACKET> LetterSpecList <RBRACKET>
LetterSpecList ::= LetterSpec ( <COMMA> LetterSpec )*
LetterSpec ::= Letter ( <MINUS> Letter )?
Letter ::= <LETTER>
NamelistStmt ::= <NAMELIST> <DIVIDE> NamelistGroupName <DIVIDE> NamelistGroupObjectList ( ( <COMMA> )? <DIVIDE> NamelistGroupName <DIVIDE> NamelistGroupObjectList )*
NamelistGroupObjectList ::= NamelistGroupObject ( <COMMA> NamelistGroupObject )*
NamelistGroupName ::= Name
NamelistGroupObject ::= Name
EquivalenceStmt ::= <EQUIVALENCE> EquivalenceSetList
EquivalenceSetList ::= EquivalenceSet ( <COMMA> EquivalenceSet )*
GetEquivalenceSet ::= java code
EquivalenceSet ::= <LBRACKET> EquivalenceObject <COMMA> EquivalenceObjectList <RBRACKET>
skipToNextMatchRbracket ::= <COMMA> EquivalenceObject ( <COMMA> EquivalenceObject )* <RBRACKET>
EquivalenceObjectList ::= EquivalenceObject ( <COMMA> EquivalenceObject )*
EquivalenceObject ::= Variable
CommonStmt ::= <COMMON> ( <DIVIDE> ( Name )? <DIVIDE> )? CommonBlockObjectList ( ( <COMMA> )? <DIVIDE> ( Name )? <DIVIDE> CommonBlockObjectList )*
CommonBlockObjectList ::= CommonBlockObject ( <COMMA> CommonBlockObject )*
CommonBlockObject ::= Name ( <LBRACKET> ExplicitShapeSpecList <RBRACKET> )?
Variable ::= VariableOrConstantSubobject
VariableOrConstantSubobject ::= PartRef1 ( ( <PERCENT> PartRef )+ ( <LBRACKET> SubstringRange <RBRACKET> | ) | <LBRACKET> SubstringRange <RBRACKET> | )
DefaultLogicalVariable ::= Variable
DefaultCharVariable ::= Variable
ScalarDefaultCharVariable ::= DefaultCharVariable
ScalarIntVariable ::= IntVariable
IntVariable ::= Variable
DefaultIntVariable ::= Variable
SubstringRange ::= ( Expr )? <COLON> ( Expr )?
SubstringRange1 ::= ( Expr )? <COLON> ( Expr )?
SectionSubscriptList ::= SectionSubscript ( <COMMA> SectionSubscript )*
PartRef ::= Name ( <LBRACKET> SectionSubscriptList <RBRACKET> | )
PartRef1 ::= Name ( <LBRACKET> SectionSubscriptList <RBRACKET> | )
SectionSubscript ::= Subscript ( <COLON> ( <COLON> Stride | ( Subscript ( <COLON> Stride )? )? ) | )
| <COLON> ( <COLON> Stride | ( Subscript ( <COLON> Stride )? )? )
Subscript ::= ScalarIntExpr
Stride ::= ScalarIntExpr
AllocateStmt ::= <ALLOCATE> <LBRACKET> AllocationList ( <COMMA> <STAT> StatVariable )? <RBRACKET>
StatVariable ::= ScalarIntVariable
AllocationList ::= Allocation ( <COMMA> Allocation )*
Allocation ::= AllocateObject ( <LBRACKET> AllocateShapeSpecList <RBRACKET> )?
AllocateShapeSpecList ::= AllocateShapeSpec ( <COMMA> AllocateShapeSpec )*
AllocateObject ::= VarNameOrStructureComponent
VarNameOrStructureComponent ::= Name ( <LBRACKET> SectionSubscriptList <RBRACKET> <PERCENT> RestVarNameOrStructureComponent | <PERCENT> RestVarNameOrStructureComponent | )
RestVarNameOrStructureComponent ::= Name ( <LBRACKET> SectionSubscriptList <RBRACKET> <PERCENT> RestVarNameOrStructureComponent | <PERCENT> RestVarNameOrStructureComponent | )
AllocateShapeSpec ::= ( AllocateLowerBound <COLON> )? AllocateUpperBound
AllocateLowerBound ::= ScalarIntExpr
AllocateUpperBound ::= ScalarIntExpr
NullifyStmt ::= <NULLIFY> <LBRACKET> PointerObjectList <RBRACKET>
PointerObjectList ::= PointerObject ( <COMMA> PointerObject )*
PointerObject ::= VarNameOrStructureComponent
DeallocateStmt ::= <DEALLOCATE> <LBRACKET> AllocateObjectList ( <RBRACKET> | <COMMA> <STAT> StatVariable <RBRACKET> )
AllocateObjectList ::= AllocateObject ( <COMMA> AllocateObject )*
Primary ::= ( StructureConstructor | FunctionReference | Constant ( <LBRACKET> SubstringRange1 <RBRACKET> )? | VariableOrConstantSubobject | ArrayConstructor | <LBRACKET> Expr <RBRACKET> )
ScalarConstantSubobject ::= ConstantSubobject
ConstantSubobject ::= VariableOrConstantSubobject
Level1Expr ::= ( DefinedOperator Primary | Primary )
MultOperand ::= Level1Expr ( PowerOp MultOperand )?
AddOperand ::= MultOperand ( MultOp MultOperand )*
makeMultExpression ::= java code
Level2Expr ::= ( AddOp AddOperand ( AddOp AddOperand )* | AddOperand ( AddOp AddOperand )* )
makePosNegExpression ::= java code
makeAdditiveExpression ::= java code
PowerOp ::= <POWER>
MultOp ::= ( <MULTIPLY> | <DIVIDE> )
AddOp ::= ( <PLUS> | <MINUS> )
Level3Expr ::= Level2Expr ( ConcatOp Level2Expr )*
ConcatOp ::= <CONCAT>
Level4Expr ::= Level3Expr ( RelOp Level3Expr )?
makeRelExpression ::= java code
RelOp ::= ( <EQ> | <NE> | <LT> | <LE> | <GT> | <GE> )
AndOperand ::= NotOp Level4Expr
| Level4Expr
OrOperand ::= AndOperand ( AndOp AndOperand )*
EquivOperand ::= OrOperand ( OrOp OrOperand )*
Level5Expr ::= EquivOperand ( EquivOp EquivOperand )*
makeEquivExpression ::= java code
NotOp ::= <NOT>
AndOp ::= <AND>
OrOp ::= <OR>
EquivOp ::= <EQV>
| <NEQV>
ScalarExpr ::= Expr
Expr ::= Expr1
ScalarLogicalExpr ::= LogicalExpr
LogicalExpr ::= Expr
ScalarIntExpr ::= IntExpr
Expr1 ::= Level5Expr ( DefinedOperator Level5Expr )*
DefaultCharExpr ::= Expr
ScalarDefaultCharExpr ::= DefaultCharExpr
IntExpr ::= Expr
NumericExpr ::= Expr
ScalarNumericExpr ::= NumericExpr
InitializationExpr ::= Expr
ScalarIntInitializationExpr ::= IntInitializationExpr
IntInitializationExpr ::= IntExpr
SpecificationExpr ::= ScalarIntExpr
AssignmentStmt ::= ( Name <LBRACKET> <RBRACKET> <EQUAL> Expr | Variable <EQUAL> Expr )
PointerAssignmentStmt ::= PointerObject <EQGT> Target
Target ::= Variable
| Expr
WhereStmt ::= <WHERE> <LBRACKET> MaskExpr <RBRACKET> WhereAssignmentStmt
WhereConstruct ::= WhereConstructStmt Cmnt ( WhereBodyConstruct )* ( MaskedElseWhereStmt Cmnt ( WhereBodyConstruct )* )* ( ElsewhereStmt Cmnt ( WhereBodyConstruct )* )? EndWhereStmt
WhereConstructStmt ::= ( Name <COLON> )? <WHERE> <LBRACKET> MaskExpr <RBRACKET>
WhereBodyConstruct ::= ( WhereConstruct Cmnt | WhereStmt Cmnt | WhereAssignmentStmt Cmnt )
WhereAssignmentStmt ::= AssignmentStmt
MaskExpr ::= LogicalExpr
MaskedElseWhereStmt ::= <ELSEWHERE> <LBRACKET> MaskExpr <RBRACKET> ( Name )?
ElsewhereStmt ::= <ELSEWHERE> ( Name )?
EndWhereStmt ::= <ENDWHERE> ( Name )?
ForallConstruct ::= ForallConstructStmt Cmnt ( ForallBodyConstruct Cmnt )* EndForallStmt
ForallConstructStmt ::= ( Name <COLON> )? <FORALL> ForallHeader
ForallHeader ::= <LBRACKET> ForallTripletSpecList ( <COMMA> MaskExpr )? <RBRACKET>
ForallTripletSpecList ::= ForallTripletSpec ( <COMMA> ForallTripletSpec )*
ForallTripletSpec ::= Name <EQUAL> Subscript <COLON> Subscript ( <COLON> Stride )?
ForallBodyConstruct ::= ( WhereStmt | WhereConstruct | ForallStmt | ForallConstruct | ForallAssignmentStmt )
ForallAssignmentStmt ::= ( AssignmentStmt | PointerAssignmentStmt )
EndForallStmt ::= <ENDFORALL> ( Name )?
ForallStmt ::= <FORALL> ForallHeader ForallAssignmentStmt
Block ::=
| ExecutionPartConstruct Cmnt Block
IfConstruct ::= IfThenStmt Cmnt Block ( ElseIfStmt Cmnt Block )* ( ElseStmt Cmnt Block EndIfStmt | EndIfStmt )
IfThenStmt ::= ( Name <COLON> )? <IF> <LBRACKET> ScalarLogicalExpr <RBRACKET> <THEN>
ElseIfStmt ::= <ELSEIF> <LBRACKET> LogicalExpr <RBRACKET> <THEN> ( Name )?
ElseStmt ::= <ELSE> ( Name )?
EndIfStmt ::= <ENDIF> ( Name )?
IfStmt ::= <IF> <LBRACKET> ScalarLogicalExpr <RBRACKET> ActionStmt
CaseConstruct ::= SelectCaseStmt Cmnt ( CaseStmt Block )* EndSelectStmt
SelectCaseStmt ::= ( Name <COLON> )? <SELECTCASE> <LBRACKET> CaseExpr <RBRACKET>
CaseStmt ::= <CASE> CaseSelector ( Name )? Cmnt
EndSelectStmt ::= <ENDSELECT> ( Name )?
CaseExpr ::= Expr
CaseSelector ::= <LBRACKET> CaseValueRangeList <RBRACKET>
| <DEFAULTL>
CaseValueRangeList ::= CaseValueRange ( <COMMA> CaseValueRange )*
CaseValueRange ::= CaseValue ( <COLON> ( CaseValue )? | )
| <COLON> CaseValue
CaseValue ::= InitializationExpr
DoConstruct ::= ( ( LabelDoStmt Cmnt LabelDoBody ( EndDoStmt | SharedTermDoConstruct | DoTermActionStmt ) | NonlabelDoStmt Cmnt DoBlock EndDoStmt ) )
LabelDoStmt ::= ( Name <COLON> )? <DO> Label ( LoopControl )?
NonlabelDoStmt ::= ( Name <COLON> )? <DO> ( LoopControl )?
LoopControl ::= ( <COMMA> )? ( DoVariable <EQUAL> ScalarIntExpr <COMMA> ScalarIntExpr ( <COMMA> ScalarIntExpr )? | <WHILE> <LBRACKET> LogicalExpr <RBRACKET> )
DoVariable ::= ScalarIntVariable
DoBlock ::= Block
EndDo ::= ( EndDoStmt | ContinueStmt )
EndDoStmt ::= <ENDDO> ( Name )?
LabelDoBody ::=
|
|
| ExecutableConstruct Cmnt LabelDoBody
DoBody ::= ( ExecutionPartConstruct Cmnt )*
DoTermActionStmt ::= ActionStmt
SharedTermDoConstruct ::= ( LabelDoStmt Cmnt LabelDoBody ( SharedTermDoConstruct | DoTermSharedStmt ) )
DoTermSharedStmt ::= ActionStmt
CycleStmt ::= <CYCLE> ( Name )?
ExitStmt ::= <EXIT> ( Name )?
GotoStmt ::= <GOTO> Label
ComputedGotoStmt ::= <GOTO> <LBRACKET> LabelList <RBRACKET> ( <COMMA> )? ScalarIntExpr
LabelList ::= Label1 ( <COMMA> Label1 )*
ArithmeticIfStmt ::= <IF> <LBRACKET> ScalarNumericExpr <RBRACKET> Label1 <COMMA> Label1 <COMMA> Label1
ContinueStmt ::= <CONTINUE>
StopStmt ::= <STOP> ( StopCode )?
StopCode ::= ScalarCharConstant
| <DIGIT_STOP_CODE>
IoUnit ::= <MULTIPLY>
| Expr
ExternalFileUnit ::= ScalarIntExpr
OpenStmt ::= <OPEN> <LBRACKET> ConnectSpecList <RBRACKET>
ConnectSpecList ::= ConnectSpec ( <COMMA> ConnectSpec )*
ScalarDefaultIntVariable ::= DefaultIntVariable
ScalarDefaultLogicalVariable ::= DefaultLogicalVariable
ConnectSpec ::= ( <UNIT> ExternalFileUnit | ExternalFileUnit | <IOSTAT> ScalarDefaultIntVariable | <ERR> Label | <FILE> FileNameExpr | <STATUS> ScalarDefaultCharExpr | <ACCESSL> ScalarDefaultCharExpr | <FORM> ScalarDefaultCharExpr | <RECL> ScalarIntExpr | <BLANK> ScalarDefaultCharExpr | <POSITION> ScalarDefaultCharExpr | <ACTION> ScalarDefaultCharExpr | <DELIM> ScalarDefaultCharExpr | <PAD> ScalarDefaultCharExpr )
FileNameExpr ::= DefaultCharExpr
CloseStmt ::= <CLOSE> <LBRACKET> CloseSpecList <RBRACKET>
CloseSpecList ::= CloseSpec ( <COMMA> CloseSpec )*
CloseSpec ::= ( <UNIT> ExternalFileUnit | ExternalFileUnit | <IOSTAT> ScalarDefaultIntVariable | <ERR> Label | <STATUS> ScalarDefaultCharExpr )
ReadStmt ::= <READ> ( <LBRACKET> IoControlSpecList <RBRACKET> ( InputItemList )? | Format ( <COMMA> InputItemList )? )
InputItemList ::= InputItem ( <COMMA> InputItem )*
IoControlSpecList ::= IoControlSpec ( <COMMA> IoControlSpec )*
WriteStmt ::= <WRITE> <LBRACKET> IoControlSpecList <RBRACKET> ( OutputItemList )?
PrintStmt ::= <PRINT> Format ( <COMMA> OutputItemList )?
OutputItemList ::= OutputItem ( <COMMA> OutputItem )*
IoControlSpec ::= IoUnit ( | <COMMA> ( NamelistGroupName | Format ) )
| <UNIT> IoUnit
| <FMT> Format
| <NML> Name
| <REC> ScalarIntExpr
| <IOSTAT> ScalarDefaultIntVariable
| <ERR> Label
| <ENDR> Label
| <ADVANCE> ScalarDefaultCharExpr
| <SIZE> ScalarDefaultIntVariable
| <EOR> Label
Format ::= DefaultCharExpr
| Label
| <MULTIPLY>
InputItem ::= ( Variable | <LBRACKET> InputItem ( <COMMA> InputItem )* <COMMA> IoImpliedDoControl <RBRACKET> )
OutputItem ::= OutputImpliedDo
| Expr
OutputImpliedDo ::= <LBRACKET> OutputImpliedDoObjectList <COMMA> IoImpliedDoControl <RBRACKET>
OutputImpliedDoObjectList ::= OutputItem RestOutputImpliedDoObjectList
RestOutputImpliedDoObjectList ::=
| <COMMA> OutputItem RestOutputImpliedDoObjectList
IoImpliedDoControl ::= IoDoVariable <EQUAL> ScalarIntExpr <COMMA> ScalarIntExpr ( <COMMA> ScalarIntExpr )?
IoDoVariable ::= ScalarIntVariable
BackspaceStmt ::= <BACKSPACE> ( <LBRACKET> PositionSpecList <RBRACKET> | ExternalFileUnit )
EndfileStmt ::= <ENDFILE> ( <LBRACKET> PositionSpecList <RBRACKET> | ExternalFileUnit )
RewindStmt ::= <REWIND> ( <LBRACKET> PositionSpecList <RBRACKET> | ExternalFileUnit )
PositionSpecList ::= PositionSpec ( <COMMA> PositionSpec )*
PositionSpec ::= ( <UNIT> ExternalFileUnit | ExternalFileUnit | <IOSTAT> ScalarDefaultIntVariable | <ERR> Label )
InquireStmt ::= <INQUIRE> <LBRACKET> ( InquireSpecList <RBRACKET> | <IOLENGTH> ScalarDefaultIntVariable <RBRACKET> OutputItemList )
InquireSpecList ::= InquireSpec ( <COMMA> InquireSpec )*
InquireSpec ::= ( <UNIT> ExternalFileUnit | ExternalFileUnit | <FILE> FileNameExpr | <IOSTAT> ScalarDefaultIntVariable | <ERR> Label | <EXIST> ScalarDefaultLogicalVariable | <OPENED> ScalarDefaultLogicalVariable | <NUMBER> ScalarDefaultIntVariable | <NAMED> ScalarDefaultLogicalVariable | <NAMEI> ScalarDefaultCharVariable | <ACCESSL> ScalarDefaultCharVariable | <SEQUENTIAL> ScalarDefaultCharVariable | <DIRECT> ScalarDefaultCharVariable | <FORM> ScalarDefaultCharVariable | <FORMATTED> ScalarDefaultCharVariable | <UNFORMATTED> ScalarDefaultCharVariable | <RECL> ScalarDefaultIntVariable | <NEXTREC> ScalarDefaultIntVariable | <BLANK> ScalarDefaultCharVariable | <POSITION> ScalarDefaultCharVariable | <ACTION> ScalarDefaultCharVariable | <READI> ScalarDefaultCharVariable | <WRITEI> ScalarDefaultCharVariable | <READWRITE> ScalarDefaultCharVariable | <DELIM> ScalarDefaultCharVariable | <PAD> ScalarDefaultCharVariable )
FormatStmt ::= <FORMAT> FormatSpecification
FormatSpecification ::= <LBRACKET> ( FormatItemList )? <RBRACKET>
FormatItemList ::= FormatItem ( OptComma FormatItem )*
OptComma ::= ( <COMMA> )?
FormatItem ::= ( ( <R> )? ( <DATA_EDIT_DESC> | <LBRACKET> FormatItemList <RBRACKET> ) | <CONTROL_EDIT_DESC> | <CHAR_STRING_EDIT_DESC> )
MainProgram ::= ( ProgramStmt Cmnt )? SpecificationPart ( ExecutionPart )? InternalSubprogramPart EndProgramStmt Cmnt
ProgramStmt ::= <PROGRAM> Progname
Progname ::= Name
EndProgramStmt ::= ( <ENDPROGRAM> OptName | <END> )
Module ::= ModuleStmt Cmnt SpecificationPart ModuleSubprogramPart EndModuleStmt Cmnt
ModuleStmt ::= <MODULE> Name
EndModuleStmt ::= ( <ENDMODULE> OptName | <END> )
UseStmt ::= <USE> ModuleName ( <COMMA> ( <ONLYCOLON> ( OnlyList )? | RenameList ) | )
ModuleName ::= Name
OnlyList ::= Only ( <COMMA> Only )*
RenameList ::= Rename ( <COMMA> Rename )*
Rename ::= Name <EQGT> Name
Only ::= ( OnlyRename | OnlyUseName | <OPERATOR> <LBRACKET> Operator <RBRACKET> | <ASSIGNMENT> <LBRACKET> <EQUAL> <RBRACKET> )
Operator ::= ( DefinedOperator | IntrinsicOperator )
OnlyUseName ::= Name
OnlyRename ::= Name <EQGT> Name
BlockData ::= BlockDataStmt Cmnt SpecificationPart EndBlockDataStmt Cmnt
BlockDataStmt ::= <BLOCKDATA> Blockname
EndBlockDataStmt ::= <ENDBLOCKDATA> OptName
| <END>
Blockname ::= ( Name )?
BeginInterfaceDecl ::= java code
FinishInterfaceDecl ::= java code
DeclareInterfaceModuleProcs ::= java code
InterfaceBlock ::= <INTERFACE> ( Cmnt ( InterfaceBody )* EndInterfaceStmt Cmnt | GenericSpec Cmnt ( InterfaceBody )* ( ModuleProcedureStmt Cmnt )* EndInterfaceStmt Cmnt )
EndInterfaceStmt ::= <ENDINTERFACE>
InterfaceBody ::= ( FunctionStmt Cmnt SpecificationPart EndFunctionStmt | SubroutineStmt Cmnt SpecificationPart EndSubroutineStmt ) Cmnt
ModuleProcedureStmt ::= <MODULEPROCEDURE> ProcedureNameList
ProcedureNameList ::= Name ( <COMMA> Name )*
GenericSpec ::= ( Name | <OPERATOR> <LBRACKET> Operator <RBRACKET> | <ASSIGNMENT> <LBRACKET> <EQUAL> <RBRACKET> )
ExternalStmt ::= <EXTERNAL> OptDoubleColon Name ( <COMMA> Name )*
IntrinsicStmt ::= <INTRINSIC> OptDoubleColon Name ( <COMMA> Name )*
FunctionReference ::= Name <LBRACKET> ( ActualArgSpecList )? <RBRACKET>
CallStmt ::= <CALL> Name ( <LBRACKET> ( ActualArgSpecList )? <RBRACKET> )?
ActualArgSpecList ::= ActualArgSpec ( <COMMA> ActualArgSpec )*
ActualArgSpec ::= ( Name <EQUAL> )? ActualArg
ActualArg ::= Name
| Expr
| <MULTIPLY> Label
FuncRefName ::= Name
FunctionSubprogram ::= FunctionStmt Cmnt SpecificationPart ( ExecutionPart )? InternalSubprogramPart EndFunctionStmt Cmnt
FunctionStmt ::= ( FunctionPrefix )? <FUNCTION> Funcname FuncArglist OptResult
Funcname ::= Name
FuncArglist ::= ( <LBRACKET> ( DummyArgList )? <RBRACKET> )?
SubroutinePrefix ::= SubroutinePrefixSpec ( SubroutinePrefixSpec )*
FunctionPrefix ::= FunctionPrefixSpec ( FunctionPrefixSpec )*
SubroutinePrefixSpec ::= <RECURSIVE>
| <PURE>
| <ELEMENTAL>
FunctionPrefixSpec ::= ( TypeSpec | <RECURSIVE> | <PURE> | <ELEMENTAL> )
EndFunctionStmt ::= ( <ENDFUNCTION> OptName | <END> )
SubroutineSubprogram ::= SubroutineStmt Cmnt SpecificationPart ( ExecutionPart )? InternalSubprogramPart EndSubroutineStmt Cmnt
SubroutineStmt ::= ( SubroutinePrefix )? <SUBROUTINE> Procname Arglist
Procname ::= Name
Arglist ::= ( <LBRACKET> ( DummyArgList )? <RBRACKET> )?
DummyArgList ::= DummyArg ( <COMMA> DummyArg )*
DummyArg ::= Name
| <MULTIPLY>
EndSubroutineStmt ::= ( <ENDSUBROUTINE> OptName | <END> )
EntryStmt ::= <ENTRY> Name ( <LBRACKET> ( DummyArgList )? <RBRACKET> ( <RESULT> <LBRACKET> Name <RBRACKET> )? )?
ReturnStmt ::= <RETURN> ( ScalarIntExpr )?
ContainsStmt ::= <CONTAINS>
StmtFunctionStmt ::= Name FuncArglist <EQUAL> ScalarExpr
Cmnt ::= ( <SEMICOLON> ( <EOL> )? | <EOL> ) OptLabel
errorSkipToStmtEnd ::= java code
OptResult ::= ( <RESULT> <LBRACKET> Name <RBRACKET> )?
OptName ::= ( Name )?
Name ::= <NAME>
NewLabel ::= <LABEL>
Label ::= <LABEL>
Label1 ::= <LABEL1>
LookupLabel ::= java code
DeclareVar ::= java code
DeclareVarOrFun ::= java code
DeclareVarWithAttribute ::= java code
DeclareOptionalArg ::= java code
DeclareAccessId ::= java code
DeclareDefaultAccess ::= java code
DeclareSavedObject ::= java code
DeclareSavedCommonBlock ::= java code
DeclareArrayDimension ::= java code
DeclareAllocatableArray ::= java code
DeclarePointerObject ::= java code
DeclareTargetObject ::= java code
DeclareNamedConstant ::= java code
DeclareExternal ::= java code
DeclareIntrinsic ::= java code
NameEqualNameToken ::= java code
LookaheadAfterContains ::= java code
LookaheadAfterEndProcedure ::= java code
LookaheadOneContainedProcedure ::= java code
LookaheadContainedProcedures ::= java code
FillInImplicitDecls ::= java code