1. private package Expressions.Literals is 
  2.  
  3.     -- A Literal is a literal value (boolean, number, or string) in an 
  4.     -- expression. 
  5.     type Literal is new Expression with private; 
  6.     type A_Literal is access all Literal'Class; 
  7.  
  8.     -- Creates a new Literal from a Token representing a literal value. If the 
  9.     -- token is not a value type, null will be returned. 
  10.     function Create_Literal( token : not null A_Token ) return A_Literal; 
  11.  
  12. private 
  13.  
  14.     type Literal is new Expression with 
  15.         record 
  16.             value : A_Value; 
  17.         end record; 
  18.  
  19.     procedure Construct( this  : access Literal; 
  20.                          loc   : Token_Location; 
  21.                          value : in out A_Value ); 
  22.  
  23.     procedure Delete( this : in out Literal ); 
  24.  
  25.     function Evaluate( this    : access Literal; 
  26.                        context : not null A_Eval_Context ) return A_Value; 
  27.  
  28. end Expressions.Literals;