main.sa
上传用户:afrynkmhm
上传日期:2007-01-06
资源大小:1262k
文件大小:1k
源码类别:

编译器/解释器

开发平台:

Others

  1. class MAIN is
  2.    shared filter : ANTLR_TOKEN_STREAM_HIDDEN_TOKEN_FILTER;
  3.    main ( args : ARRAY{STR} ) is
  4.       if ( args.size < 2 ) then
  5.  #OUT + "usage " + args[0] + " <filename>n";
  6.  return;
  7.       end;
  8.  
  9.       f : IFSTREAM := IFSTREAM::open_for_read( args[1] );
  10.       if ( void(f) ) then
  11.  #OUT + "file "" + args[1] + "" not foundn";
  12.  return;
  13.       end;
  14.       lexer ::= #INSTR_LEXER{ANTLR_COMMON_HIDDEN_STREAM_TOKEN}( f );
  15.       filter ::= #ANTLR_TOKEN_STREAM_HIDDEN_TOKEN_FILTER( lexer );
  16.       if ( void( filter ) ) then
  17.  #OUT + "created voidn";
  18.       end;
  19.        
  20.       parser ::= #INSTR_PARSER{ANTLR_COMMON_HIDDEN_STREAM_TOKEN,
  21.        ANTLR_COMMON_AST_WITH_HIDDEN_TOKENS}( filter );
  22.       filter.hide( parser.WS );
  23.       filter.hide( parser.SL_COMMENT );
  24.       
  25.       protect
  26.  parser.slist;
  27.       when $STR then
  28.  #ERR + "error: " + exception.str;
  29.       end;
  30.       t : ANTLR_COMMON_AST_WITH_HIDDEN_TOKENS := parser.ast;
  31.       walker ::= #INSTR_TREE_WALKER{ANTLR_COMMON_AST_WITH_HIDDEN_TOKENS}( filter );
  32.       
  33.       protect
  34.  walker.slist(t);
  35.       when $STR then
  36.  #ERR + "error: " + exception.str;
  37.       end;
  38.    end;
  39. end;