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

📄 scanner.java

📁 用Java实现的编译器。把源代码编译成SPARC汇编程序
💻 JAVA
字号:
// Simple Example Scanner Classpackage java_cup.simple_calc;import java_cup.runtime.Symbol;public class scanner implements java_cup.runtime.Scanner {  final java.io.InputStream instream;  public scanner(java.io.InputStream is) throws java.io.IOException {    instream = is;  }  public scanner() throws java.io.IOException { this(System.in); }  /* single lookahead character */  protected int next_char = -2;  /* advance input by one character */  protected void advance()    throws java.io.IOException    { next_char = instream.read(); }  /* initialize the scanner */  private void init()    throws java.io.IOException    { advance(); }  /* recognize and return the next complete token */  public Symbol next_token()    throws java.io.IOException    {      if (next_char==-2) init(); // set stuff up first time we are called.      for (;;)        switch (next_char)	  {	    case '0': case '1': case '2': case '3': case '4': 	    case '5': case '6': case '7': case '8': case '9': 	      /* parse a decimal integer */	      int i_val = 0;	      do {	        i_val = i_val * 10 + (next_char - '0');	        advance();	      } while (next_char >= '0' && next_char <= '9');	    return new Symbol(sym.NUMBER, new Integer(i_val));	    case ';': advance(); return new Symbol(sym.SEMI);	    case '+': advance(); return new Symbol(sym.PLUS);	    case '-': advance(); return new Symbol(sym.MINUS);	    case '*': advance(); return new Symbol(sym.TIMES);	    case '/': advance(); return new Symbol(sym.DIVIDE);	    case '%': advance(); return new Symbol(sym.MOD);	    case '(': advance(); return new Symbol(sym.LPAREN);	    case ')': advance(); return new Symbol(sym.RPAREN);	    case -1: return new Symbol(sym.EOF);	    default: 	      /* in this simple scanner we just ignore everything else */	      advance();	    break;	  }    }};

⌨️ 快捷键说明

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