fparser Reference Guide  0.0.14
fparser.one.typedecl_statements.TypeDeclarationStatement Class Reference
Inheritance diagram for fparser.one.typedecl_statements.TypeDeclarationStatement:
Collaboration diagram for fparser.one.typedecl_statements.TypeDeclarationStatement:

Public Member Functions

def process_item (self)
 
def tostr (self)
 
def tofortran (self, isfix=None)
 
def __str__ (self)
 
def __eq__ (self, other)
 
def astypedecl (self)
 
def analyze (self)
 
def get_zero_value (self)
 
def assign_expression (self, name, value)
 
def get_kind (self)
 
def get_length (self)
 
def get_byte_size (self)
 
def is_intrinsic (self)
 
def is_derived (self)
 
def is_numeric (self)
 
def is_nonnumeric (self)
 

Public Attributes

 isvalid
 
 raw_selector
 
 selector
 
 attrspec
 
 entity_decls
 
 ignore
 
 name
 

Detailed Description

<declaration-type-spec> [ [, <attr-spec>] :: ] <entity-decl-list>
<declaration-type-spec> = <intrinsic-type-spec>
                          | TYPE ( <derived-type-spec> )
                          | CLASS ( <derived-type-spec> )
                          | CLASS ( * )

<derived-type-spec> = <type-name> [ ( <type-param-spec-list> ) ]
<type-param-spec> = [ <keyword> = ] <type-param-value>
<type-param-value> = <scalar-int-expr> | * | :

<intrinsic-type-spec> = INTEGER [<kind-selector>]
                        | REAL [<kind-selector>]
                        | DOUBLE PRECISION
                        | COMPLEX [<kind-selector>]
                        | CHARACTER [<char-selector>]
                        | LOGICAL [<kind-selector>]

<kind-selector> = ( [ KIND = ] <scalar-int-initialization-expr> )
EXTENSION:
  <kind-selector> = ( [ KIND = ] <scalar-int-initialization-expr> )
                    | * <length>

<char-selector> = <length-selector>
                  | ( LEN = <type-param-value>, KIND = <scalar-int-initialization-expr> )
                  | ( <type-param-value>, [ KIND = ] <scalar-int-initialization-expr> )
                  | ( KIND = <scalar-int-initialization-expr> [, LEN = <type-param-value>] )
<length-selector> = ( [ LEN = ] <type-param-value> )
                    | * <char-length> [ , ]
<char-length> = ( <type-param-value> ) | <scalar-int-literal-constant>

<attr-spec> = <access-spec> | ALLOCATABLE | ASYNCHRONOUS
              | DIMENSION ( <array-spec> ) | EXTERNAL
              | INTENT ( <intent-spec> ) | INTRINSIC
              | <language-binding-spec> | OPTIONAL
              | PARAMETER | POINTER | PROTECTED | SAVE
              | TARGET | VALUE | VOLATILE
<entity-decl> = <object-name> [ ( <array-spec> ) ] [ * <char-length> ] [ <initialization> ]
              | <function-name> [ * <char-length> ]
<initialization> =  = <initialization-expr>
                    | => NULL
<access-spec> = PUBLIC | PRIVATE
<language-binding-spec> = BIND ( C [ , NAME = <scalar-char-initialization-expr>] )
<array-spec> =   <explicit-shape-spec-list>
               | <assumed-shape-spec-list>
               | <deferred-shape-spec-list>
               | <assumed-size-spec>
<explicit-shape-spec> = [ <lower-bound> : ] <upper-bound>
<assumed-shape-spec> = [ <lower-bound> ] :
<deferred-shape-spec> = :
<assumed-size-spec> = [ <explicit-shape-spec-list> , ] [ <lower-bound> : ] *
<bound> = <specification-expr>

<int-literal-constant> = <digit-string> [ _ <kind-param> ]
<digit-string> = <digit> [ <digit> ]..
<kind-param> = <digit-string> | <scalar-int-constant-name>

Definition at line 107 of file typedecl_statements.py.

Member Function Documentation

◆ tostr()

def fparser.one.typedecl_statements.TypeDeclarationStatement.tostr (   self)
Create a text representation of this object and return it

Definition at line 334 of file typedecl_statements.py.

References fparser.one.statements.GeneralAssignment.__class__, fparser.one.statements.Read.__class__, fparser.one.typedecl_statements.TypeDeclarationStatement._parse_entity(), fparser.one.typedecl_statements.TypeDeclarationStatement.astypedecl(), fparser.one.typedecl_statements.TypeDeclarationStatement.attrspec, fparser.one.typedecl_statements.Integer.default_kind, fparser.one.typedecl_statements.Real.default_kind, fparser.one.typedecl_statements.DoublePrecision.default_kind, fparser.one.typedecl_statements.Complex.default_kind, fparser.one.typedecl_statements.DoubleComplex.default_kind, fparser.one.typedecl_statements.Logical.default_kind, fparser.one.typedecl_statements.Character.default_kind, fparser.one.typedecl_statements.Byte.default_kind, fparser.one.typedecl_statements.TypeDeclarationStatement.entity_decls, fparser.common.base_classes.Statement.get_indent_tab(), fparser.common.base_classes.EndStatement.get_indent_tab(), fparser.two.Fortran2003.Comment.item, fparser.common.base_classes.Statement.item, fparser.common.base_classes.Variable.parent, fparser.two.utils.Base.parent, fparser.two.symbol_table.SymbolTable.parent, fparser.common.base_classes.Statement.parent, fparser.one.typedecl_statements.TypeDeclarationStatement.selector, fparser.one.statements.StatementWithNamelist.tofortran(), fparser.one.statements.GeneralAssignment.tofortran(), fparser.one.statements.Assign.tofortran(), fparser.one.block_statements.BeginSource.tofortran(), fparser.one.typedecl_statements.TypeDeclarationStatement.tofortran(), fparser.one.statements.Call.tofortran(), fparser.one.statements.Goto.tofortran(), fparser.one.statements.ComputedGoto.tofortran(), fparser.one.statements.AssignedGoto.tofortran(), fparser.one.statements.Continue.tofortran(), fparser.one.statements.Return.tofortran(), fparser.one.statements.Stop.tofortran(), fparser.one.statements.Print.tofortran(), fparser.one.statements.Read0.tofortran(), fparser.one.statements.Read1.tofortran(), fparser.one.statements.Write.tofortran(), fparser.one.statements.Flush.tofortran(), fparser.one.statements.Wait.tofortran(), fparser.one.statements.Contains.tofortran(), fparser.one.statements.Allocate.tofortran(), fparser.common.base_classes.BeginStatement.tofortran(), fparser.one.statements.Deallocate.tofortran(), fparser.one.statements.ModuleProcedure.tofortran(), fparser.one.statements.Access.tofortran(), fparser.one.statements.Close.tofortran(), fparser.one.statements.Cycle.tofortran(), fparser.one.statements.FilePositioningStatement.tofortran(), fparser.common.base_classes.EndStatement.tofortran(), fparser.one.statements.Open.tofortran(), fparser.one.statements.Format.tofortran(), fparser.one.statements.Save.tofortran(), fparser.one.statements.Data.tofortran(), fparser.one.statements.Nullify.tofortran(), fparser.one.block_statements.If.tofortran(), fparser.one.statements.Use.tofortran(), fparser.one.statements.Exit.tofortran(), fparser.one.statements.Parameter.tofortran(), fparser.one.statements.Equivalence.tofortran(), fparser.one.statements.Dimension.tofortran(), fparser.one.statements.Target.tofortran(), fparser.one.statements.Pointer.tofortran(), fparser.one.statements.ArithmeticIf.tofortran(), fparser.one.statements.Inquire.tofortran(), fparser.one.statements.Sequence.tofortran(), fparser.one.statements.Namelist.tofortran(), fparser.one.statements.Common.tofortran(), fparser.one.statements.Intent.tofortran(), fparser.one.statements.Entry.tofortran(), fparser.one.statements.Forall.tofortran(), fparser.one.statements.SpecificBinding.tofortran(), fparser.one.statements.GenericBinding.tofortran(), fparser.one.statements.Allocatable.tofortran(), fparser.one.statements.Bind.tofortran(), fparser.one.statements.Else.tofortran(), fparser.one.statements.ElseIf.tofortran(), fparser.one.statements.Case.tofortran(), fparser.one.statements.TypeIs.tofortran(), fparser.one.statements.ClassIs.tofortran(), fparser.one.statements.Where.tofortran(), fparser.one.statements.ElseWhere.tofortran(), fparser.one.statements.Enumerator.tofortran(), fparser.one.statements.FortranName.tofortran(), fparser.one.statements.Threadsafe.tofortran(), fparser.one.statements.Depend.tofortran(), fparser.one.statements.Check.tofortran(), fparser.one.statements.CallStatement.tofortran(), fparser.one.statements.CallProtoArgument.tofortran(), fparser.one.statements.Pause.tofortran(), fparser.one.statements.Comment.tofortran(), fparser.one.typedecl_statements.TypeDeclarationStatement.tostr(), fparser.one.block_statements.BeginSource.tostr(), fparser.one.block_statements.Interface.tostr(), fparser.one.block_statements.SubProgramStatement.tostr(), fparser.common.base_classes.BeginStatement.tostr(), fparser.one.block_statements.SelectCase.tostr(), fparser.one.block_statements.SelectType.tostr(), fparser.one.block_statements.Where.tostr(), fparser.one.block_statements.Forall.tostr(), fparser.one.block_statements.IfThen.tostr(), fparser.one.block_statements.If.tostr(), fparser.one.block_statements.Do.tostr(), fparser.one.block_statements.Associate.tostr(), and fparser.one.block_statements.Type.tostr().

334  def tostr(self):
335  """Create a text representation of this object and return it"""
336  clsname = self.__class__.__name__.upper()
337  text = ""
338  length, kind = self.selector
339  if isinstance(self, Character):
340  if length and kind:
341  text += "(LEN=%s, KIND=%s)" % (length, kind)
342  elif length:
343  text += "(LEN=%s)" % (length)
344  elif kind:
345  text += "(KIND=%s)" % (kind)
346  elif isinstance(self, Type):
347  text += "(%s)" % (kind)
348  elif isinstance(self, Class):
349  if kind:
350  # For a class declaration, 'kind' is actually the class
351  # that the variable is an instance of. Therefore there
352  # is no "(KIND=xxx)", just (xxx).
353  text += "({0})".format(kind)
354  else:
355  if length:
356  text += "*%s" % (length)
357  if kind:
358  text += "(KIND=%s)" % (kind)
359 
360  return clsname + text
361 
Here is the caller graph for this function:

The documentation for this class was generated from the following file: