  TYPE
    llt$line_address_table = record
      original_module_name: pmt$program_name,
      version: llt$line_address_table_version,
      language: llt$module_generator,
      optimization_level: llt$optimization_level,
      number_of_items: llt$line_address_table_size,
      item: array [1 .. * ] of llt$line_address_item,
    recend,

    llt$line_address_item = record
      line_number: llt$source_line_number,
      section_ordinal: llt$section_ordinal,
      offset: llt$section_offset,
      extent: llt$section_length,
      nesting_level: llt$statement_nesting_level,
      line_attributes: llt$line_attributes,
      case llt$module_generator of
      = llc$basic =
        basic_statement_kind: llt$basic_statement_kind,
      = llc$cobol =
        cobol_statement_kind: llt$cobol_statement_kind,
      = llc$fortran =
        fortran_statement_kind: llt$fortran_statement_kind,
      = llc$cybil =
        cybil_statement_kind: llt$cybil_statement_kind,
      = llc$pascal =
        pascal_statement_kind: llt$pascal_statement_kind,
      = llc$the_c_language =
        c_statement_kind: llt$c_statement_kind,
      = llc$algol, llc$apl, llc$assembler, llc$object_library_generator,
            llc$pl_i, llc$unknown_generator, llc$ada, llc$real_memory_builder,
            llc$virtual_environment_linker, llc$malet =
        universal_statement_kind: llt$universal_statement_kind,
      casend,
    recend;

  CONST
    llc$max_statement_nesting_level = 255;

  TYPE
    llt$statement_nesting_level = 0 .. llc$max_statement_nesting_level,

    llt$line_attribute = (llc$line_number_unique, llc$breakpoint_permitted,
          llc$labelled_line, llc$prolog_code, llc$no_object_code_for_line,
          llc$line_attribute_spare6, llc$line_attribute_spare7,
          llc$line_attribute_spare8),

    llt$line_attributes = set of llt$line_attribute;

  TYPE
    llt$line_address_table_version = string (4);


  CONST
    llc$line_address_table_version = 'V1.0';

  TYPE
    llt$basic_statement_kind = (llc$basic_unknown_stmt_type, llc$basic_let,
          llc$basic_swap, llc$basic_call, llc$basic_callx, llc$basic_chain,
          llc$basic_end, llc$basic_error, llc$basic_exit_function,
          llc$basic_exit_sub, llc$basic_gosub, llc$basic_goto,
          llc$basic_on_error, llc$basic_on_gosub, llc$basic_on_goto,
          llc$basic_resume, llc$basic_return, llc$basic_run, llc$basic_stop,
          llc$basic_line_if, llc$basic_for, llc$basic_next, llc$basic_while,
          llc$basic_wend, llc$basic_if, llc$basic_elseif, llc$basic_else,
          llc$basic_endif, llc$basic_internal_function,
          llc$basic_internal_subroutine, llt$basic_external_function,
          llc$basic_external_subroutine, llt$basic_end_function,
          llc$basic_end_sub, llc$basic_close, llc$basic_field, llc$basic_get,
          llc$basic_input, llc$basic_line_input, llc$basic_lprint,
          llc$basic_lprint_using, llc$basic_lset, llc$basic_open,
          llc$basic_print, llc$basic_print_using, llc$basic_put,
          llc$basic_rset, llc$basic_width, llc$basic_write, llc$basic_beep,
          llc$basic_data, llc$basic_read, llc$basic_restore, llc$basic_clear,
          llc$basic_dim, llc$basic_erase, llc$basic_randomize);

  TYPE
    llt$cybil_statement_kind = (llc$cybil_unknown_stmt_kind,
          llc$cybil_procedure, llc$cybil_assignment, llc$cybil_begin,
          llc$cybil_end, llc$cybil_while, llc$cybil_whilend, llc$cybil_repeat,
          llc$cybil_until, llc$cybil_for, llc$cybil_forend,
          llc$cybil_procedure_call, llc$cybil_if, llc$cybil_elseif,
          llc$cybil_else, llc$cybil_ifend, llc$cybil_case,
          llc$cybil_case_selector, llc$cybil_casend, llc$cybil_cycle,
          llc$cybil_exit, llc$cybil_return, llc$cybil_push, llc$cybil_next,
          llc$cybil_reset, llc$cybil_allocate, llc$cybil_free,
          llc$cybil_procend, llc$cybil_pocket_code);

  TYPE
    llt$cobol_statement_kind = (llc$cobol_unknown_stmt_kind, llc$cobol_program,
          llc$cobol_section, llc$cobol_paragraph, llc$cobol_accept,
          llc$cobol_add, llc$cobol_alter, llc$cobol_call, llc$cobol_cancel,
          llc$cobol_close, llc$cobol_compute, llc$cobol_continue,
          llc$cobol_delete, llc$cobol_display, llc$cobol_divide,
          llc$cobol_else, llc$cobol_end_if, llc$cobol_end_perform,
          llc$cobol_enter, llc$cobol_exit, llc$cobol_generate, llc$cobol_goto,
          llc$cobol_if, llc$cobol_initialize, llc$cobol_initiate,
          llc$cobol_inspect, llc$cobol_merge, llc$cobol_move,
          llc$cobol_multiply, llc$cobol_open, llc$cobol_perform,
          llc$cobol_purge, llc$cobol_read, llc$cobol_receive,
          llc$cobol_release, llc$cobol_return, llc$cobol_rewrite,
          llc$cobol_search, llc$cobol_send, llc$cobol_set, llc$cobol_sort,
          llc$cobol_start, llc$cobol_stop, llc$cobol_string,
          llc$cobol_subtract, llc$cobol_suppress, llc$cobol_terminate,
          llc$cobol_unstring, llc$cobol_write);

  TYPE
    llt$fortran_statement_kind = (llc$fortran_unknown_stmt_kind,
          llc$fortran_program, llc$fortran_subroutine, llc$fortran_function,
          llc$fortran_arithmetic_if, llc$fortran_assign,
          llc$fortran_assigned_goto, llc$fortran_assignment,
          llc$fortran_backspace, llc$fortran_block_if, llc$fortran_buffer_in,
          llc$fortran_buffer_out, llc$fortran_call, llc$fortran_close,
          llc$fortran_computed_goto, llc$fortran_continue, llc$fortran_decode,
          llc$fortran_do, llc$fortran_else, llc$fortran_elseif,
          llc$fortran_encode, llc$fortran_end, llc$fortran_endfile,
          llc$fortran_endif, llc$fortran_entry, llc$fortran_inquire,
          llc$fortran_logical_if, llc$fortran_open, llc$fortran_pause,
          llc$fortran_print, llc$fortran_punch, llc$fortran_read,
          llc$fortran_return, llc$fortran_rewind, llc$fortran_stop,
          llc$fortran_write, llc$fortran_unconditional_goto,
          llc$fortran_elsewhere, llc$fortran_endwhere, llc$fortran_allocate,
          llc$fortran_free, llc$fortran_logical_where, llc$fortran_block_where,
          llc$fortran_forall);

  TYPE
    llt$pascal_statement_kind = (llc$pascal_unknown_stmt_kind,
          llc$pascal_assignment, llc$pascal_begin, llc$pascal_call,
          llc$pascal_case, llc$pascal_case_selector, llc$pascal_else,
          llc$pascal_end, llc$pascal_for, llc$pascal_goto, llc$pascal_if,
          llc$pascal_procedure, llc$pascal_repeat, llc$pascal_until,
          llc$pascal_while, llc$pascal_with);

  TYPE
    llt$c_statement_kind = (llc$c_unknown_statement_kind, llc$c_function,
          llc$c_assignment, llc$c_begin, llc$c_end, llc$c_while, llc$c_whilend,
          llc$c_do, llc$c_until, llc$c_for, llc$c_forend, llc$c_function_call,
          llc$c_if, llc$c_elseif, llc$c_else, llc$c_ifend, llc$c_switch,
          llc$c_switch_selector, llc$c_switchend, llc$c_continue, llc$c_break,
          llc$c_return, llc$c_push, llc$c_next, llc$c_reset, llc$c_allocate,
          llc$c_free, llc$c_function_end, llc$c_goto, llc$c_null);

  TYPE
    llt$universal_statement_kind = (llc$universal_unknown_stmt_kind,
          llc$universal_procedure);

*copyc pmt$program_name
*copyc llt$object_text_descriptor
*copyc llt$line_address_table_size
*copyc llt$module_generator
*copyc llt$section_address
*copyc llt$source_line_number
*copyc llt$optimization_level
