Source code for curry.toolchain.flat2icurry.icurrytypes

'''
The ICurry data types, as in ``ICurry.Types`` of the Curry package
``icurry``.  A name is a triple ``(module, name, index)``.
'''

from .terms import Term, constructor

__all__ = [
    'IProg', 'IDataType', 'IFunction', 'Public', 'Private'
  , 'IExternal', 'IFuncBody', 'IBlock', 'IVarDecl', 'IFreeDecl'
  , 'IVarAssign', 'INodeAssign', 'IExempt', 'IReturn', 'ICaseCons', 'ICaseLit'
  , 'IConsBranch', 'ILitBranch', 'IVar', 'IVarAccess', 'ILit', 'IFCall'
  , 'ICCall', 'IFPCall', 'ICPCall', 'IOr', 'IInt', 'IChar', 'IFloat'
  , 'IExpr', 'IStatement', 'IAssign', 'IDecl', 'ILiteral', 'IVisibility'
  ]

[docs] class IVisibility(Term): __slots__ = ()
class IFuncBodyDecl(Term): __slots__ = ()
[docs] class IDecl(Term) : __slots__ = ()
[docs] class IAssign(Term) : __slots__ = ()
[docs] class IStatement(Term) : __slots__ = ()
[docs] class IExpr(Term) : __slots__ = ()
[docs] class ILiteral(Term) : __slots__ = ()
IProg = constructor('IProg', 'name imports types functions') IDataType = constructor('IDataType', 'name constructors') IFunction = constructor('IFunction', 'name arity visibility demanded body') Public = constructor('Public', base=IVisibility)() Private = constructor('Private', base=IVisibility)() IExternal = constructor('IExternal', 'name', IFuncBodyDecl) IFuncBody = constructor('IFuncBody', 'block', IFuncBodyDecl) IBlock = constructor('IBlock', 'decls assigns statement') IVarDecl = constructor('IVarDecl', 'var', IDecl) IFreeDecl = constructor('IFreeDecl', 'var', IDecl) IVarAssign = constructor('IVarAssign', 'var expr', IAssign) INodeAssign = constructor('INodeAssign', 'var path expr', IAssign) IExempt = constructor('IExempt', base=IStatement)() IReturn = constructor('IReturn', 'expr', IStatement) ICaseCons = constructor('ICaseCons', 'var branches', IStatement) ICaseLit = constructor('ICaseLit', 'var branches', IStatement) IConsBranch = constructor('IConsBranch', 'name arity block') ILitBranch = constructor('ILitBranch', 'literal block') IVar = constructor('IVar', 'var', IExpr) IVarAccess = constructor('IVarAccess', 'var path', IExpr) ILit = constructor('ILit', 'literal', IExpr) IFCall = constructor('IFCall', 'name args', IExpr) ICCall = constructor('ICCall', 'name args', IExpr) IFPCall = constructor('IFPCall', 'name missing args', IExpr) ICPCall = constructor('ICPCall', 'name missing args', IExpr) IOr = constructor('IOr', 'lhs rhs', IExpr) IInt = constructor('IInt', 'value', ILiteral) IChar = constructor('IChar', 'value', ILiteral) IFloat = constructor('IFloat', 'value', ILiteral)