# Package jif.ast

Provides classes for dealing with the Jif AST nodes and interfaces.

See: Description

- Interface Summary
  Interface | Description
  --- | ---
  ActsForConstraintNode<Actor extends ActsForParam,Granter extends ActsForParam> | An immutable representation of the Jif `ActsFor constraint`.
  ActsForParamNode<Param extends ActsForParam> | A placeholder in the AST for a Jif principal or label.
  AmbDynamicLabelNode | An ambiguous dynamic label.
  AmbExprParam | An ambiguous expression parameter.
  AmbJunctivePrincipalNode | An ambiguous principal node.
  AmbNewArray | An ambiguous new array expression.
  AmbParam | An ambiguous parameter.
  AmbParamTypeOrAccess | An ambiguous parameter type or array access.
  AmbPrincipalNode | An ambiguous principal node.
  AmbProviderLabelNode | An ambiguous `provider` label node.
  AmbThisLabelNode | An ambiguous `this` label node.
  AmbVarLabelNode | An ambiguous variable label node.
  AuthConstraintNode | An authority constraint node.
  AutoEndorseConstraintNode | An auto endorse constraint node.
  CallerConstraintNode | A caller constraint node.
  CanonicalConstraintNode | A canonical(non-ambiguous) constraint node.
  CanonicalLabelNode | A canonical label node.
  CanonicalPrincipalNode | Canonical principal node.
  CheckedEndorseStmt | An immutable representation of the Jif checked `endorse` statement.
  ConstArrayTypeNode | A `ConstArrayTypeNode` is a type node for a non-canonical const array type.
  ConstraintNode<Constraint extends Assertion> | The root of various constraint nodes.
  DeclassifyExpr | An immutable representation of the Jif `declassify` expression.
  DeclassifyStmt | An immutable representation of the Jif `declassify` statement.
  DowngradeExpr | Superinterface for downgrade expressions.
  DowngradeStmt | Superinterface for downgrade statements.
  EndorseExpr | An immutable representation of the Jif `endorse` expression.
  EndorseStmt | An immutable representation of the Jif `endorse` statement.
  InstTypeNode | Instantiated type node.
  JifCanonicalTypeNode | A `JifCanonicalTypeNode` is a type node for a canonical type in Polyj.
  JifClassDecl | An immutable representation of the Jif class declaration.
  JifConstructorDecl | An immutable representation of the Jif constructor declaration.
  JifDelFactory |
  JifExt | This class represents a Jif extension node.
  JifExtFactory |
  JifMethodDecl | An immutable representation of the Jif method declaration.
  JifNodeFactory | The node factory of the Jif extension.
  JifProcedureDecl | An immutable representation of the Jif procedure declaration.
  JifStmtExtFactory |
  JoinLabelNode | This class represents a join of several label nodes.
  LabelActsForLabelConstraintNode | An immutable representation of the Jif `ActsFor` constraint between two labels.
  LabelActsForPrincipalConstraintNode | An immutable representation of the Jif `ActsFor` constraint between a label and a principal.
  LabelComponentNode | A node that can be a component of a label.
  LabeledTypeNode | This class represents a labeled type node.
  LabelExpr | An immutable representation of the Jif `new label` statement.
  LabelLeAssertionNode |
  LabelNode | A placeholder in the AST for a Jif label.
  MeetLabelNode | This class represents a join of several label nodes.
  NewLabel | An immutable representation of the Jif `new label` statement.
  ParamDecl | The AST node representing a label/principal parameter declaration.
  ParamNode | This class is the root of all the classes that may be parameters, including label node classes and principal node classes.
  PolicyNode | A policy label node.
  PrincipalActsForPrincipalConstraintNode | An immutable representation of the Jif `ActsFor constraint` between two principals.
  PrincipalExpr | An immutable representation of the Jif `new principal` expression.
  PrincipalNode | A placeholder in AST for a Jif principal.
  Prologue |

- Class Summary
  Class | Description
  --- | ---
  AbstractJifExtFactory_c | This class provides is Jif's Extension factory, creating the appropriate Ext objects as required.
  ActsForConstraintNode_c<Actor extends ActsForParam,Granter extends ActsForParam> |
  AmbDynamicLabelNode_c | An implementation of the `AmbDynamicLabel` interface.
  AmbExprParam_c | An implementation of the `AmbParam` interface.
  AmbJunctivePrincipalNode_c | An implementation of the `AmbPrincipalNode` interface, representing an ambiguous conjunctive or disjunctive principal.
  AmbLabelNode_c | An ambiguous label node.
  AmbNewArray_c | An implementation of the `AmbNewArray` interface.
  AmbParam_c | An implementation of the `AmbParam` interface.
  AmbParamTypeOrAccess_c | An implementation of the `AmbParamTypeOrAccess` interface.
  AmbPrincipalNode_c | An implementation of the `AmbPrincipalNode` interface.
  AmbProviderLabelNode_c |
  AmbThisLabelNode_c | An implementation of the `AmbThisLabelNode` interface.
  AmbVarLabelNode_c | An implementation of the `AmbVarLabelNode` interface.
  AuthConstraintNode_c | An implementation of the `AuthConstraintNode` interface.
  AutoEndorseConstraintNode_c |
  CallerConstraintNode_c | An implementation of the `CallerConstraint` interface.
  CanonicalConstraintNode_c | An implementation of the `CanonicalConstraint`.
  CanonicalLabelNode_c | An implementation of the `CanonicalLabelNode` interface.
  CanonicalPrincipalNode_c | An implementation of the `CanonicalPrincipal` interface.
  CheckedEndorseStmt_c | An implementation of the `CheckedEndorseStmt` interface.
  ConstArrayTypeNode_c | Deprecated
  ConstraintNode_c<Constraint extends Assertion> | An implementation of the `ConstraintNode` interface.
  DeclassifyExpr_c | An implementation of the `DeclassifyExpr` interface.
  DeclassifyStmt_c | An implementation of the `DeclassifyStmt` interface.
  DowngradeExpr_c | An implementation of the `DowngradeExpr` interface.
  DowngradeStmt_c | An implementation of the `DowngradeStmt` interface.
  EndorseExpr_c | An implementation of the `EndorseExpr` interface.
  EndorseStmt_c | An implementation of the `EndorseStmt` interface.
  InstTypeNode_c | An implementation of the `InstTypeNode` interface.
  JifArrayAccessAssign_c | Deprecated
  JifBinary_c | Deprecated
  JifCall_c | Deprecated
  JifCanonicalTypeNode_c | Deprecated
  JifCatch_c | Deprecated
  JifClassDecl_c | Deprecated
  JifConstructorDecl_c | Deprecated
  JifDelFactory_c | Constructs Jif delegates
  JifDisamb_c | Utility class which is used to disambiguate ambiguous AST nodes (Expr, Type, Receiver, Qualifier, Prefix).
  JifExt_c | An implementation of the `Jif` interface.
  JifExtFactory_c | This class provides is Jif's Extension factory, creating the appropriate Ext objects as required.
  JifFormal_c | Deprecated
  JifInstantiator | This class contains a number of static utility methods to help instantiate labels, principals and types.
  JifLocalDecl_c | Deprecated
  JifMethodDecl_c | Deprecated
  JifNew_c | Deprecated
  JifNodeFactory_c | An implementation of the `JifNodeFactory` interface.
  JifUtil | An implementation of the `Jif` interface.
  JoinLabelNode_c | An implementation of the `JoinLabel` interface.
  LabelActsForLabelConstraintNode_c |
  LabelActsForPrincipalConstraintNode_c |
  LabeledTypeNode_c | An implementation of the `LabeledTypeNode` interface.
  LabelExpr_c | An implementation of the `NewLabel` interface.
  LabelLeAssertionNode_c | An implementation of the `LabelLeAssertionNode` interface.
  LabelNode_c | An implementation of the `LabelNode` interface.
  MeetLabelNode_c | An implementation of the `JoinLabel` interface.
  NewLabel_c | An implementation of the `NewLabel` interface.
  ParamDecl_c | An implementation of the `ParamDecl` interface.
  PolicyNode_c | An implementation of the `PolicyLabel` interface.
  PrincipalActsForPrincipalConstraintNode_c | An implementation of the `PrincipalActsForPrincipalConstraintNode` interface.
  PrincipalExpr_c |
  PrincipalNode_c | An implementation of the `PrincipalNode` interface.
  Prologue_c |
  ReaderPolicyNode_c | An implementation of the `PolicyLabel` interface.
  WriterPolicyNode_c | An implementation of the `PolicyLabel` interface.

## Package jif.ast Description

Provides classes for dealing with the Jif AST nodes and interfaces.

The nodes all implement the interface `Node` and extend from the class `Node_c`. Each node has accessor methods and methods to implement passes over the node. The traversal interface is defined in `NodeVisitor`. Nodes are constructed using a `NodeFactory`.

See Also:
  `Node`, `Node`, `NodeVisitor`, `NodeFactory`, `JifNodeFactory`, ``