fparser Reference Guide  0.0.14
fparser.one.statements.Case Class Reference
Inheritance diagram for fparser.one.statements.Case:
Collaboration diagram for fparser.one.statements.Case:

Public Member Functions

def process_item (self)
 
def tofortran (self, isfix=None)
 
def analyze (self)
 
- Public Member Functions inherited from fparser.common.base_classes.Statement
def __init__ (self, parent, item)
 
def __repr__ (self)
 
def torepr (self, depth=-1, incrtab="")
 
def get_indent_tab (self, deindent=False, isfix=None)
 
def __str__ (self)
 
def asfix (self)
 
def format_message (self, kind, message)
 
def error (self, message)
 
def warning (self, message)
 
def info (self, message)
 
def analyze (self)
 
def get_variable (self, name)
 
def get_type (self, name)
 
def get_type_decl (self, kind)
 
def get_provides (self)
 
- Public Member Functions inherited from fparser.common.utils.classes
def __new__ (metacls, name, bases, dict)
 
- Public Member Functions inherited from fparser.common.utils.meta_classes
def __getattr__ (self, name)
 

Public Attributes

 items
 
 name
 
 isvalid
 
- Public Attributes inherited from fparser.common.base_classes.Statement
 parent
 
 reader
 
 top
 
 item
 
 programblock
 
 isvalid
 
 ignore
 
 a
 

Static Public Attributes

 match
 
- Static Public Attributes inherited from fparser.common.base_classes.Statement
list modes = ["free", "fix", "f77", "pyf"]
 

Detailed Description

CASE <case-selector> [ <case-construct-name> ]
<case-selector> = ( <case-value-range-list> ) | DEFAULT
<case-value-range> = <case-value>
                     | <case-value> :
                     | : <case-value>
                     | <case-value> : <case-value>
<case-value> = <scalar-(int|char|logical)-initialization-expr>

Definition at line 2238 of file statements.py.

Member Function Documentation

◆ process_item()

def fparser.one.statements.Case.process_item (   self)
Populate the state of this item by parsing the associated line
of code

Definition at line 2252 of file statements.py.

References fparser.common.base_classes.Statement.isvalid, fparser.common.base_classes.Statement.item, fparser.one.statements.StatementWithNamelist.items, fparser.one.statements.Assign.items, fparser.one.statements.Call.items, fparser.one.statements.ComputedGoto.items, fparser.one.statements.AssignedGoto.items, fparser.one.statements.Print.items, fparser.one.statements.Read0.items, fparser.one.statements.Read1.items, fparser.one.statements.Write.items, fparser.one.statements.Allocate.items, fparser.one.statements.Deallocate.items, fparser.one.statements.ModuleProcedure.items, fparser.one.statements.Access.items, fparser.one.statements.Save.items, fparser.one.statements.Nullify.items, fparser.one.statements.Use.items, fparser.one.statements.Parameter.items, fparser.one.statements.Equivalence.items, fparser.one.statements.Dimension.items, fparser.one.statements.Target.items, fparser.one.statements.Pointer.items, fparser.one.statements.Inquire.items, fparser.one.statements.Namelist.items, fparser.one.statements.Common.items, fparser.one.statements.Intent.items, fparser.one.statements.Entry.items, fparser.one.statements.GenericBinding.items, fparser.one.statements.Allocatable.items, fparser.one.statements.Bind.items, fparser.one.statements.Case.items, fparser.common.base_classes.Variable.name, fparser.common.readfortran.Line.name, fparser.one.block_statements.BeginSource.name, fparser.one.block_statements.Module.name, fparser.one.block_statements.PythonModule.name, fparser.one.block_statements.BlockData.name, fparser.one.block_statements.Interface.name, fparser.one.block_statements.SubProgramStatement.name, fparser.common.base_classes.BeginStatement.name, fparser.one.statements.Cycle.name, fparser.common.base_classes.EndStatement.name, fparser.one.block_statements.Select.name, fparser.one.block_statements.Where.name, fparser.one.block_statements.Forall.name, fparser.one.block_statements.IfThen.name, fparser.one.statements.Use.name, fparser.one.block_statements.Do.name, fparser.one.statements.Exit.name, fparser.one.block_statements.Type.name, fparser.one.statements.Entry.name, fparser.one.statements.SpecificBinding.name, fparser.one.statements.Else.name, fparser.one.statements.ElseIf.name, fparser.one.statements.Case.name, fparser.common.base_classes.Variable.parent, fparser.common.base_classes.Statement.parent, fparser.common.base_classes.Variable.warning(), and fparser.common.base_classes.Statement.warning().

2252  def process_item(self):
2253  """Populate the state of this item by parsing the associated line
2254  of code"""
2255  line = self.item.get_line()[4:].lstrip()
2256  try:
2257  self.items = extract_bracketed_list_items(line, self.item)
2258  idx = line.rfind(")")
2259  self.name = line[idx + 1 :].lstrip()
2260  except ParseError:
2261  # No list in parentheses found so we must have a 'case default'
2262  if not line.lower().startswith("default"):
2263  # We should never get to here because such a string should
2264  # not have generated a match
2265  self.warning(
2266  "Internal error when parsing CASE statement: {0}".format(line)
2267  )
2268  self.isvalid = False
2269  return
2270  self.items = []
2271  self.name = line[7:].lstrip()
2272  parent_name = getattr(self.parent, "name", "")
2273  if self.name and self.name != parent_name:
2274  self.warning(
2275  "Expected case-construct-name {0} but got {1}, "
2276  "skipping.".format(parent_name, self.name)
2277  )
2278  self.isvalid = False
2279  return
2280 
Here is the call graph for this function:

◆ tofortran()

def fparser.one.statements.Case.tofortran (   self,
  isfix = None 
)
Return the Fortran for this object as a string

Definition at line 2281 of file statements.py.

References fparser.common.base_classes.Statement.get_indent_tab(), fparser.one.statements.StatementWithNamelist.items, fparser.one.statements.Assign.items, fparser.one.statements.Call.items, fparser.one.statements.ComputedGoto.items, fparser.one.statements.AssignedGoto.items, fparser.one.statements.Print.items, fparser.one.statements.Read0.items, fparser.one.statements.Read1.items, fparser.one.statements.Write.items, fparser.one.statements.Allocate.items, fparser.one.statements.Deallocate.items, fparser.one.statements.ModuleProcedure.items, fparser.one.statements.Access.items, fparser.one.statements.Save.items, fparser.one.statements.Nullify.items, fparser.one.statements.Use.items, fparser.one.statements.Parameter.items, fparser.one.statements.Equivalence.items, fparser.one.statements.Dimension.items, fparser.one.statements.Target.items, fparser.one.statements.Pointer.items, fparser.one.statements.Inquire.items, fparser.one.statements.Namelist.items, fparser.one.statements.Common.items, fparser.one.statements.Intent.items, fparser.one.statements.Entry.items, fparser.one.statements.GenericBinding.items, fparser.one.statements.Allocatable.items, fparser.one.statements.Bind.items, fparser.one.statements.Case.items, fparser.common.base_classes.Variable.name, fparser.common.readfortran.Line.name, fparser.one.block_statements.BeginSource.name, fparser.one.block_statements.Module.name, fparser.one.block_statements.PythonModule.name, fparser.one.block_statements.BlockData.name, fparser.one.block_statements.Interface.name, fparser.one.block_statements.SubProgramStatement.name, fparser.common.base_classes.BeginStatement.name, fparser.one.statements.Cycle.name, fparser.common.base_classes.EndStatement.name, fparser.one.block_statements.Select.name, fparser.one.block_statements.Where.name, fparser.one.block_statements.Forall.name, fparser.one.block_statements.IfThen.name, fparser.one.statements.Use.name, fparser.one.block_statements.Do.name, fparser.one.statements.Exit.name, fparser.one.block_statements.Type.name, fparser.one.statements.Entry.name, fparser.one.statements.SpecificBinding.name, fparser.one.statements.Else.name, fparser.one.statements.ElseIf.name, and fparser.one.statements.Case.name.

2281  def tofortran(self, isfix=None):
2282  """Return the Fortran for this object as a string"""
2283  tab = self.get_indent_tab(isfix=isfix)
2284  txt = tab + "CASE"
2285  if self.items:
2286  lst = []
2287  for item in self.items:
2288  lst.append((" : ".join(item)).strip())
2289  txt += " ( %s )" % (", ".join(lst))
2290  else:
2291  txt += " DEFAULT"
2292  if self.name:
2293  txt += " " + self.name
2294  return txt
2295 
Here is the call graph for this function:
Here is the caller graph for this function:

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