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

📄 scanner.java

📁 一个非常好的检索工具
💻 JAVA
字号:
// $Id: Scanner.java,v 1.3 1999/11/04 14:02:18 shields Exp $// This software is subject to the terms of the IBM Jikes Compiler// License Agreement available at the following URL:// http://www.ibm.com/research/jikes.// Copyright (C) 1983, 1999, International Business Machines Corporation// and others.  All Rights Reserved.// You must accept the terms of that agreement to use this software.//// The Scanner object//class Scanner implements exprsym{    int next_byte;    Option option;    LexStream lex_stream;    Scanner(Option option, LexStream lex_stream)    {        this.lex_stream = lex_stream;        this.option = option;    }    //    //    //    void skip_spaces() throws java.io.IOException    {        while (next_byte != '\n' && Character.isSpace((char) next_byte))            next_byte = System.in.read();        return;    }    //    //    //    String scan_symbol() throws java.io.IOException    {        StringBuffer buffer = new StringBuffer();        while (next_byte != '\n' && (! Character.isSpace((char) next_byte)))        {            buffer.append((char) next_byte);        }        return buffer.toString();    }    //    //    //    void scan() throws java.io.IOException    {        //        // Do not use token indexed at location 0.        //        Token start_token = new Token();        start_token.kind = 0;        start_token.name = "";        lex_stream.tokens.addElement(start_token);        next_byte = System.in.read();        for (skip_spaces(); next_byte != '\n'; skip_spaces())        {            Token token = new Token();            switch(next_byte)            {                case '+':                     token.kind = TK_PLUS;                     token.name = "+";                     break;                case '-':                     token.kind = TK_MINUS;                     token.name = "-";                     break;                case '*':                     token.kind = TK_STAR;                     token.name = "*";                     break;                case '/':                     token.kind = TK_SLASH;                     token.name = "/";                     break;                case '(':                     token.kind = TK_LPAREN;                     token.name = "(";                     break;                case ')':                     token.kind = TK_RPAREN;                     token.name = ")";                     break;                default:                     StringBuffer buffer = new StringBuffer();                     if (! Character.isDigit((char) next_byte))                     {                         token.kind = TK_ERROR;                         while (next_byte != '\n' && (! Character.isSpace((char) next_byte)))                         {                             buffer.append((char) next_byte);                             next_byte = System.in.read();                         }                         System.out.println("The token \"" + buffer.toString() + "\" is illegal");                      }                     else                     {                         token.kind = TK_NUMBER;                         do                         {                             buffer.append((char) next_byte);                             next_byte = System.in.read();                         } while (next_byte != '\n' && Character.isDigit((char) next_byte));                    }                    token.name = buffer.toString();	    }            if (token.kind != TK_ERROR && token.kind != TK_NUMBER)                next_byte = System.in.read();                lex_stream.tokens.addElement(token);        }        Token end_token = new Token();        end_token.kind = TK_EOF;        end_token.name = "";        lex_stream.tokens.addElement(end_token);        return;    }}

⌨️ 快捷键说明

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