PreviousUpNext

15.4.1487  src/lib/x-kit/widget/old/fancy/graphviz/text/approximate-ml.lex.pkg

package approximate_ml_lex {
   
# Compiled by:
#     src/lib/x-kit/widget/xkit-widget.sublib

    package user_declarations {
      
## lexer
#
# COPYRIGHT (c) 1989,1992 by AT&T Bell Laboratories
#
# A scanner for mapping mapping ML code to pretty print form.
#
# TODO: spaces at the beginning of multi-line comments.


package vb = view_buffer;
package kw = ml_keywords;

Lex_Result
  = EOF
  | NL
  | COM List( Lex_Result )
  | STR List( Lex_Result )
  | TOK { space:  Int,
          kind:   vb::Token_Kind,
          text:   String
        }
  ;

comment_nesting_depth
    =
    REF 0;

result_stk
    =
    REF ([]:  List( Lex_Result ));

char_list = REF ([]:  List( String ));

fun make_string ()
    =
    cat (reverse *char_list)
    then
        char_list := [];

col   =  REF 0;
space =  REF 0;

fun tab ()
    =
    {   n = *col;
        skip = 8 - (n & 0x7);
        #
        space := *space + skip;
        col   := n + skip;
    };

fun expand_tab ()
    =
    {   n = *col;
        skip = 8 - (n & 0x7);
        #
        char_list := (number_string::pad_left ' ' skip "") ! *char_list;
        col := n + skip;
    };

fun add_string s
    =
    {   char_list := s ! *char_list;
        #
        col := *col + size s;
    };

fun token tok
    =
    {   space := 0;
        #
        col := *col + size tok.text;
        #
        TOK tok;
    };

fun newline ()
    =
    {   space := 0;
        col   := 0;
        NL;
    };

fun push_line kind
    =
    {   tok = TOK { space => *space, kind, text => make_string() };

        space := 0;
        newline();
        result_stk :=  NL ! tok ! *result_stk;
    };

fun dump_stk kind
    =
    {   tok = TOK { space => *space, kind, text => make_string() };

        space := 0;

        reverse (tok ! *result_stk)
        then
            result_stk := [];
    };

fun mk_id    s =  token (kw::make_token { space => *space, text => s });

fun mk_sym   s =  token ({ space => *space, kind => vb::SYMBOL, text => s });
fun mk_tyvar s =  token ({ space => *space, kind => vb::IDENT,  text => s });
fun mk_con   s =  token ({ space => *space, kind => vb::SYMBOL, text => s });

fun eof ()
    =
    {   char_list  := [];
        result_stk := [];
        #
        space := 0;
        col   := 0;
        #
        comment_nesting_depth := 0;
        #
        EOF;
    };

fun error s
    =
    raise exception DIE s;

}; #  end of user routines 
exception LEX_ERROR; # Raised if illegal leaf action tried.
package internal {
         

Yyfinstate = NN Int;
Statedata = { fin:  List( Yyfinstate ), trans: String };
#  transition & final state table 
tab = {
    s = [ 
 (0,  
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00"
),
 (1,  
"\x0a\x0a\x0a\x0a\x0a\x0a\x0a\x0a\x0a\x35\x34\x0a\x0a\x0a\x0a\x0a\
\\x0a\x0a\x0a\x0a\x0a\x0a\x0a\x0a\x0a\x0a\x0a\x0a\x0a\x0a\x0a\x0a\
\\x33\x1a\x32\x1a\x1a\x1a\x1a\x30\x2e\x2d\x2b\x1a\x2a\x1a\x27\x1a\
\\x24\x22\x22\x22\x22\x22\x22\x22\x22\x22\x1a\x21\x1a\x1a\x1a\x1a\
\\x1a\x1c\x1c\x1c\x1c\x1c\x1c\x1c\x1c\x1c\x1c\x1c\x1c\x1c\x1c\x1c\
\\x1c\x1c\x1c\x1c\x1c\x1c\x1c\x1c\x1c\x1c\x1c\x20\x1a\x1f\x1a\x1e\
\\x1a\x1c\x1c\x1c\x1c\x1c\x1c\x1c\x1c\x1c\x1c\x1c\x1c\x1c\x1c\x1c\
\\x1c\x1c\x1c\x1c\x1c\x1c\x1c\x1c\x1c\x1c\x1c\x1b\x1a\x19\x0b\x0a\
\\x09"
),
 (3,  
"\x36\x36\x36\x36\x36\x36\x36\x36\x36\x3c\x3b\x36\x36\x36\x36\x36\
\\x36\x36\x36\x36\x36\x36\x36\x36\x36\x36\x36\x36\x36\x36\x36\x36\
\\x36\x36\x36\x36\x36\x36\x36\x36\x39\x36\x37\x36\x36\x36\x36\x36\
\\x36\x36\x36\x36\x36\x36\x36\x36\x36\x36\x36\x36\x36\x36\x36\x36\
\\x36\x36\x36\x36\x36\x36\x36\x36\x36\x36\x36\x36\x36\x36\x36\x36\
\\x36\x36\x36\x36\x36\x36\x36\x36\x36\x36\x36\x36\x36\x36\x36\x36\
\\x36\x36\x36\x36\x36\x36\x36\x36\x36\x36\x36\x36\x36\x36\x36\x36\
\\x36\x36\x36\x36\x36\x36\x36\x36\x36\x36\x36\x36\x36\x36\x36\x36\
\\x36"
),
 (5,  
"\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x43\x42\x3d\x3d\x3d\x3d\x3d\
\\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\
\\x3d\x3d\x41\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\
\\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\
\\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\
\\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3e\x3d\x3d\x3d\
\\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\
\\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\
\\x3d"
),
 (7,  
"\x44\x44\x44\x44\x44\x44\x44\x44\x44\x48\x47\x44\x44\x44\x44\x44\
\\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\
\\x46\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\
\\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\
\\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\
\\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x45\x44\x44\x44\
\\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\
\\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\
\\x44"
),
 (11,  
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x0c\x00\x0c\x0c\x0c\x0c\x00\x00\x00\x0c\x0c\x00\x0c\x00\x0c\
\\x16\x0d\x0d\x0d\x0d\x0d\x0d\x0d\x0d\x0d\x0c\x00\x0c\x0c\x0c\x0c\
\\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x0c\x00\
\\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x0c\x00\
\\x00"
),
 (12,  
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x0c\x00\x0c\x0c\x0c\x0c\x00\x00\x00\x0c\x0c\x00\x0c\x00\x0c\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x0c\x0c\x0c\x0c\
\\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x0c\x00\
\\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x0c\x00\
\\x00"
),
 (13,  
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00\
\\x0d\x0d\x0d\x0d\x0d\x0d\x0d\x0d\x0d\x0d\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00"
),
 (14,  
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x00\
\\x00"
),
 (15,  
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00"
),
 (17,  
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x12\x12\x12\x12\x12\x12\x12\x12\x12\x12\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00"
),
 (18,  
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x12\x12\x12\x12\x12\x12\x12\x12\x12\x12\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00"
),
 (19,  
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00\
\\x00"
),
 (20,  
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00"
),
 (22,  
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00\
\\x0d\x0d\x0d\x0d\x0d\x0d\x0d\x0d\x0d\x0d\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\
\\x00"
),
 (23,  
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x00\x00\x00\x00\x00\x00\
\\x00\x18\x18\x18\x18\x18\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x18\x18\x18\x18\x18\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00"
),
 (28,  
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x1d\x00\x00\x00\x00\x00\x00\x00\x00\
\\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x00\x00\x00\x00\x00\x00\
\\x00\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1d\
\\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x00\x00\x00\x00\x1d\
\\x00\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1d\
\\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x00\x00\x00\x00\x00\
\\x00"
),
 (34,  
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00\
\\x23\x23\x23\x23\x23\x23\x23\x23\x23\x23\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00"
),
 (36,  
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00\
\\x23\x23\x23\x23\x23\x23\x23\x23\x23\x23\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x25\x00\x00\x00\x00\x00\x00\x00\
\\x00"
),
 (37,  
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x26\x26\x26\x26\x26\x26\x26\x26\x26\x26\x00\x00\x00\x00\x00\x00\
\\x00\x26\x26\x26\x26\x26\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x26\x26\x26\x26\x26\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00"
),
 (39,  
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00"
),
 (40,  
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00"
),
 (43,  
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x0c\x00\x0c\x0c\x0c\x0c\x00\x00\x2c\x0c\x0c\x00\x0c\x00\x0c\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x0c\x0c\x0c\x0c\
\\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x0c\x00\
\\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x0c\x00\
\\x00"
),
 (46,  
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00"
),
 (48,  
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\
\\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x00\x00\x00\x00\x00\x00\
\\x00\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\
\\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x00\x00\x00\x00\x31\
\\x00\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\
\\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x00\x00\x00\x00\x00\
\\x00"
),
 (55,  
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00"
),
 (57,  
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00"
),
 (61,  
"\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x00\x00\x3d\x3d\x3d\x3d\x3d\
\\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\
\\x3d\x3d\x00\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\
\\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\
\\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\
\\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x00\x3d\x3d\x3d\
\\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\
\\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\
\\x3d"
),
 (62,  
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\\x00"
),
    (0, "")];
    fun f x = x;
    s = map f (reverse (tail (reverse s)));
    exception LEX_HACKING_ERROR;
    fun get ((j, x) ! r, i: Int)
            =>
            if (i == j)  x;   else get (r, i); fi;

        get ([], i)
            =>
            raise exception LEX_HACKING_ERROR;
    end;
fun g {   fin => x,   trans => i   }
    =
    {   fin => x,   trans => get (s, i)   };
 vector::from_list (map g 
[{ fin => [], trans => 0},
{ fin => [], trans => 1},
{ fin => [], trans => 1},
{ fin => [], trans => 3},
{ fin => [], trans => 3},
{ fin => [(NN 117)], trans => 5},
{ fin => [(NN 117)], trans => 5},
{ fin => [], trans => 7},
{ fin => [], trans => 7},
{ fin => [(NN 125), (NN 127)], trans => 0},
{ fin => [(NN 127)], trans => 0},
{ fin => [(NN 43), (NN 127)], trans => 11},
{ fin => [(NN 43)], trans => 12},
{ fin => [(NN 70)], trans => 13},
{ fin => [], trans => 14},
{ fin => [], trans => 15},
{ fin => [(NN 63)], trans => 15},
{ fin => [], trans => 17},
{ fin => [(NN 63)], trans => 18},
{ fin => [], trans => 19},
{ fin => [], trans => 20},
{ fin => [(NN 63)], trans => 20},
{ fin => [(NN 70)], trans => 22},
{ fin => [], trans => 23},
{ fin => [(NN 81)], trans => 23},
{ fin => [(NN 13), (NN 127)], trans => 0},
{ fin => [(NN 43), (NN 127)], trans => 12},
{ fin => [(NN 11), (NN 127)], trans => 0},
{ fin => [(NN 43), (NN 127)], trans => 28},
{ fin => [(NN 43)], trans => 28},
{ fin => [(NN 7), (NN 127)], trans => 0},
{ fin => [(NN 17), (NN 127)], trans => 0},
{ fin => [(NN 15), (NN 127)], trans => 0},
{ fin => [(NN 19), (NN 127)], trans => 0},
{ fin => [(NN 66), (NN 127)], trans => 34},
{ fin => [(NN 66)], trans => 34},
{ fin => [(NN 66), (NN 127)], trans => 36},
{ fin => [], trans => 37},
{ fin => [(NN 75)], trans => 37},
{ fin => [(NN 25), (NN 127)], trans => 39},
{ fin => [], trans => 40},
{ fin => [(NN 29)], trans => 0},
{ fin => [(NN 9), (NN 127)], trans => 0},
{ fin => [(NN 43), (NN 127)], trans => 43},
{ fin => [(NN 87)], trans => 0},
{ fin => [(NN 23), (NN 127)], trans => 0},
{ fin => [(NN 21), (NN 127)], trans => 46},
{ fin => [(NN 84)], trans => 0},
{ fin => [(NN 32), (NN 127)], trans => 48},
{ fin => [(NN 32)], trans => 48},
{ fin => [(NN 101), (NN 127)], trans => 0},
{ fin => [(NN 3), (NN 127)], trans => 0},
{ fin => [(NN 5)], trans => 0},
{ fin => [(NN 1), (NN 127)], trans => 0},
{ fin => [(NN 99)], trans => 0},
{ fin => [(NN 99)], trans => 55},
{ fin => [(NN 95)], trans => 0},
{ fin => [(NN 99)], trans => 57},
{ fin => [(NN 90)], trans => 0},
{ fin => [(NN 92)], trans => 0},
{ fin => [(NN 97), (NN 99)], trans => 0},
{ fin => [(NN 117)], trans => 61},
{ fin => [(NN 115)], trans => 62},
{ fin => [(NN 113)], trans => 0},
{ fin => [(NN 108)], trans => 0},
{ fin => [(NN 103)], trans => 0},
{ fin => [(NN 105)], trans => 0},
{ fin => [(NN 110)], trans => 0},
{ fin => [(NN 123)], trans => 0},
{ fin => [(NN 121), (NN 123)], trans => 0},
{ fin => [(NN 3), (NN 123)], trans => 0},
{ fin => [(NN 119)], trans => 0},
{ fin => [(NN 1), (NN 123)], trans => 0}]);
};
package start_states {
         
         Yystartstate = STARTSTATE Int;

#  start state definitions 

my ccc = STARTSTATE 3;
my fff = STARTSTATE 7;
my initial = STARTSTATE 1;
my sss = STARTSTATE 5;

 };
Result = user_declarations::Lex_Result;
         exception LEXER_ERROR; # Raised if illegal leaf action tried */
};

fun make_lexer yyinput =
{        my yygone0=1;
         yyb = REF "\n";                #  Buffer 
         yybl = REF 1;          # Buffer length 
         yybufpos = REF 1;              #  location of next character to use 
         yygone = REF yygone0;  #  position in file of beginning of buffer 
         yydone = REF FALSE;            #  eof found yet? 
         yybegin_i = REF 1;             # Current 'start state' for lexer 

         yybegin = \\ (internal::start_states::STARTSTATE x) =
                 yybegin_i := x;

fun lex () : internal::Result =
{ fun continue () = lex(); 
  { fun scan (s, accepting_leaves:  List( List( internal::Yyfinstate ) ), l, i0) =
         { fun action (i, NIL) => raise exception LEX_ERROR;
         action (i, NIL ! l)     => action (i - 1, l);
         action (i, (node ! acts) ! l) => 
                 case node
                 
                    internal::NN yyk => 
                         ( { fun yymktext () = substring(*yyb, i0, i-i0);
                             yypos = i0 + *yygone;
                         include package   user_declarations;
                         include package   internal::start_states;
  {   yybufpos := i;
      case yyk
 

                        #  Application actions 

  1 => { tab(); continue(); };
  101 => {   yytext=yymktext();
yybegin sss; add_string yytext; continue(); };
  103 => {   yytext=yymktext();
yybegin initial; add_string yytext; STR(dump_stk vb::SYMBOL); };
  105 => { error "unexpected newline in unclosed string"; };
  108 => { yybegin fff; push_line vb::SYMBOL; continue(); };
  11 => {   yytext=yymktext();
mk_sym yytext; };
  110 => { expand_tab(); continue(); };
  113 => {   yytext=yymktext();
add_string yytext; continue(); };
  115 => {   yytext=yymktext();
add_string yytext; continue(); };
  117 => {   yytext=yymktext();
add_string yytext; continue(); };
  119 => { result_stk := (newline ()) ! *result_stk; continue(); };
  121 => {   yytext=yymktext();
yybegin sss; add_string yytext; continue(); };
  123 => { error "unclosed string"; };
  125 => { error "non-Ascii character"; };
  127 => { error "illegal character"; };
  13 => {   yytext=yymktext();
mk_sym yytext; };
  15 => {   yytext=yymktext();
mk_sym yytext; };
  17 => {   yytext=yymktext();
mk_sym yytext; };
  19 => {   yytext=yymktext();
mk_sym yytext; };
  21 => {   yytext=yymktext();
mk_sym yytext; };
  23 => {   yytext=yymktext();
mk_sym yytext; };
  25 => {   yytext=yymktext();
mk_sym yytext; };
  29 => {   yytext=yymktext();
mk_sym yytext; };
  3 => { space := *space + 1; col := *col + 1; continue(); };
  32 => {   yytext=yymktext();
mk_tyvar yytext; };
  43 => {   yytext=yymktext();
mk_id yytext; };
  5 => { newline(); };
  63 => {   yytext=yymktext();
mk_con yytext; };
  66 => {   yytext=yymktext();
mk_con yytext; };
  7 => {   yytext=yymktext();
mk_sym yytext; };
  70 => {   yytext=yymktext();
mk_con yytext; };
  75 => {   yytext=yymktext();
mk_con yytext; };
  81 => {   yytext=yymktext();
mk_con yytext; };
  84 => {   yytext=yymktext();
yybegin ccc; add_string yytext; comment_nesting_depth := 1; continue(); };
  87 => { error "unmatched close comment"; };
  9 => {   yytext=yymktext();
mk_sym yytext; };
  90 => {   yytext=yymktext();
add_string yytext; comment_nesting_depth := *comment_nesting_depth + 1; continue(); };
  92 => { push_line vb::COMMENT; continue(); };
  95 => {   yytext=yymktext();
add_string yytext;
                    comment_nesting_depth := *comment_nesting_depth - 1;
                    if (*comment_nesting_depth == 0)
                        yybegin initial;
                        COM (dump_stk vb::COMMENT);
                    else
                        continue();
                    fi
                   ; };
  97 => { expand_tab(); continue(); };
  99 => {   yytext=yymktext();
add_string yytext; continue(); };
  _ => raise exception internal::LEXER_ERROR;

                 esac; }; } ); esac; end;    # fun action

         my { fin, trans } = unsafe::vector::get (internal::tab, s);
         new_accepting_leaves = fin ! accepting_leaves;
         if (l == *yybl)
             if (trans == .trans (vector::get (internal::tab, 0)))
               action (l, new_accepting_leaves);
         else        newchars= if *yydone ""; else yyinput 1024; fi;
             if ((size newchars) == 0)
                        yydone := TRUE;
                        if (l == i0)  user_declarations::eof ();
                                  else action (l, new_accepting_leaves); fi;
                  else if (l == i0)  yyb := newchars;
                             else yyb := substring(*yyb, i0, l-i0) + newchars; fi;
                       yygone := *yygone+i0;
                       yybl := size *yyb;
                       scan (s, accepting_leaves, l-i0, 0);
             fi;   # (size newchars) == 0
             fi;   # trans == $trans ...
          else new_char = char::to_int (unsafe::vector_of_chars::get(*yyb, l));
                 new_char = if (new_char < 128) new_char; else 128; fi;
                 new_state = char::to_int (unsafe::vector_of_chars::get (trans, new_char));
                 if (new_state == 0) action (l, new_accepting_leaves);
                 else scan (new_state, new_accepting_leaves, l+1, i0); fi;
         fi;
  };    # fun scan
/*
         start= if (substring(*yyb,*yybufpos - 1, 1)=="\n") *yybegin_i+1; else *yybegin_i; fi;
*/
         scan(*yybegin_i /* start */ , NIL, *yybufpos, *yybufpos);   # fun continue
    };   # fun continue
 };    # fun lex
  lex; 
  };   # fun make_lexer
};


Comments and suggestions to: bugs@mythryl.org

PreviousUpNext