• 大小: 26KB
    文件类型: .zip
    金币: 2
    下载: 1 次
    发布日期: 2021-12-02
  • 语言: 其他
  • 标签: 国软  桂浩  CMM  

资源简介

武大国软桂浩解释器构造实验三,同样适用于李莉老师的实验

资源截图

代码片段和文件信息

package com.shaw.cmmjava;

import java.io.BufferedReader;
import java.io.IOException;
import java.util.linkedList;

import com.shaw.cmmjava.model.Token;

public class Lexer {
    private static BufferedReader mBufferedReader;
    private static int currentInt;
    private static char currentChar;
    private static int lineNo;
    
    public static linkedList lexicalAnalyse(BufferedReader br) throws IOException {
        lineNo = 1;
        mBufferedReader = br;
        linkedList tokenList = new linkedList();
        StringBuilder sb = new StringBuilder();
        readChar();
        while(currentInt != -1) {
            //消耗空白字符
            if (currentChar == ‘\n‘
                    || currentChar == ‘\r‘
                    || currentChar == ‘\t‘
                    || currentChar == ‘\f‘
                    || currentChar == ‘ ‘) {
                readChar();
                continue;
            }
            //简单特殊符号
            switch (currentChar) {
            case ‘;‘:
                tokenList.add(new Token(Token.SEMI lineNo));
                readChar();
                continue;
            case ‘+‘:
                tokenList.add(new Token(Token.PLUS lineNo));
                readChar();
                continue;
            case ‘-‘:
                tokenList.add(new Token(Token.MINUS lineNo));
                readChar();
                continue;
            case ‘*‘:
                tokenList.add(new Token(Token.MUL lineNo));
                readChar();
                continue;
            case ‘(‘:
                tokenList.add(new Token(Token.LPARENT lineNo));
                readChar();
                continue;
            case ‘)‘:
                tokenList.add(new Token(Token.RPARENT lineNo));
                readChar();
                continue;
            case ‘[‘:
                tokenList.add(new Token(Token.LBRACKET lineNo));
                readChar();
                continue;
            case ‘]‘:
                tokenList.add(new Token(Token.RBRACKET lineNo));
                readChar();
                continue;
            case ‘{‘:
                tokenList.add(new Token(Token.LBRACE lineNo));
                readChar();
                continue;
            case ‘}‘:
                tokenList.add(new Token(Token.RBRACE lineNo));
                readChar();
                continue;
            // no default:
            }
            //复合特殊符号
            if (currentChar == ‘/‘) {
                readChar();
                if (currentChar == ‘*‘) {//多行注释
//                    tokenList.add(new Token(Token.LCOM lineNo));
                    readChar();
                    while (true) {//使用死循环消耗多行注释内字符
                        if (currentChar == ‘*‘) {//如果是*那么有可能是多行注释结束的地方
                            readChar();
                            if (currentChar == ‘/‘) {//多行注释结束符号
//                                tokenList.add(new Token(Token.RCOM lineNo));
                        

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2017-10-29 13:35  cmmjava_parser3\
     文件         226  2015-02-07 17:08  cmmjava_parser3\.classpath
     文件         373  2015-02-07 17:08  cmmjava_parser3\.project
     目录           0  2017-10-29 13:35  cmmjava_parser3\src\
     目录           0  2017-10-29 13:35  cmmjava_parser3\src\com\
     目录           0  2017-10-29 13:35  cmmjava_parser3\src\com\shaw\
     目录           0  2017-10-29 13:35  cmmjava_parser3\src\com\shaw\cmmjava\
     文件        8086  2015-01-23 17:20  cmmjava_parser3\src\com\shaw\cmmjava\Lexer.java
     文件         851  2015-02-07 17:16  cmmjava_parser3\src\com\shaw\cmmjava\Main.java
     文件       13712  2015-01-06 18:04  cmmjava_parser3\src\com\shaw\cmmjava\Parser.java
     文件        1241  2015-02-07 17:09  cmmjava_parser3\src\com\shaw\cmmjava\Util.java
     目录           0  2017-10-29 13:35  cmmjava_parser3\src\com\shaw\cmmjava\exception\
     文件         206  2015-01-06 18:04  cmmjava_parser3\src\com\shaw\cmmjava\exception\ParserException.java
     目录           0  2017-10-29 13:35  cmmjava_parser3\src\com\shaw\cmmjava\model\
     文件        2390  2014-12-31 00:18  cmmjava_parser3\src\com\shaw\cmmjava\model\Symbol.java
     文件        6814  2015-01-23 16:54  cmmjava_parser3\src\com\shaw\cmmjava\model\Token.java
     文件        5367  2015-01-01 22:57  cmmjava_parser3\src\com\shaw\cmmjava\model\TreeNode.java
     文件        2505  2015-02-07 17:10  cmmjava_parser3\src\com\shaw\cmmjava\model\Value.java
     目录           0  2017-10-29 13:35  cmmjava_parser3\可执行文件\
     文件       14392  2015-02-07 17:27  cmmjava_parser3\可执行文件\parser.jar
     文件          33  2015-02-07 17:28  cmmjava_parser3\可执行文件\用法.txt

评论

共有 条评论