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

📄 complexsymbolfactory.java

📁 java语法解释器生成器
💻 JAVA
字号:
package java_cup.runtime;/** * Default Implementation for SymbolFactory, creates * plain old Symbols * * @version last updated 27-03-2006 * @author Michael Petter *//* *************************************************  class DefaultSymbolFactory  interface for creating new symbols   ***************************************************/public class ComplexSymbolFactory implements SymbolFactory{    public static class Location {        private String unit="unknown";        private int line, column;        public Location(String unit, int line, int column){            this.unit=unit;            this.line=line;            this.column=column;        }        public Location(int line, int column){            this.line=line;            this.column=column;        }        public String toString(){            return unit+":"+line+"/"+column;        }        public int getColumn(){            return column;        }        public int getLine(){            return line;        }        public String getUnit(){            return unit;        }    }    /**     * ComplexSymbol with detailed Location Informations and a Name     */    public static class ComplexSymbol extends Symbol {        protected String name;        protected Location xleft,xright;        public ComplexSymbol(String name, int id) {            super(id);            this.name=name;        }        public ComplexSymbol(String name, int id, Object value) {            super(id,value);            this.name=name;        }        public String toString(){            if (xleft==null || xright==null) return "Symbol: "+name;            return "Symbol: "+name+" ("+xleft+" - "+xright+")";        }        public ComplexSymbol(String name, int id, int state) {            super(id,state);            this.name=name;        }        public ComplexSymbol(String name, int id, Symbol left, Symbol right) {            super(id,left,right);            this.name=name;            if (left!=null)  this.xleft = ((ComplexSymbol)left).xleft;            if (right!=null) this.xright= ((ComplexSymbol)right).xright;        }        public ComplexSymbol(String name, int id, Location left, Location right) {            super(id);            this.name=name;            this.xleft=left;            this.xright=right;        }        public ComplexSymbol(String name, int id, Symbol left, Symbol right, Object value) {            super(id,value);            this.name=name;            if (left!=null)  this.xleft = ((ComplexSymbol)left).xleft;            if (right!=null) this.xright= ((ComplexSymbol)right).xright;        }        public ComplexSymbol(String name, int id, Location left, Location right, Object value) {            super(id,value);            this.name=name;            this.xleft=left;            this.xright=right;        }        public Location getLeft(){            return xleft;        }        public Location getRight(){            return xright;        }    }    // Factory methods    public Symbol newSymbol(String name, int id, Location left, Location right, Object value){        return new ComplexSymbol(name,id,left,right,value);    }    public Symbol newSymbol(String name, int id, Location left, Location right){        return new ComplexSymbol(name,id,left,right);    }    public Symbol newSymbol(String name, int id, Symbol left, Symbol right, Object value){        return new ComplexSymbol(name,id,left,right,value);    }    public Symbol newSymbol(String name, int id, Symbol left, Symbol right){        return new ComplexSymbol(name,id,left,right);    }    public Symbol newSymbol(String name, int id){        return new ComplexSymbol(name,id);    }    public Symbol newSymbol(String name, int id, Object value){        return new ComplexSymbol(name,id,value);    }    public Symbol startSymbol(String name, int id, int state){        return new ComplexSymbol(name,id,state);    }}

⌨️ 快捷键说明

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