home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 1997 March / VPR9703A.ISO / VPR_DATA / DOGA / SOURCES / POLYEDIT.LZH / ML / TEST.C < prev    next >
C/C++ Source or Header  |  1995-01-06  |  1KB  |  86 lines

  1.  
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <assert.h>
  5.  
  6. #include "lib.h"
  7. #include "ml.h"
  8.  
  9. static    void    StreamInit( void );
  10. static    int        StreamOutput( int, int, DataStruct* );
  11.  
  12. void    main( argc, argv )
  13. int        argc ;
  14. char    *argv[] ;
  15. {
  16.     int        i ;
  17.     int        pdebug = FALSE, edebug = FALSE ;
  18.  
  19.     MLInit();
  20.  
  21.     ParseInit();
  22.     StreamInit();
  23.  
  24.     for( i = 1 ; i < argc ; i++ )
  25.     {
  26.         if ( argv[i][0] == '-' )
  27.         {
  28.             switch( argv[i][1] )
  29.             {
  30.                 case 'P':
  31.                 case 'p':
  32.                     pdebug = TRUE ;
  33.                     break ;
  34.                 case 'E':
  35.                 case 'e':
  36.                     edebug = TRUE ;
  37.                     break ;
  38.             }
  39.             DebugMode( pdebug, edebug );
  40.         }
  41.         else
  42.         {
  43.             /*    構文解析    */
  44.             printf( "open %s\n", argv[i] );
  45.             ParseSentenseAll( argv[i] );
  46.         }
  47.     }
  48.  
  49. #if    1
  50.     /*    実行    */
  51.     ExecInit();
  52.     ExecSentenseAll();
  53.     ExecExit();
  54. #endif
  55.  
  56.     ParseExit();
  57. }
  58.  
  59. DataStruct    StreamOut ;
  60. int        StreamClassID ;
  61.  
  62. static    void    StreamInit()
  63. {
  64.     StreamClassID = NewClass( "Stream", 0 );
  65.     StreamOut.type = TYPE_OBJECT ;
  66.     StreamOut.od.ptr = ObjectAlloc( 0, StreamClassID );
  67.     NewConst( "cout", &StreamOut );
  68.  
  69.     NewOperator( StreamClassID, OPE_LSFT, StreamOutput );
  70. }
  71.  
  72. static    int        StreamOutput( ident, args, buf )
  73. int        ident ;
  74. int        args ;
  75. DataStruct    *buf ;
  76. {
  77.     assert( args == 2 );
  78.     ident = FunctionName( "print" );
  79.     assert( ident > 0 );
  80.     CallFunction( ident, 1, buf+1 );
  81.  
  82.     StackPush( &buf[0] );
  83.  
  84.     return RETURN_RETURN ;
  85. }
  86.