⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mini.java

📁 CroftSoft Code Library是一个开源的可移植的纯Java游戏库
💻 JAVA
字号:
     package com.croftsoft.apps.compiler.mini;

     import java.io.*;

     import java_cup.runtime.Symbol;

     import com.croftsoft.apps.compiler.mini.code.*;
     import com.croftsoft.apps.compiler.mini.node.*;
     import com.croftsoft.apps.compiler.mini.parse.*;

     /*********************************************************************
     * Mini programming language translator.
     *
     * <P>
     *
     * Built using the
     *
     * CUP Parser Generator for Java
     * (<A HREF="http://www.cs.princeton.edu/~appel/modern/java/CUP/">
     * http://www.cs.princeton.edu/~appel/modern/java/CUP/</A>)
     *
     * and
     *
     * JLex: A Lexical Analyzer Generator for Java
     * (<A HREF="http://www.cs.princeton.edu/~appel/modern/java/JLex/">
     * http://www.cs.princeton.edu/~appel/modern/java/JLex/</A>).
     *
     * @version
     *   1999-04-26
     * @author
     *   <A HREF="http://www.alumni.caltech.edu/~croft/">David W. Croft</A>
     *********************************************************************/

     public class  Mini
     //////////////////////////////////////////////////////////////////////
     //////////////////////////////////////////////////////////////////////
     {

     private static final boolean  DO_DEBUG_PARSE = false;

     //////////////////////////////////////////////////////////////////////
     //////////////////////////////////////////////////////////////////////

     public static void  main ( String [ ]  args )
       throws Exception
     //////////////////////////////////////////////////////////////////////
     {
       Reader  reader = new InputStreamReader ( System.in );
       PrintStream  printStream = System.out;
       String  outputFilename = "MiniProgram";

       if ( args.length > 0 )
       {
         reader = new FileReader ( args [ 0 ] );
       }

       if ( args.length > 1 )
       {
         printStream
           = new PrintStream ( new FileOutputStream ( args [ 1 ] ) );
       }

       if ( args.length > 0 )
       {
         String  filename = args.length > 1 ? args [ 1 ] : args [ 0 ];

         int  index = filename.lastIndexOf ( '.' );

         if ( index < 0 )
         {
           outputFilename = filename;
         }
         else
         {
           outputFilename = filename.substring ( 0, index );
         }
       }

       translate ( reader, printStream, outputFilename );
     }

     public static void  translate (
       Reader  reader, PrintStream  printStream, String  outputFilename )
       throws Exception
     //////////////////////////////////////////////////////////////////////
     {
       ProgramMiniNode  programMiniNode = parse ( reader );

       MiniNodeCodeVisitor  miniNodeCodeVisitor
         = new JavaSourceMiniNodeCodeVisitor (
         printStream, outputFilename );

       programMiniNode.generate ( miniNodeCodeVisitor );
     }

     public static ProgramMiniNode  parse ( InputStream  inputStream )
     //////////////////////////////////////////////////////////////////////
     {
       return parse ( new MiniScanner ( inputStream ) );
     }

     public static ProgramMiniNode  parse ( Reader  reader )
     //////////////////////////////////////////////////////////////////////
     {
       return parse ( new MiniScanner ( reader ) );
     }

     public static ProgramMiniNode  parse ( MiniScanner  miniScanner )
     //////////////////////////////////////////////////////////////////////
     {
       MiniParser  parser = new MiniParser ( miniScanner );

       Symbol  parseTree = null;

       try
       {
         if ( DO_DEBUG_PARSE )
         {
           parseTree = parser.debug_parse ( );
         }
         else
         {
           parseTree = parser.parse ( );
         }
       }
       catch ( Exception  ex )
       {
         ex.printStackTrace ( );
       }

       return ( ProgramMiniNode ) parseTree.value;
     }

     //////////////////////////////////////////////////////////////////////
     //////////////////////////////////////////////////////////////////////
     }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -