ocarina-backends-asn1_tree-nodes.idl 2.12 KB
Newer Older
1 2 3 4 5 6 7 8 9 10
module Ocarina::Backends::ASN1_Tree::Nodes {

  /******************/
  /* Internal types */
  /******************/

  typedef octet   Operator_Id;
  typedef long    Name_Id;
  typedef long    Value_Id;

11 12 13 14
  interface Base_Type {
    Name_Id    Image;
  };

15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
  /******************/
  /* Internal nodes */
  /******************/

  interface Node_Id {
    Node_Id    Next_Node;
    Node_Id    Frontend_Node;
  };

  interface Definition : Node_Id {
    Node_Id    Defining_Identifier;
  };

  interface List_Id {
    Node_Id    First_Node;
    Node_Id    Last_Node;
  };

  interface Defining_Identifier : Node_Id {
    Name_Id    Name;
    Node_Id    Corresponding_Node;
    Node_Id    Compile_Unit;
    boolean    Is_Pointer; 
  };

julien.delange's avatar
julien.delange committed
40 41 42
  interface ASN1_File : Definition {
    Node_Id    Module_Node;
  };
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59

  interface ASN1_Module : Node_Id {
    Name_Id    Name;
	 Node_Id    Oid;
    boolean    Automatic_Tags;
    List_Id    Imported_Clauses;
    List_Id    Exported_Clauses;
	 List_Id    Definitions;
  };

  interface Import_Export_Clause : Node_Id {
  	 Name_Id    Name;
    Name_Id    Associated_Module;
  };

  interface Type_Definition : Definition 
  {
60 61
    Name_Id   Name;
    Node_Id   Declaration;
62
  };
63 64 65 66 67 68 69 70 71 72 73 74 75 76

  interface Enumerated : Node_Id
  {
    List_Id   Values;
  };

  interface Enumerated_Value_List : List_Id {};

  interface Enumerated_Value : Node_Id
  {
   Name_Id     Name;
   Value_Id    Value;
  };

77 78 79 80 81 82 83 84
  interface Sequence : Node_Id
  {
   List_Id  Values;
  };

  interface Sequence_Member : Node_Id
  {
      Name_Id  Member_Name;
85 86 87 88 89 90 91 92
      Node_Id  Member_Type;
  };

  interface Choice : Node_Id
  {
   List_Id  Values;
  };

93
interface Choice_Member : Node_Id
94 95 96
  {
      Name_Id  Member_Name;
      Node_Id  Member_Type;
97 98
  };

99 100 101 102
  interface Literal : Node_Id {
    Value_Id   Value;
  };

103 104 105 106 107 108 109 110 111 112
  interface Type_Designator : Node_Id {
    Node_Id Type_Name;
    Node_Id Constraints;
  };

  interface Type_Constraints : Node_Id {
   Value_Id    Size_Down;
   Value_Id    Size_Up;
  };

113 114 115 116 117

  interface _Float           : Base_Type {};
  interface _Int             : Base_Type {};
  interface _Char            : Base_Type {};
  interface _String          : Base_Type {};
118
};