Permalink
Find file
Fetching contributors…
Cannot retrieve contributors at this time
executable file 117 lines (90 sloc) 4.45 KB
%%%%%%%%%%
%% Fortran ISO/IEC 1539:1991 4xx DataTypes
%%%%%%%%%%
module languages/fortran/syntax/R400DataTypes
imports
languages/fortran/syntax/FortranLex
languages/fortran/syntax/R500DataDeclarations
exports
sorts
AcImpliedDo AcValue AcValueList ArrayConstructor
BozLiteralConstant ComponentArraySpec ComponentAttrSpec ComponentAttrSpecList ComponentDecl
ComponentDeclList ComponentDefStmt Constant DerivedTypeBody DerivedTypeDef
DerivedTypeStmt EndTypeStmt KindParam LogicalConstant PrivateSequenceStmt
StructureConstructor UnsignedArithmeticConstant
context-free syntax
%%-R401 lex: signed-digit-string is [sign] digit-string
%%-R402 lex: digit-string is digit [digit]...
%%R404
Icon '_' KindParam -> UnsignedArithmeticConstant
%%R405
Icon -> KindParam
NamedConstantUse -> KindParam
%%R406
NamedConstantUse -> Constant
UnsignedArithmeticConstant -> Constant
'+' UnsignedArithmeticConstant -> Constant
'-' UnsignedArithmeticConstant -> Constant
Scon -> Constant
%% Hcon -> Constant
LogicalConstant -> Constant
%%R420 char-literal-constant
Icon '_' Scon -> Constant
NamedConstantUse '_' Scon -> Constant
%%R407
BinaryConstant -> BozLiteralConstant
OctalConstant -> BozLiteralConstant
HexConstant -> BozLiteralConstant
%%R413
Rcon '_' KindParam -> UnsignedArithmeticConstant
%%R421
'.true.' '_' KindParam -> LogicalConstant
'.false.' '_' KindParam -> LogicalConstant
%%R422
%% TODO: iso defines order: privateseq, componentdef.
DerivedTypeStmt DerivedTypeBody+ EndTypeStmt -> DerivedTypeDef
PrivateSequenceStmt -> DerivedTypeBody
ComponentDefStmt -> DerivedTypeBody
%%R423
LblDef 'private' EOS -> PrivateSequenceStmt
LblDef 'sequence' EOS -> PrivateSequenceStmt
%%R424
LblDef 'type' TypeName EOS -> DerivedTypeStmt
LblDef 'type' ':' ':' TypeName EOS -> DerivedTypeStmt
LblDef 'type' ',' AccessSpec ':' ':' TypeName EOS -> DerivedTypeStmt
%%R425
LblDef 'end' 'type' TypeName? EOS -> EndTypeStmt
%%R426
LblDef TypeSpec ( ',' ComponentAttrSpecList )? ':' ':' ComponentDeclList EOS -> ComponentDefStmt
LblDef TypeSpec ComponentDeclList EOS -> ComponentDefStmt
%%R427
{ComponentAttrSpec ","}+ -> ComponentAttrSpecList
'pointer' -> ComponentAttrSpec
'dimension' '(' ComponentArraySpec ')' -> ComponentAttrSpec
%%R428
ExplicitShapeSpecList -> ComponentArraySpec
DeferredShapeSpecList -> ComponentArraySpec
%%R429
%% TODO check with iso def
ComponentName ('(' ComponentArraySpec ')')? ('*' CharLength)? -> ComponentDecl
{ComponentDecl ","}+ -> ComponentDeclList
%%R430
TypeName '(' {Expr ","}+ ')' -> StructureConstructor
%%R431
'(/' AcValueList '/)' -> ArrayConstructor
%%R432
%% Expr -> AcValueList
%% AcValueList1 -> AcValueList
%% Expr ',' Expr -> AcValueList1
%% Expr ',' AcImpliedDo -> AcValueList1
%% AcImpliedDo -> AcValueList1
%% AcValueList1 ',' Expr -> AcValueList1
%% AcValueList1 ',' AcImpliedDo -> AcValueList1
Expr -> AcValue
AcImpliedDo -> AcValue
{AcValue ","}+ -> AcValueList
%%R433
'(' Expr ',' ImpliedDoVariable '=' Expr ',' Expr ')' -> AcImpliedDo
'(' Expr ',' ImpliedDoVariable '=' Expr ',' Expr ',' Expr ')' -> AcImpliedDo
'(' AcImpliedDo ',' ImpliedDoVariable '=' Expr ',' Expr ')' -> AcImpliedDo
'(' AcImpliedDo ',' ImpliedDoVariable '=' Expr ',' Expr ',' Expr ')' -> AcImpliedDo