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

📄 tprogram.java

📁 java语法解释器生成器
💻 JAVA
字号:
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Copyright (C) 2001       Gerwin Klein <lsf@jflex.de>                    * * Copyright (C) 2001       Bernhard Rumpe <rumpe@in.tum.de>               * * All rights reserved.                                                    * *                                                                         * * This program is free software; you can redistribute it and/or modify    * * it under the terms of the GNU General Public License. See the file      * * COPYRIGHT for more information.                                         * *                                                                         * * This program is distributed in the hope that it will be useful,         * * but WITHOUT ANY WARRANTY; without even the implied warranty of          * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           * * GNU General Public License for more details.                            * *                                                                         * * You should have received a copy of the GNU General Public License along * * with this program; if not, write to the Free Software Foundation, Inc., * * 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                 * *                                                                         * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *//** * AST node for the whole program (top node). *  * Also contains two symbol tables, one for input variables, * one for function names.  * * All operations like context check, symbol table build up * etc. start here. */ class Tprogram implements AST {  Tparlist parlist;           // input variables  Tdekllist dekllist;         // function declarations   Texplist explist;           // result expressions  Texplist arguments;         // input values    public Tprogram(Tparlist p, Tdekllist d, Texplist e, Texplist a) {    parlist=p;    dekllist=d;    explist=e;    arguments=a;  }  public String toString() {    return("Program:\n=============\ninput "+parlist+           "\nfunctions\n"+dekllist+"\noutput "+explist+           "\narguments "+arguments+"\nend");  }  SymTab inputs;      // table of input variables  SymTab functions;   // table of functions  public void setSymtabs() {          // calculate symbol table entries    inputs = new SymTab();            // set input variables    parlist.setSymtab(inputs, true, 0);    functions = new SymTab(inputs);    dekllist.setSymtab(functions);  }  public void printSymtabs() {    System.out.print("Input variables-\n"+inputs);    System.out.print("Functions-\n"+functions);    dekllist.printSymtabs();  }  public void checkcontext() {    dekllist.checkcontext();          // CoCo (DefFun,DefVar,Arity)                                      // in function bodies    explist.checkcontext(functions);  // CoCo (DefFun,DefVar,Arity)                                      // in result expressions    arguments.checkcontext(new SymTab()); // CoCo  (constants)                                          // in arguments    if (arguments.length()!=inputs.size())      Main.error("Argument list and input variables list differ!");  }  public void prepInterp() {          // set pointers and indices    dekllist.prepInterp(functions);    explist.prepInterp(functions);  }    public void interpret() {        int[] inputEnv = new int[inputs.size()];      // set input     arguments.interpret(null,null,inputEnv,0);    System.out.println("Result:\n=============");    int[] ergebnis = new int[explist.length()];    explist.interpret(inputEnv,null,ergebnis,0);  // calculate result    int i;    for (i=explist.length()-1; i > 0; i--)      System.out.print(ergebnis[i]+",  ");    System.out.println(ergebnis[i]);  }}

⌨️ 快捷键说明

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