<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          JavaCUPCUP 解析器生成器

          聯(lián)合創(chuàng)作 · 2023-10-02 05:54

          JavaCUP 是 Java 語言實(shí)現(xiàn)的 CUP 解析器生成器。

          示例代碼:

          // Simple Example Scanner Class 
          // scanner.java
          import java_cup.runtime.*;
          import java.io.*;
          //import sym;
          
          public class scanner implements java_cup.runtime.Scanner {
            /* single lookahead character */
            protected static int next_char;
            // since cup v11 we use SymbolFactories rather than Symbols
            private SymbolFactory sf = new DefaultSymbolFactory();
            private static FileReader fileReader;
            public scanner(FileReader fr){
                this.fileReader=fr;
            }
            /* advance input by one character */
            protected static void  advance()
              throws java.io.IOException
              { next_char = fileReader.read(); }
          
            /* initialize the scanner */
            public static void init()
              throws java.io.IOException
              { advance(); }
          
            /* recognize and return the next complete token */
            public Symbol next_token()
              throws java.io.IOException
              {
                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 sf.newSymbol("NUMBER",sym.NUMBER, new Integer(i_val));
          
                  case ';': advance(); return sf.newSymbol("SEMI",sym.SEMI);
                  case '+': advance(); return sf.newSymbol("PLUS",sym.PLUS);
                  case '-': advance(); return sf.newSymbol("MINUS",sym.MINUS);
                  case '*': advance(); return sf.newSymbol("TIMES",sym.TIMES);
                  case '/': advance(); return sf.newSymbol("DIVIDE",sym.DIVIDE);
                  case '%': advance(); return sf.newSymbol("MOD",sym.MOD);
                  case '(': advance(); return sf.newSymbol("LPAREN",sym.LPAREN);
                  case ')': advance(); return sf.newSymbol("RPAREN",sym.RPAREN);
          
                  case -1: return sf.newSymbol("EOF",sym.EOF);
          
                  default: 
                    /* in this simple scanner we just ignore everything else */
                    advance();
                  break;
                }
              }
          };

           

          瀏覽 16
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  黄色大尺度视频 | 超碰在线看不卡了 | 在线无码视频播放 | 沈先生探花| 导航黄色一级片 |