// @copyright@
// This file is part of nzdis-kif package. See the file LICENSE for copyright information
// and the terms and conditions for copying, distribution and modification of nzdis-kif package.
package nzdis.lang.kif.tool;
/**/
import nzdis.lang.kif.analysis.*;
import nzdis.lang.kif.node.*;
import java.util.*;
import java.io.*;
/**
* Abstract Syntax Tree to ASCII converter. This class is
* responsible for conversion the tree structure into ascii
* well-formed KIF format.
*
*@author Mariusz Nowostawski
*@version @version@ $Revision: 1.1 $
*/
class Kif2AsciiWalker extends DepthFirstAdapter {
int indent = 0;
StringBuffer result;
// Geoff: this param says if a new line should be added preceding AKnowledgeBase.
boolean addNewLine = false;
public void setPrefixNewLine(boolean newLine){
this.addNewLine = newLine;
}
/**
* Converts given Node and its tree structure into ascii.
*@param Node to be converted into ascii
*@return ascii representation of the node and all its children
*/
public StringBuffer toAscii(Node ast){
result = new StringBuffer();
ast.apply(this);
return result;
}
/**
* Produce empty string which length is len.
*/
String giveIndent(int len){
String s = new String ("");
for(int i=0; i < len; i++) s += " ";
return s;
}
/**
* Top level kif tree node.
*/
public void caseAKnowledgeBase(AKnowledgeBase node)
{
inAKnowledgeBase(node);
{
Object temp[] = node.getForm().toArray();
for(int i = 0; i < temp.length; i++)
{
indent = 0;
if(addNewLine) // addNewLine stuff by GRB.
result.append(" "); // changed from "\n" to " " GRB
addNewLine = true;
((PForm) temp[i]).apply(this);
}
}
outAKnowledgeBase(node);
}
/****** Unrestricted definitions ***********/
/**
* Kif defobject unrestricted definition.
*/
public void caseADefobjectUnrestricted(ADefobjectUnrestricted node)
{
inADefobjectUnrestricted(node);
int begin_indent = indent;
result.append("(defobject "); indent += 11;
if(node.getConstant() != null) {
node.getConstant().apply(this);
}
int local_indent = indent+1;
if(node.getString() != null) {
result.append(" "); indent += 1;
String s = node.getString().toString().trim();
result.append(s);
indent += s.length();
}
result.append(" "); indent += 1;
Object temp[] = node.getSentence().toArray();
for(int i = 0; i < temp.length; i++) {
if(temp.length > 1){
result.append("\n").append(giveIndent(local_indent));
indent = local_indent;
}
((PSentence) temp[i]).apply(this);
}
if(temp.length > 1){
result.append("\n").append(giveIndent(begin_indent)).append(")");
indent = begin_indent+1;
}
else
result.append(")"); indent += 1;
outADefobjectUnrestricted(node);
}
/**
* Kif deffunction unrestricted definition.
*/
public void caseADeffunctionUnrestricted(ADeffunctionUnrestricted node)
{
inADeffunctionUnrestricted(node);
int begin_indent = indent;
result.append("(deffunction "); indent += 13;
if(node.getConstant() != null) {
node.getConstant().apply(this);
}
int local_indent = indent+1;
if(node.getString() != null) {
result.append(" "); indent += 1;
String s = node.getString().toString().trim();
result.append(s);
indent += s.length();
}
result.append(" "); indent += 1;
Object temp[] = node.getSentence().toArray();
for(int i = 0; i < temp.length; i++) {
if(temp.length > 1){
result.append("\n").append(giveIndent(local_indent));
indent = local_indent;
}
((PSentence) temp[i]).apply(this);
}
if(temp.length > 1){
result.append("\n").append(giveIndent(begin_indent)).append(")");
indent = begin_indent+1;
}
else
result.append(")"); indent += 1;
outADeffunctionUnrestricted(node);
}
/**
* Kif defrelation unrestricted definition.
*/
public void caseADefrelationUnrestricted(ADefrelationUnrestricted node)
{
inADefrelationUnrestricted(node);
int begin_indent = indent;
result.append("(defrelation "); indent += 13;
if(node.getConstant() != null) {
node.getConstant().apply(this);
}
int local_indent = indent+1;
if(node.getString() != null) {
result.append(" "); indent += 1;
String s = node.getString().toString().trim();
result.append(s);
indent += s.length();
}
result.append(" "); indent += 1;
Object temp[] = node.getSentence().toArray();
for(int i = 0; i < temp.length; i++) {
if(temp.length > 1){
result.append("\n").append(giveIndent(local_indent));
indent = local_indent;
}
((PSentence) temp[i]).apply(this);
}
if(temp.length > 1){
result.append("\n");
result.append(giveIndent(begin_indent)).append(")");
indent = begin_indent+1;
}
else
result.append(")"); indent += 1;
outADefrelationUnrestricted(node);
}
/**
* Kif deflogical unrestricted definition.
*/
public void caseADeflogicalUnrestricted(ADeflogicalUnrestricted node)
{
inADeflogicalUnrestricted(node);
int begin_indent = indent;
result.append("(deflogical "); indent += 12;
if(node.getConstant() != null) {
node.getConstant().apply(this);
}
int local_indent = indent+1;
if(node.getString() != null) {
result.append(" "); indent += 1;
String s = node.getString().toString().trim();
result.append(s);
indent += s.length();
}
result.append(" "); indent += 1;
Object temp[] = node.getSentence().toArray();
for(int i = 0; i < temp.length; i++) {
if(temp.length > 1){
result.append("\n").append(giveIndent(local_indent));
indent = local_indent;
}
((PSentence) temp[i]).apply(this);
}
if(temp.length > 1){
result.append("\n").append(giveIndent(begin_indent)).append(")\n");
result.append(giveIndent(begin_indent));
indent = begin_indent;
}
else
result.append(")"); indent += 1;
outADeflogicalUnrestricted(node);
}
/****** Complete definitions ***********/
/**
* Kif defobject complete definition
*/
public void caseADefobjectComplete(ADefobjectComplete node)
{
inADefobjectComplete(node);
int begin_indent = indent;
result.append("(defobject "); indent += 11;
if(node.getConstant() != null) {
node.getConstant().apply(this);
}
if(node.getString() != null) {
result.append(" "); indent += 1;
String s = node.getString().toString();
result.append(s);
indent += s.length();
}
result.append(" := "); indent += 4;
if(node.getTerm() != null) {
node.getTerm().apply(this);
}
result.append(")"); indent += 1;
outADefobjectComplete(node);
}
/**
* Kif deffunction complete definition
*/
public void caseADeffunctionComplete(ADeffunctionComplete node)
{
inADeffunctionComplete(node);
int begin_indent = indent;
result.append("(deffunction "); indent += 13;
if(node.getConstant() != null) {
node.getConstant().apply(this);
}
result.append(" ("); indent += 2;
Object temp[] = node.getIndvar().toArray();
for(int i = 0; i < temp.length; i++) {
((PIndvar) temp[i]).apply(this);
}
result.append(")"); indent += 1;
if(node.getString() != null) {
result.append(" "); indent += 1;
String s = node.getString().toString();
result.append(s);
indent += s.length();
}
result.append(" := "); indent += 4;
if(node.getTerm() != null) {
node.getTerm().apply(this);
}
result.append(")"); indent += 1;
outADeffunctionComplete(node);
}
/**
* Kif defrelation complete definition
*/
public void caseADefrelationComplete(ADefrelationComplete node)
{
inADefrelationComplete(node);
int begin_indent = indent;
result.append("(defrelation "); indent += 13;
if(node.getConstant() != null) {
node.getConstant().apply(this);
}
result.append(" ("); indent += 2;
Object temp[] = node.getIndvar().toArray();
for(int i = 0; i < temp.length; i++) {
((PIndvar) temp[i]).apply(this);
}
result.append(")"); indent += 1;
if(node.getString() != null) {
result.append(" "); indent += 1;
String s = node.getString().toString();
result.append(s);
indent += s.length();
}
result.append(" := "); indent += 4;
if(node.getSentence() != null) {
node.getSentence().apply(this);
}
result.append(")"); indent += 1;
outADefrelationComplete(node);
}
/**
* Kif deflogical complete definition
*/
public void caseADeflogicalComplete(ADeflogicalComplete node)
{
inADeflogicalComplete(node);
int begin_indent = indent;
result.append("(deflogical "); indent += 12;
if(node.getConstant() != null) {
node.getConstant().apply(this);
}
if(node.getString() != null) {
result.append(" "); indent += 1;
String s = node.getString().toString();
result.append(s);
indent += s.length();
}
result.append(" := "); indent += 4;
if(node.getSentence() != null) {
node.getSentence().apply(this);
}
result.append(")"); indent += 1;
outADeflogicalComplete(node);
}
/******* Partial definitions *************/
/**
*
*/
public void caseADefobjectLPartial(ADefobjectLPartial node)
{
inADefobjectLPartial(node);
result.append("(defobject "); indent += 11;
if(node.getConstant() != null) {
node.getConstant().apply(this);
}
if(node.getString() != null) {
result.append(" "); indent += 1;
String s = node.getString().toString();
result.append(s);
indent += s.length();
}
result.append(" :-> "); indent += 4;
if(node.getIndvar() != null){
node.getIndvar().apply(this);
}
if(node.getColDblLArrow() != null) {
node.getColDblLArrow().apply(this);
}
if(node.getSentence() != null){
node.getSentence().apply(this);
}
result.append(")"); indent += 1;
outADefobjectLPartial(node);
}
/**
* Kif defobject partial definition with right arrow.
*/
public void caseADefobjectRPartial(ADefobjectRPartial node)
{
inADefobjectRPartial(node);
result.append("(defobject "); indent += 11;
if(node.getConstant() != null) {
node.getConstant().apply(this);
}
if(node.getString() != null) {
result.append(" "); indent += 1;
String s = node.getString().toString();
result.append(s);
indent += s.length();
}
result.append(" :-> "); indent += 4;
if(node.getIndvar() != null){
node.getIndvar().apply(this);
}
if(node.getColDblRArrow() != null) {
node.getColDblRArrow().apply(this);
}
if(node.getSentence() != null){
node.getSentence().apply(this);
}
result.append(")"); indent += 1;
outADefobjectRPartial(node);
}
/**
* Kif deflogical partial definition with left arrow.
*/
public void caseADeflogicalLPartial(ADeflogicalLPartial node) {
inADeflogicalLPartial(node);
result.append("(deflogical "); indent += 12;
if(node.getConstant() != null) {
node.getConstant().apply(this);
}
if(node.getString() != null) {
result.append(" "); indent += 1;
String s = node.getString().toString().trim();
result.append(s);
indent += s.length();
}
if(node.getColDblLArrow() != null) {
node.getColDblLArrow().apply(this);
}
if(node.getSentence() != null){
node.getSentence().apply(this);
}
result.append(")"); indent += 1;
outADeflogicalLPartial(node);
}
/**
* Kif deflogical partial definition with right arrow.
*/
public void caseADeflogicalRPartial(ADeflogicalRPartial node) {
inADeflogicalRPartial(node);
result.append("(deflogical "); indent += 12;
if(node.getConstant() != null) {
node.getConstant().apply(this);
}
if(node.getString() != null) {
result.append(" "); indent += 1;
String s = node.getString().toString().trim();
result.append(s);
indent += s.length();
}
if(node.getColDblRArrow() != null) {
node.getColDblRArrow().apply(this);
}
if(node.getSentence() != null){
node.getSentence().apply(this);
}
result.append(")"); indent += 1;
outADeflogicalRPartial(node);
}
/**
* Kif deffunction partial definition with left arrow.
*/
public void caseADeffunctionLPartial(ADeffunctionLPartial node) {
inADeffunctionLPartial(node);
result.append("(deffunction "); indent += 13;
if(node.getConstant() != null) {
node.getConstant().apply(this);
}
result.append("("); indent += 1;
Object temp[] = node.getIndvar().toArray();
for(int i = 0; i < temp.length; i++) {
if(i>0) result.append(" "); indent += 1;
((PIndvar) temp[i]).apply(this);
}
if(node.getSeqvar() != null) {
result.append(" "); indent += 1;
node.getSeqvar().apply(this);
}
result.append(")"); indent += 1;
if(node.getString() != null) {
result.append(" "); indent += 1;
node.getString().toString().trim();
}
if(node.getColRArrow() != null) {
result.append(" "); indent += 1;
node.getColRArrow().apply(this);
}
if(node.getA() != null) {
result.append(" "); indent += 1;
node.getA().apply(this);
}
if(node.getColDblLArrow() != null) {
result.append(" "); indent += 1;
node.getColDblLArrow().apply(this);
}
if(node.getSentence() != null) {
result.append(" "); indent += 1;
node.getSentence().apply(this);
}
result.append(")"); indent += 1;
outADeffunctionLPartial(node);
}
/**
* Kif deffunction partial definition with right arrow.
*/
public void caseADeffunctionRPartial(ADeffunctionRPartial node)
{
inADeffunctionRPartial(node);
result.append("(deffunction "); indent += 13;
if(node.getConstant() != null) {
node.getConstant().apply(this);
}
result.append("("); indent += 1;
Object temp[] = node.getIndvar().toArray();
for(int i = 0; i < temp.length; i++) {
if(i>0) result.append(" "); indent += 1;
((PIndvar) temp[i]).apply(this);
}
if(node.getSeqvar() != null) {
result.append(" "); indent += 1;
node.getSeqvar().apply(this);
}
result.append(")"); indent += 1;
if(node.getString() != null) {
result.append(" "); indent += 1;
node.getString().toString().trim();
}
if(node.getColRArrow() != null) {
result.append(" "); indent += 1;
node.getColRArrow().apply(this);
}
if(node.getA() != null) {
result.append(" "); indent += 1;
node.getA().apply(this);
}
if(node.getColDblRArrow() != null) {
result.append(" "); indent += 1;
node.getColDblRArrow().apply(this);
}
if(node.getSentence() != null) {
result.append(" "); indent += 1;
node.getSentence().apply(this);
}
result.append(")"); indent += 1;
outADeffunctionRPartial(node);
}
/**
* Kif defrelation partial definition with left arrow.
*/
public void caseADefrelationLPartial(ADefrelationLPartial node)
{
inADefrelationLPartial(node);
result.append("(deffunction "); indent += 13;
if(node.getConstant() != null) {
node.getConstant().apply(this);
}
result.append("("); indent += 1;
Object temp[] = node.getIndvar().toArray();
for(int i = 0; i < temp.length; i++) {
if(i>0) result.append(" "); indent += 1;
((PIndvar) temp[i]).apply(this);
}
if(node.getSeqvar() != null) {
result.append(" "); indent += 1;
node.getSeqvar().apply(this);
}
result.append(")"); indent += 1;
if(node.getString() != null) {
result.append(" "); indent += 1;
node.getString().toString().trim();
}
if(node.getColDblLArrow() != null) {
result.append(" "); indent += 1;
node.getColDblLArrow().apply(this);
}
if(node.getSentence() != null) {
result.append(" "); indent += 1;
node.getSentence().apply(this);
}
result.append(")"); indent += 1;
outADefrelationLPartial(node);
}
/**
* Kif defrelation partial definition with right arrow.
*/
public void caseADefrelationRPartial(ADefrelationRPartial node)
{
inADefrelationRPartial(node);
result.append("(defrelation "); indent += 13;
if(node.getConstant() != null) {
node.getConstant().apply(this);
}
result.append("("); indent += 1;
Object temp[] = node.getIndvar().toArray();
for(int i = 0; i < temp.length; i++) {
if(i>0) result.append(" "); indent += 1;
((PIndvar) temp[i]).apply(this);
}
if(node.getSeqvar() != null) {
result.append(" "); indent += 1;
node.getSeqvar().apply(this);
}
result.append(")"); indent += 1;
if(node.getString() != null) {
result.append(" "); indent += 1;
node.getString().toString().trim();
}
if(node.getColDblRArrow() != null) {
result.append(" "); indent += 1;
node.getColDblRArrow().apply(this);
}
if(node.getSentence() != null) {
result.append(" "); indent += 1;
node.getSentence().apply(this);
}
result.append(")"); indent += 1;
outADefrelationRPartial(node);
}
/******* Equation *******/
/**
* Kif equation node.
*/
public void caseAEquation(AEquation node)
{
inAEquation(node);
result.append("(= "); indent += 3;
if(node.getLeft() != null) {
node.getLeft().apply(this);
}
result.append(" "); indent += 1;
if(node.getRight() != null) {
node.getRight().apply(this);
}
result.append(")");
indent += 1;
outAEquation(node);
}
/**
* Kif inequality node.
*/
public void caseAInequality(AInequality node)
{
inAInequality(node);
result.append("(/= "); indent += 4;
if(node.getLeft() != null) {
node.getLeft().apply(this);
}
result.append(" "); indent += 1;
if(node.getRight() != null) {
node.getRight().apply(this);
}
result.append(")");
indent += 1;
outAInequality(node);
}
/****** Relations *********/
/**
* Kif implicit relsent node.
*/
public void caseAImplicitRelsent(AImplicitRelsent node)
{
inAImplicitRelsent(node);
int begin_indent = indent;
result.append("("); indent += 1;
if(node.getConstant() != null) {
node.getConstant().apply(this);
}
Object temp[] = node.getTerm().toArray();
for(int i = 0; i < temp.length; i++) {
result.append(" "); indent += 1;
((PTerm) temp[i]).apply(this);
}
if(node.getSeqvar() != null){
result.append(" seq "); indent += 1;
node.getSeqvar().apply(this);
}
result.append(")");
indent += 1;
outAImplicitRelsent(node);
}
/**
* Kif implicit relsent node.
*/
public void caseAExplicitRelsent(AExplicitRelsent node)
{
inAExplicitRelsent(node);
result.append("(holds "); indent += 7;
if(node.getFirst() != null) {
node.getFirst().apply(this);
}
Object temp[] = node.getRest().toArray();
for(int i = 0; i < temp.length; i++) {
result.append(" "); indent += 1;
((PTerm) temp[i]).apply(this);
}
if(node.getSeqvar() != null){
result.append(" "); indent += 1;
node.getSeqvar().apply(this);
}
result.append(")");
indent += 1;
outAExplicitRelsent(node);
}
/******** Strings, variables, constants *********/
/**
* Kif string term.
*/
public void caseAStringTerm(AStringTerm node) {
inAStringTerm(node);
if(node.getString() != null) {
String s = node.getString().toString().trim();
result.append(s);
indent += s.length();
}
outAStringTerm(node);
}
/**
* Kif indvar node.
*/
public void caseAIndvar(AIndvar node) {
inAIndvar(node);
if(node.getTIndvar() != null){
String s = node.getTIndvar().toString().trim();
result.append(s); indent += s.length();
}
outAIndvar(node);
}
/**
* Kif seqvar node.
*/
public void caseASeqvar(ASeqvar node) {
inASeqvar(node);
if(node.getTSeqvar() != null){
String s = node.getTSeqvar().toString().trim();
result.append(s); indent += s.length();
}
outASeqvar(node);
}
/**
* Kif constant node.
*
public void caseAConstant(AConstant node){
inAConstant(node);
if(node.getConstantWord() != null) {
String s = node.getConstantWord().toString().trim();
result.append(s); indent += s.length();
}
outAConstant(node);
}
*/
/**
* Kif word identifier.
*/
public void caseAWordIdentifier(AWordIdentifier node) {
inAWordIdentifier(node);
if(node.getWord() != null) {
String s = node.getWord().toString().trim();
result.append(s); indent += s.length();
}
outAWordIdentifier(node);
}
/********* funterm listterm **********/
/**
* Kif implicit funterm node.
*/
public void caseAImplicitFunterm(AImplicitFunterm node)
{
inAImplicitFunterm(node);
result.append("("); indent += 1;
if(node.getConstant() != null) {
node.getConstant().apply(this);
}
Object temp[] = node.getTerm().toArray();
for(int i = 0; i < temp.length; i++) {
result.append(" "); indent += 1;
((PTerm) temp[i]).apply(this);
}
if(node.getSeqvar() != null){
result.append(" "); indent += 1;
node.getSeqvar().apply(this);
}
result.append(")");
indent += 1;
outAImplicitFunterm(node);
}
/**
* Kif explicit funterm node.
*/
public void caseAExplicitFunterm(AExplicitFunterm node)
{
inAExplicitFunterm(node);
result.append("(value "); indent += 7;
if(node.getFirst() != null){
node.getFirst().apply(this);
}
Object temp[] = node.getRest().toArray();
for(int i = 0; i < temp.length; i++) {
result.append(" "); indent += 1;
((PTerm) temp[i]).apply(this);
}
if(node.getSeqvar() != null){
result.append(" "); indent += 1;
node.getSeqvar().apply(this);
}
result.append(")");
indent += 1;
outAExplicitFunterm(node);
}
/**
* Kif listterm node.
*/
public void caseAListterm(AListterm node)
{
inAListterm(node);
result.append("(listof "); indent += 8;
Object temp[] = node.getTerm().toArray();
for(int i = 0; i < temp.length; i++) {
((PTerm) temp[i]).apply(this);
}
if(node.getSeqvar() != null) {
result.append(" "); indent += 1;
node.getSeqvar().apply(this);
}
result.append(")");
outAListterm(node);
}
/********** If and Cond statements **********8/
/**
* Kif if statement node.
*/
public void caseAIfLogterm(AIfLogterm node)
{
inAIfLogterm(node);
result.append("(if "); indent += 4;
if(node.getSentence() != null){
node.getSentence().apply(this);
}
if(node.getTrue() != null) {
result.append(" "); indent += 1;
node.getTrue().apply(this);
}
if(node.getFalse() != null) {
result.append(" "); indent += 1;
node.getFalse().apply(this);
}
result.append(")"); indent += 1;
outAIfLogterm(node);
}
/**
* Kif cond conditional sentence node.
*/
public void caseACondLogterm(ACondLogterm node)
{
inACondLogterm(node);
result.append("(cond"); indent += 5;
Object temp[] = node.getLogitem().toArray();
for(int i = 0; i < temp.length; i++) {
result.append(" "); indent += 1;
((PLogitem) temp[i]).apply(this);
}
result.append(")"); indent += 1;
outACondLogterm(node);
}
/**
* Kif single element of conditional sentence.
*/
public void caseALogitem(ALogitem node)
{
inALogitem(node);
result.append("("); indent += 1;
if(node.getSentence() != null) {
node.getSentence().apply(this);
}
if(node.getTerm() != null) {
result.append(" "); indent += 1;
node.getTerm().apply(this);
}
result.append(")"); indent += 1;
outALogitem(node);
}
/********** Logocal sentences: not and or <= => <=> **********/
/**
* Kif negation longsent note.
*/
public void caseANegationLogsent(ANegationLogsent node)
{
inANegationLogsent(node);
result.append("(not "); indent += 5;
if(node.getSentence() != null) {
node.getSentence().apply(this);
}
result.append(")"); indent += 1;
outANegationLogsent(node);
}
/**
* Kif conjunction longsent node.
*/
public void caseAConjunctionLogsent(AConjunctionLogsent node)
{
inAConjunctionLogsent(node);
result.append("(and "); indent += 5;
Object temp[] = node.getSentence().toArray();
for(int i = 0; i < temp.length; i++) {
result.append(" "); indent += 1;
((PSentence) temp[i]).apply(this);
}
result.append(")"); indent += 1;
outAConjunctionLogsent(node);
}
/**
* Kif disjunction longsent node.
*/
public void caseADisjunctionLogsent(ADisjunctionLogsent node)
{
inADisjunctionLogsent(node);
result.append("(or "); indent += 4;
Object temp[] = node.getSentence().toArray();
for(int i = 0; i < temp.length; i++) {
result.append(" "); indent += 1;
((PSentence) temp[i]).apply(this);
}
result.append(")"); indent += 1;
outADisjunctionLogsent(node);
}
/**
* Kif implication node.
*/
public void caseAImplicationLogsent(AImplicationLogsent node)
{
inAImplicationLogsent(node);
int begin_indent = indent;
result.append("(=>"); indent += 3;
Object temp[] = node.getRest().toArray();
for(int i = 0; i < temp.length; i++) {
result.append(" "); indent += 1;
((PSentence) temp[i]).apply(this);
}
result.append("\n").append(giveIndent(begin_indent+4));
if(node.getLast() != null) {
node.getLast().apply(this);
}
result.append(")");
indent = begin_indent;
outAImplicationLogsent(node);
}
/**
* Kif reverse implication node.
*/
public void caseAReverseImplicationLogsent(AReverseImplicationLogsent node)
{
inAReverseImplicationLogsent(node);
int begin_indent = indent;
result.append("(<= "); indent += 4;
if(node.getFirst() != null){
node.getFirst().apply(this);
}
result.append("\n").append(giveIndent(begin_indent+3));
Object temp[] = node.getRest().toArray();
for(int i = 0; i < temp.length; i++) {
result.append(" "); indent += 1;
((PSentence) temp[i]).apply(this);
}
result.append(")");
indent = begin_indent;
outAReverseImplicationLogsent(node);
}
/**
* Kif equivalence sentence node.
*/
public void caseAEquivalenceLogsent(AEquivalenceLogsent node)
{
inAEquivalenceLogsent(node);
result.append("(<=> "); indent += 5;
if(node.getFirst() != null) {
node.getFirst().apply(this);
}
result.append(" "); indent += 1;
if(node.getLast() != null) {
node.getLast().apply(this);
}
result.append(")"); indent += 1;
outAEquivalenceLogsent(node);
}
/**
* Kif universal quantsent. This method is responsible for processing
* '(forall ...)' sentences.
*/
public void caseAUniversalQuantsent(AUniversalQuantsent node)
{
inAUniversalQuantsent(node);
result.append("(forall ("); indent += 9;
Object temp[] = node.getVarspec().toArray();
for(int i = 0; i < temp.length; i++) {
if(i>0) result.append(" "); indent += 1;
((PVarspec) temp[i]).apply(this);
}
result.append(") "); indent += 2;
if(node.getSentence() != null) {
node.getSentence().apply(this);
}
result.append(")"); indent +=1;
outAUniversalQuantsent(node);
}
/**
* Kif existential quantsent. This method is responsible for processing
* '(exists ...)' sentences
*/
public void caseAExistentialQuantsent(AExistentialQuantsent node)
{
inAExistentialQuantsent(node);
result.append("(exists ("); indent += 9;
Object temp[] = node.getVarspec().toArray();
for(int i = 0; i < temp.length; i++) {
if(i>0) result.append(" "); indent += 1;
((PVarspec) temp[i]).apply(this);
}
result.append(") "); indent += 2;
if(node.getSentence() != null) {
node.getSentence().apply(this);
}
result.append(")"); indent +=1;
outAExistentialQuantsent(node);
}
/********** quotations ***********/
/**
* Kif parenthesized quotation.
*/
public void caseAParQuoterm(AParQuoterm node)
{
inAParQuoterm(node);
result.append("(quote "); indent += 7;
if(node.getListexpr() != null) {
node.getListexpr().apply(this);
}
result.append(")"); indent += 1;
outAParQuoterm(node);
}
/**
* Kif quotation mark: '
*/
public void caseASimple1Quoterm(ASimple1Quoterm node) {
inASimple1Quoterm(node);
result.append("'"); indent += 1;
if(node.getListexpr() != null){
node.getListexpr().apply(this);
}
outASimple1Quoterm(node);
}
/**
* Kif quotation mark: ^
*/
public void caseASimple2Quoterm(ASimple2Quoterm node) {
inASimple2Quoterm(node);
result.append("^"); indent += 1;
if(node.getListexpr() != null){
node.getListexpr().apply(this);
}
outASimple2Quoterm(node);
}
/**
* Kif quoted indvar term.
*/
public void caseAIndvarListexpr(AIndvarListexpr node) {
inAIndvarListexpr(node);
if(node.getIndvar() != null) {
String s = node.getIndvar().toString().trim();
result.append(s); indent += s.length();
}
outAIndvarListexpr(node);
}
/**
* Kif quoted seqvar term.
*/
public void caseASeqvarListexpr(ASeqvarListexpr node) {
inASeqvarListexpr(node);
if(node.getSeqvar() != null) {
String s = node.getSeqvar().toString().trim();
result.append(s); indent += s.length();
}
outASeqvarListexpr(node);
}
/**
* Kif quoted word node.
*/
public void caseAWordListexpr(AWordListexpr node) {
inAWordListexpr(node);
if(node.getWord() != null) {
String s = node.getWord().toString().trim();
result.append(s); indent += s.length();
}
outAWordListexpr(node);
}
/**
* Kif quoted string node.
*/
public void caseAStringListexpr(AStringListexpr node) {
inAStringListexpr(node);
if(node.getString() != null){
String s = node.getString().toString().trim();
result.append(s); indent += s.length();
}
outAStringListexpr(node);
}
/**
* Kif quoted charref node.
*/
public void caseACharrefListexpr(ACharrefListexpr node) {
inACharrefListexpr(node);
if(node.getCharref() != null) {
String s = node.getCharref().toString().trim();
result.append(s); indent += s.length();
}
outACharrefListexpr(node);
}
/**
* Kif quoted reference to seqvar, e.g. ,@var
*/
public void caseASeqvarRefListexpr(ASeqvarRefListexpr node)
{
inASeqvarRefListexpr(node);
if(node.getRefSeqvar() != null){
String s = node.getRefSeqvar().toString().trim();
result.append(s); indent += s.length();
}
outASeqvarRefListexpr(node);
}
/**
* Kif quoted reference to indvar, e.g. ,?var
*/
public void caseAIndvarRefListexpr(AIndvarRefListexpr node)
{
inAIndvarRefListexpr(node);
if(node.getRefIndvar() != null) {
String s = node.getRefIndvar().toString().trim();
result.append(s); indent += s.length();
}
outAIndvarRefListexpr(node);
}
/**
* Kif quoted subexpression list.
*/
public void caseAMultiListexpr(AMultiListexpr node) {
inAMultiListexpr(node);
result.append("("); indent += 1;
Object temp[] = node.getListexpr().toArray();
for(int i = 0; i < temp.length; i++) {
if(i>0) result.append(" ");
((PListexpr) temp[i]).apply(this);
}
result.append(")"); indent += 1;
outAMultiListexpr(node);
}
/**
* Defined symbol '='. This node is used in quoted expressions.
*/
public void caseAEqDefined(AEqDefined node) {
inAEqDefined(node);
if(node.getEq() != null) {
String s = node.getEq().toString().trim();
result.append(s); indent += s.length();
}
outAEqDefined(node);
}
/**
* Defined symbol '/='. This node is used in quoted expressions.
*/
public void caseAIneqDefined(AIneqDefined node)
{
inAIneqDefined(node);
if(node.getIneq() != null) {
String s = node.getIneq().toString().trim();
result.append(s); indent += s.length();
}
outAIneqDefined(node);
}
/**
* Defined symbol '@'. This node is used in quoted expressions.
*/
public void caseAAtDefined(AAtDefined node) {
inAAtDefined(node);
if(node.getAt() != null) {
String s = node.getAt().toString().trim();
result.append(s); indent += s.length();
}
outAAtDefined(node);
}
/**
* Defined symbol '?'. This node is used in quoted expressions.
*/
public void caseAQMarkDefined(AQMarkDefined node) {
inAQMarkDefined(node);
if(node.getQMark() != null) {
String s = node.getQMark().toString().trim();
result.append(s); indent += s.length();
}
outAQMarkDefined(node);
}
/**
* Defined symbol ':='. This node is used in quoted expressions.
*/
public void caseAColEqDefined(AColEqDefined node) {
inAColEqDefined(node);
if(node.getColEq() != null) {
String s = node.getColEq().toString().trim();
result.append(s); indent += s.length();
}
outAColEqDefined(node);
}
/**
* Defined symbol 'quote'. This node is used in quoted expressions.
*/
public void caseAQuoteDefined(AQuoteDefined node) {
inAQuoteDefined(node);
if(node.getQuote() != null) {
String s = node.getQuote().toString().trim();
result.append(s); indent += s.length();
}
outAQuoteDefined(node);
}
/**
* Defined symbol 'defobject'. This node is used in quoted expressions.
*/
public void caseADefobjectDefined(ADefobjectDefined node){
inADefobjectDefined(node);
if(node.getDefobject() != null) {
String s = node.getDefobject().toString().trim();
result.append(s); indent += s.length();
}
outADefobjectDefined(node);
}
/**
* Defined symbol 'deffunction'. This node is used in quoted expressions.
*/
public void caseADeffunctionDefined(ADeffunctionDefined node) {
inADeffunctionDefined(node);
if(node.getDeffunction() != null) {
String s = node.getDeffunction().toString().trim();
result.append(s); indent += s.length();
}
outADeffunctionDefined(node);
}
/**
* Defined symbol 'defrelation'. This node is used in quoted expressions.
*/
public void caseADefrelationDefined(ADefrelationDefined node) {
inADefrelationDefined(node);
if(node.getDefrelation() != null) {
String s = node.getDefrelation().toString().trim();
result.append(s); indent += s.length();
}
outADefrelationDefined(node);
}
/**
* Defined symbol 'deflogical'. This node is used in quoted expressions.
*/
public void caseADeflogicalDefined(ADeflogicalDefined node){
inADeflogicalDefined(node);
if(node.getDeflogical() != null) {
String s = node.getDeflogical().toString().trim();
result.append(s); indent += s.length();
}
outADeflogicalDefined(node);
}
/**
* Defined symbol 'not'. This node is used in quoted expressions.
*/
public void caseANotDefined(ANotDefined node) {
inANotDefined(node);
if(node.getNot() != null) {
String s = node.getNot().toString().trim();
result.append(s); indent += s.length();
}
outANotDefined(node);
}
/**
* Defined symbol 'and'. This node is used in quoted expressions.
*/
public void caseAAndDefined(AAndDefined node){
inAAndDefined(node);
if(node.getAnd() != null) {
String s = node.getAnd().toString().trim();
result.append(s); indent += s.length();
}
outAAndDefined(node);
}
/**
* Defined symbol 'or'. This node is used in quoted expressions.
*/
public void caseAOrDefined(AOrDefined node){
inAOrDefined(node);
if(node.getOr() != null) {
String s = node.getOr().toString().trim();
result.append(s); indent += s.length();
}
outAOrDefined(node);
}
/**
* Defined symbol '=>'. This node is used in quoted expressions.
*/
public void caseADblRArrowDefined(ADblRArrowDefined node) {
inADblRArrowDefined(node);
if(node.getDblRArrow() != null) {
String s = node.getDblRArrow().toString().trim();
result.append(s); indent += s.length();
}
outADblRArrowDefined(node);
}
/**
* Defined symbol '<='. This node is used in quoted expressions.
*/
public void caseADblLArrowDefined(ADblLArrowDefined node) {
inADblLArrowDefined(node);
if(node.getDblLArrow() != null){
String s = node.getDblLArrow().toString().trim();
result.append(s); indent += s.length();
}
outADblLArrowDefined(node);
}
/**
* Defined symbol '<=>'. This node is used in quoted expressions.
*/
public void caseAArrowDblArrowDefined(AArrowDblArrowDefined node) {
inAArrowDblArrowDefined(node);
if(node.getArrowDblArrow() != null) {
String s = node.getArrowDblArrow().toString().trim();
result.append(s); indent += s.length();
}
outAArrowDblArrowDefined(node);
}
/**
* Defined symbol ':=>'. This node is used in quoted expressions.
*/
public void caseAColDblRArrowDefined(AColDblRArrowDefined node)
{
inAColDblRArrowDefined(node);
if(node.getColDblRArrow() != null) {
String s = node.getColDblRArrow().toString().trim();
result.append(s); indent += s.length();
}
outAColDblRArrowDefined(node);
}
/**
* Defined symbol ':<='. This node is used in quoted expressions.
*/
public void caseAColDblLArrowDefined(AColDblLArrowDefined node){
inAColDblLArrowDefined(node);
if(node.getColDblLArrow() != null) {
String s = node.getColDblLArrow().toString().trim();
result.append(s); indent += s.length();
}
outAColDblLArrowDefined(node);
}
/**
* Defined symbol ':->'. This node is used in quoted expressions.
*/
public void caseAColRArrowDefined(AColRArrowDefined node) {
inAColRArrowDefined(node);
if(node.getColRArrow() != null) {
String s = node.getColRArrow().toString().trim();
result.append(s); indent += s.length();
}
outAColRArrowDefined(node);
}
/**
* Defined symbol 'if'. This node is used in quoted expressions.
*/
public void caseAIfDefined(AIfDefined node) {
inAIfDefined(node);
if(node.getIf() != null) {
String s = node.getIf().toString().trim();
result.append(s); indent += s.length();
}
outAIfDefined(node);
}
/**
* Defined symbol 'cond'. This node is used in quoted expressions.
*/
public void caseACondDefined(ACondDefined node) {
inACondDefined(node);
if(node.getCond() != null) {
String s = node.getCond().toString().trim();
result.append(s); indent += s.length();
}
outACondDefined(node);
}
/**
* Defined symbol 'value'. This node is used in quoted expressions.
*/
public void caseAValueDefined(AValueDefined node) {
inAValueDefined(node);
if(node.getValue() != null) {
String s = node.getValue().toString().trim();
result.append(s); indent += s.length();
}
outAValueDefined(node);
}
/**
* Defined symbol 'listof'. This node is used in quoted expressions.
*/
public void caseAListofDefined(AListofDefined node) {
inAListofDefined(node);
if(node.getListof() != null) {
String s = node.getListof().toString().trim();
result.append(s); indent += s.length();
}
outAListofDefined(node);
}
/**
* Defined symbol 'holds'. This node is used in quoted expressions.
*/
public void caseAHoldsDefined(AHoldsDefined node) {
inAHoldsDefined(node);
if(node.getHolds() != null) {
String s = node.getHolds().toString().trim();
result.append(s); indent += s.length();
}
outAHoldsDefined(node);
}
/**
* Defined symbol 'forall'. This node is used in quoted expressions.
*/
public void caseAForallDefined(AForallDefined node) {
inAForallDefined(node);
if(node.getForall() != null) {
String s = node.getForall().toString().trim();
result.append(s); indent += s.length();
}
outAForallDefined(node);
}
/**
* Defined symbol 'exists'. This node is used in quoted expressions.
*/
public void caseAExistsDefined(AExistsDefined node) {
inAExistsDefined(node);
if(node.getExists() != null) {
String s = node.getExists().toString().trim();
result.append(s); indent += s.length();
}
outAExistsDefined(node);
}
}