lr0item.java
来自「有关编译器的编译器.」· Java 代码 · 共 100 行
JAVA
100 行
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * This file is part of SableCC. * * See the file "LICENSE" for copyright information and the * * terms and conditions for copying, distribution and * * modification of SableCC. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */package org.sablecc.sablecc;import java.util.*;final class LR0Item implements Cloneable, Comparable{ final int production; final int position; LR0Item(int production, int position) { this.production = production; this.position = position; } public int compareTo(Object object) { LR0Item item = (LR0Item) object; int result = production - item.production; if(result == 0) { result = position - item.position; } return result; } public Object clone() { return new LR0Item(production, position); } public boolean equals(Object obj) { if((obj == null) || (obj.getClass() != this.getClass())) { return false; } LR0Item item = (LR0Item) obj; return (item.production == production) && (item.position == position); } public int hashCode() { return (production * 13) ^ (position * 17); } public String toString() { StringBuffer result = new StringBuffer(); String prodStr = (Production.production(production)).toString(); int pos = 0; StringTokenizer list = new StringTokenizer(prodStr, "= "); // we know that there is at least one token (lhs) result.append(list.nextToken()); result.append(" ="); while(list.hasMoreElements()) { String tmp = list.nextToken(); if(pos == position) { result.append(" * "); result.append(tmp); } else { result.append(" "); result.append(tmp); } pos++; } if(pos == position) { result.append(" *"); } return "[ " + result + " ]"; }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?