📄 iclgroup.java
字号:
package com.sri.oaa2.icl;
import java.util.*;
import java.util.zip.CRC32;
public final class IclGroup extends IclComposite
{
/// start character
protected char starter;
/// end character
protected char ender;
/**
* Create a new, empty group with the given starter character.
*/
IclGroup(char c)
{
setType(OaaPrologVocabTokenTypes.GROUP);
setStarter(c);
setChildren(new ArrayList());
}
/**
* Create a new group with the given elements and the given starter character.
*
* @param ArrayList args: the children
* @param char s: the starter character
*/
public IclGroup(List args, char s)
{
super(OaaPrologVocabTokenTypes.GROUP);
setChildren(new ArrayList(args));
setStarter(s);
}
/**
* Create a new group with a single term and a start character.
*/
public IclGroup(IclTerm first, char start)
{
super(OaaPrologVocabTokenTypes.GROUP);
setStarter(start);
setEnder(start);
add(first);
}
/**
* Create a new group with one term. Uses '{' and '}' as the start
* and end characters, respectively.
*/
public IclGroup(IclTerm first)
{
super(OaaPrologVocabTokenTypes.GROUP);
setStarter('{');
setEnder('}');
add(first);
}
/**
* Two terms.
*/
public IclGroup(IclTerm first, IclTerm second)
{
super(OaaPrologVocabTokenTypes.GROUP);
setStarter('{');
setEnder('}');
add(first);
add(second);
}
/**
* Three terms.
*/
public IclGroup(IclTerm first, IclTerm second, IclTerm third)
{
super(OaaPrologVocabTokenTypes.GROUP);
setStarter('{');
setEnder('}');
add(first);
add(second);
add(third);
}
/**
* Four terms.
*/
public IclGroup(IclTerm first, IclTerm second, IclTerm third, IclTerm fourth)
{
super(OaaPrologVocabTokenTypes.GROUP);
setStarter('{');
setEnder('}');
add(first);
add(second);
add(third);
add(fourth);
}
/**
* Create an empty group.
*/
public IclGroup()
{
super(OaaPrologVocabTokenTypes.GROUP);
setStarter('{');
setEnder('}');
}
/** Accept the visitor. **/
protected final Object accept(OaaPrologVisitor visitor, Object data) {
return visitor.visit(this, data);
}
/**
* Get the starter character.
*/
public final char getStarter()
{
return starter;
}
/**
* Set the starter character.
*/
public final void setStarter(char s)
{
starter = s;
switch(s) {
case '(':
setEnder(')');
break;
default:
setEnder('}');
break;
}
}
/**
* Set the starter character from a String.
*/
public final void setStarterFromString(String s)
{
starter = s.charAt(0);
}
/**
* Get the ending character.
*/
public final char getEnder()
{
return ender;
}
/**
* Set the ending character.
*/
public final void setEnder(char s)
{
ender = s;
}
/**
* @deprecated use setStarter and setEnder
*/
public final void setOuter(char starter)
{
setStarter(starter);
switch(starter) {
case '(':
setEnder(')');
break;
default:
setStarter('{');
setEnder('}');
}
}
/**
* @deprecated use getStarter
*/
public final char iclStarter()
{
return getStarter();
}
public boolean equals(Object o)
{
if(!(o instanceof IclGroup)) {
return false;
}
IclGroup g = (IclGroup)o;
if(g.getStarter() != this.getStarter()) {
return false;
}
if(g.getEnder() != this.getEnder()) {
return false;
}
return super.equals(o);
}
private static String EXTRACRC = "_GROUP";
void addExtraCrcData(CRC32 inCrc)
{
inCrc.update(EXTRACRC.getBytes());
inCrc.update(Character.toString(this.getStarter()).getBytes());
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -