Skip to content
Snippets Groups Projects
Commit 8a360fe9 authored by jgeldart's avatar jgeldart
Browse files

Added an implementation of LOAN, the Non-Axiomatic Ontology Language....

Added an implementation of LOAN, the Non-Axiomatic Ontology Language. Documentation forthcoming, although there is a PDF of the BNF for the language included.
parent 8d2477da
No related branches found
No related tags found
No related merge requests found
Showing
with 8351 additions and 2 deletions
source diff could not be displayed: it is too large. Options to address this: view the blob.
package com.googlecode.opennars.language;
public class BooleanLiteral extends Literal {
private boolean truthval;
public BooleanLiteral(String name) {
super(name);
this.truthval = Boolean.parseBoolean(name);
}
public BooleanLiteral(boolean tv) {
super(Boolean.toString(tv));
this.truthval = tv;
}
}
package com.googlecode.opennars.language;
public class Literal extends Term {
public Literal() {
}
public Literal(String name) {
super(name);
}
}
package com.googlecode.opennars.language;
public class NumericLiteral extends Literal {
public enum TYPE {
INTEGER,
DOUBLE;
};
private double num;
private TYPE type;
public NumericLiteral(String name) {
super(name);
this.num = Double.parseDouble(name);
}
public NumericLiteral(int num) {
super(Integer.toString(num));
this.num = num;
this.type = TYPE.INTEGER;
}
public NumericLiteral(double num) {
super(Double.toString(num));
this.num = num;
this.type = TYPE.DOUBLE;
}
public TYPE getType() {
return type;
}
}
package com.googlecode.opennars.language;
public class StringLiteral extends Literal {
public StringLiteral(String string_) {
super(string_);
}
}
...@@ -26,6 +26,7 @@ import java.util.*; ...@@ -26,6 +26,7 @@ import java.util.*;
import com.googlecode.opennars.inference.SyllogisticRules; import com.googlecode.opennars.inference.SyllogisticRules;
import com.googlecode.opennars.main.Memory; import com.googlecode.opennars.main.Memory;
import com.googlecode.opennars.parser.Symbols; import com.googlecode.opennars.parser.Symbols;
import com.googlecode.opennars.parser.TermVisitor;
/** /**
* Term is the basic component of Narsese, and the object of processing in NARS. * Term is the basic component of Narsese, and the object of processing in NARS.
...@@ -125,5 +126,17 @@ public class Term implements Cloneable, Comparable<Term> { ...@@ -125,5 +126,17 @@ public class Term implements Cloneable, Comparable<Term> {
public final boolean containQueryVariable() { // to be revised public final boolean containQueryVariable() { // to be revised
return (name.indexOf(Symbols.QUERY_VARIABLE_TAG) >= 0); return (name.indexOf(Symbols.QUERY_VARIABLE_TAG) >= 0);
}
/**
* Accept a visitor
* @param <R> Return type
* @param <A> Argument type
* @param v Visitor
* @param arg Argument
* @return an instance of the return type
*/
public <R,A> R accept(TermVisitor<R,A> v, A arg) {
return v.visit(this, arg);
} }
} }
package com.googlecode.opennars.language;
import java.net.URI;
public class URIRef extends Term {
private URI uri;
public URIRef(URI uri2) {
super(uri2.toString().trim());
uri = uri2;
}
/* (non-Javadoc)
* @see com.googlecode.opennars.language.Term#getConstantName()
*/
@Override
public String getConstantName() {
return uri.toString().trim();
}
/* (non-Javadoc)
* @see com.googlecode.opennars.language.Term#getName()
*/
@Override
public String getName() {
return uri.toString().trim();
}
/* (non-Javadoc)
* @see com.googlecode.opennars.language.Term#clone()
*/
@Override
public Object clone() {
return new URIRef(uri);
}
}
...@@ -43,7 +43,7 @@ public class Reasoner extends Observable implements Observer, Runnable { ...@@ -43,7 +43,7 @@ public class Reasoner extends Observable implements Observer, Runnable {
* @param parser * @param parser
*/ */
public Reasoner(Parser parser) { public Reasoner(Parser parser) {
super(); this();
this.parser = parser; this.parser = parser;
} }
...@@ -109,6 +109,14 @@ public class Reasoner extends Observable implements Observer, Runnable { ...@@ -109,6 +109,14 @@ public class Reasoner extends Observable implements Observer, Runnable {
} }
} }
/**
* Tell the reasoner a task
* @param task the task
*/
public synchronized void tellTask(Task task) {
inputQueue.add(task);
}
/** /**
* Tell the reasoner a sentence with the given budget for working with it * Tell the reasoner a sentence with the given budget for working with it
* @param sent the sentence * @param sent the sentence
......
package com.googlecode.opennars.parser; package com.googlecode.opennars.parser;
import java.util.List;
import com.googlecode.opennars.entity.Sentence;
import com.googlecode.opennars.entity.Task; import com.googlecode.opennars.entity.Task;
import com.googlecode.opennars.main.Memory; import com.googlecode.opennars.main.Memory;
public abstract class Parser extends Symbols { public abstract class Parser extends Symbols {
/** /**
* The only public (static) method of the class, called from Memory.inputTask. * Parses a given string into a (single) task.
* @param buffer the single-line input String * @param buffer the single-line input String
* @param memory the memory object doing the parsing * @param memory the memory object doing the parsing
* @return an input Task, or null if the input line cannot be parsed into a Task * @return an input Task, or null if the input line cannot be parsed into a Task
...@@ -14,4 +17,22 @@ public abstract class Parser extends Symbols { ...@@ -14,4 +17,22 @@ public abstract class Parser extends Symbols {
*/ */
public abstract Task parseTask(String input, Memory memory) throws InvalidInputException; public abstract Task parseTask(String input, Memory memory) throws InvalidInputException;
/**
* Parses a given string into a (list of) tasks.
* @param input
* @param memory
* @return a list of input Tasks, or an empty list if the input line cannot be parsed into a Task
* @throws InvalidInputException
*/
public abstract List<Task> parseTasks(String input, Memory memory) throws InvalidInputException;
/**
* Serialises the sentence to this parser's format
* @param task
* @param memory
* @return a string containing the serialised task
*/
public abstract String serialiseSentence(Sentence task, Memory memory);
public abstract String serialiseSentences(List<Sentence> tasks, Memory memory);
} }
\ No newline at end of file
package com.googlecode.opennars.parser;
import com.googlecode.opennars.language.*;
/**
* A visitor interface for terms in NARS to make it easier to serialise things
* @author jgeldart
*
* @param <R> The return type of this visitor
* @param <A> The argument type
*/
public interface TermVisitor<R, A> {
R visit(BooleanLiteral p, A arg);
R visit(Conjunction p, A arg);
R visit(ConjunctionParallel p, A arg);
R visit(ConjunctionSequence p, A arg);
R visit(DifferenceExt p, A arg);
R visit(DifferenceInt p, A arg);
R visit(Disjunction p, A arg);
R visit(Equivalence p, A arg);
R visit(EquivalenceAfter p, A arg);
R visit(EquivalenceWhen p, A arg);
R visit(ImageExt p, A arg);
R visit(ImageInt p, A arg);
R visit(Implication p, A arg);
R visit(ImplicationAfter p, A arg);
R visit(ImplicationBefore p, A arg);
R visit(Inheritance p, A arg);
R visit(Instance p, A arg);
R visit(InstanceProperty p, A arg);
R visit(IntersectionExt p, A arg);
R visit(IntersectionInt p, A arg);
R visit(Negation p, A arg);
R visit(NumericLiteral p, A arg);
R visit(Product p, A arg);
R visit(Property p, A arg);
R visit(SetExt p, A arg);
R visit(SetInt p, A arg);
R visit(Similarity p, A arg);
R visit(TenseFuture p, A arg);
R visit(TensePast p, A arg);
R visit(TensePresent p, A arg);
R visit(StringLiteral p, A arg);
R visit(URIRef p, A arg);
R visit(Variable p, A arg);
R visit(Term p, A arg);
}
-- LOAN, Non-Axiomatic Ontology Language, grammar
-- Copyright (c) 2008 Joe Geldart
entrypoints Document, Sentence ;
DocBR. Document ::= BaseRule [Sentence] ;
Doc. Document ::= [Sentence] ;
BaseR. BaseRule ::= "@base" URILit "." ; -- The base URI for the document
[]. [Sentence] ::= ;
(:). [Sentence] ::= Sentence [Sentence] ;
SentPrefix. Sentence ::= "@prefix" NSPrefix URILit "." ; -- Declares a namespace prefix to be a certain URI
SentImport. Sentence ::= "@import" URILit "." ; -- Imports a given URL
SentDelay. Sentence ::= "@delay" Integer "." ; -- Waits for a given number of cycles before continuing
SentOp. Sentence ::= "@operator" URIRef "." ; -- Declares URI to be an operator (currently unused)
SentJudge. Sentence ::= Stm TruthValue "." ; -- A judgement with a given truth-value
SentQuest. Sentence ::= Stm "?" ; -- A question
SentGoal. Sentence ::= Stm TruthValue "!" ; -- A goal with a given utility
StmImpl. Stm ::= Stm "==>" Stm1 ; -- Implication
StmEquiv. Stm ::= Stm "<=>" Stm1 ; -- Equivalence
StmImpPred. Stm ::= Stm "=/>" Stm1 ; -- Predictive implication
StmImpRet. Stm ::= Stm "=\\>" Stm1 ; -- Retrospective implication
StmImpConc. Stm ::= Stm "=|>" Stm1 ; -- Concurrent implication
StmEqvPred. Stm ::= Stm "</>" Stm1 ; -- Predictive equivalence
StmEqvConc. Stm ::= Stm "<|>" Stm1 ; -- Concurrent equivalence
StmConj. Stm1 ::= Stm1 "&&" Stm2 ; -- Conjunction
StmDisj. Stm1 ::= Stm1 "||" Stm2 ; -- Disjunction
StmPar. Stm1 ::= Stm1 ";" Stm2 ; -- Parallel conjunction
StmSeq. Stm1 ::= Stm1 "," Stm2 ; -- Sequential conjunction
StmNot. Stm2 ::= "not" Stm3 ; -- Negation
StmPst. Stm2 ::= "past" Stm3 ; -- Past-tense operator
StmPres. Stm2 ::= "present" Stm3 ; -- Present-tense operator
StmFut. Stm2 ::= "future" Stm3 ; -- Future-tense operator
StmInher. Stm3 ::= Term "-->" Term ; -- Inheritance
StmSim. Stm3 ::= Term "<->" Term ; -- Similarity
StmInst. Stm3 ::= Term "}->" Term ; -- Instance
StmProp. Stm3 ::= Term "--[" Term ; -- Property
StmInPp. Stm3 ::= Term "}-[" Term ; -- Instance-Property
StmOp. Stm3 ::= Term "(" [Term] ")" ; -- Operation
StmTrm. Stm3 ::= Term ; -- Bare term (name)
coercions Stm 3 ;
TrmExInt. Term ::= Term "&" Term1 ; -- Extensional intersection
TrmInInt. Term ::= Term "|" Term1 ; -- Intensional intersection
TrmExDif. Term1 ::= Term1 "-" Term2 ; -- Extensional difference
TrmInDif. Term1 ::= Term1 "~" Term2 ; -- Intensional difference
--TrmProd. Term2 ::= Term2 "*" Term3 ; -- Product
--TrmProd. Term2 ::= [Prod] ;
TrmExImg. Term2 ::= Term "extension" "(" [Term] "_|_" [Term] ")" ; -- Extensional image
TrmInImg. Term2 ::= Term "intension" "(" [Term] "_|_" [Term] ")" ; -- Intensional image
TrmExSet. Term3 ::= "{" [Term] "}" ; -- Extensional set
TrmInSet. Term3 ::= "[" [Term] "]" ; -- Intensional set
TrmProd. Term3 ::= "(" [Term] ")" ;
TrmLit. Term3 ::= Literal ; -- Literal
TrmStm. Term3 ::= "(" Stm ")" ; -- Statement
coercions Term 3 ;
separator Term "," ;
-- Literals
token URILit '<' (char - ["<>\"{}|\\`"])* '>' ; -- A URI literal token
separator Ident "," ;
URIFul. URIRef ::= URILit ; -- A full URI reference (possibly relative)
URICur. URIRef ::= NSPrefix Ident ; -- A CURIE
LitQVar. Literal ::= "?" Ident ; -- A query variable with name
LitQVarAn. Literal ::= "?" ; -- An anonymous query variable
LitSVarD. Literal ::= "#" Ident "(" [Ident] ")" ; -- A dependent statement variable
LitSVarI. Literal ::= "#" Ident ; -- An independent statement variable
LitURI. Literal ::= URIRef ; -- A URI reference literal
LitInt. Literal ::= Integer ; -- An integer literal
LitDbl. Literal ::= Double ; -- A double literal
LitString. Literal ::= String ; -- A string literal
LitTrue. Literal ::= "true" ; -- A true boolean
LitFalse. Literal ::= "false" ; -- A false boolean
NSPrefix1. NSPrefix ::= Ident ":" ; -- A namespace prefix
NSPrefix2. NSPrefix ::= ":" ; -- The default namespace prefix
TruthE. TruthValue ::= ; -- The default truth value
TruthF. TruthValue ::= "%" Double "%" ; -- Frequency only
TruthFC. TruthValue ::= "%" Double ";" Double "%" ; -- A full truth value
comment "/*" "*/" ; -- Comments as in C++ or C#
comment "//" ;
File added
package com.googlecode.opennars.parser.loan.Loan;
import com.googlecode.opennars.parser.loan.Loan.Absyn.*;
/** BNFC-Generated Abstract Visitor */
public class AbstractVisitor<R,A> implements AllVisitor<R,A> {
/* Document */
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.DocBR p, A arg) { return visitDefault(p, arg); }
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.Doc p, A arg) { return visitDefault(p, arg); }
public R visitDefault(com.googlecode.opennars.parser.loan.Loan.Absyn.Document p, A arg) {
throw new IllegalArgumentException(this.getClass().getName() + ": " + p);
}
/* BaseRule */
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.BaseR p, A arg) { return visitDefault(p, arg); }
public R visitDefault(com.googlecode.opennars.parser.loan.Loan.Absyn.BaseRule p, A arg) {
throw new IllegalArgumentException(this.getClass().getName() + ": " + p);
}
/* Sentence */
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.SentPrefix p, A arg) { return visitDefault(p, arg); }
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.SentImport p, A arg) { return visitDefault(p, arg); }
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.SentDelay p, A arg) { return visitDefault(p, arg); }
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.SentOp p, A arg) { return visitDefault(p, arg); }
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.SentJudge p, A arg) { return visitDefault(p, arg); }
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.SentQuest p, A arg) { return visitDefault(p, arg); }
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.SentGoal p, A arg) { return visitDefault(p, arg); }
public R visitDefault(com.googlecode.opennars.parser.loan.Loan.Absyn.Sentence p, A arg) {
throw new IllegalArgumentException(this.getClass().getName() + ": " + p);
}
/* Stm */
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.StmImpl p, A arg) { return visitDefault(p, arg); }
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.StmEquiv p, A arg) { return visitDefault(p, arg); }
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.StmImpPred p, A arg) { return visitDefault(p, arg); }
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.StmImpRet p, A arg) { return visitDefault(p, arg); }
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.StmImpConc p, A arg) { return visitDefault(p, arg); }
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.StmEqvPred p, A arg) { return visitDefault(p, arg); }
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.StmEqvConc p, A arg) { return visitDefault(p, arg); }
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.StmConj p, A arg) { return visitDefault(p, arg); }
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.StmDisj p, A arg) { return visitDefault(p, arg); }
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.StmPar p, A arg) { return visitDefault(p, arg); }
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.StmSeq p, A arg) { return visitDefault(p, arg); }
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.StmNot p, A arg) { return visitDefault(p, arg); }
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.StmPst p, A arg) { return visitDefault(p, arg); }
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.StmPres p, A arg) { return visitDefault(p, arg); }
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.StmFut p, A arg) { return visitDefault(p, arg); }
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.StmInher p, A arg) { return visitDefault(p, arg); }
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.StmSim p, A arg) { return visitDefault(p, arg); }
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.StmInst p, A arg) { return visitDefault(p, arg); }
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.StmProp p, A arg) { return visitDefault(p, arg); }
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.StmInPp p, A arg) { return visitDefault(p, arg); }
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.StmOp p, A arg) { return visitDefault(p, arg); }
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.StmTrm p, A arg) { return visitDefault(p, arg); }
public R visitDefault(com.googlecode.opennars.parser.loan.Loan.Absyn.Stm p, A arg) {
throw new IllegalArgumentException(this.getClass().getName() + ": " + p);
}
/* Term */
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.TrmExInt p, A arg) { return visitDefault(p, arg); }
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.TrmInInt p, A arg) { return visitDefault(p, arg); }
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.TrmExDif p, A arg) { return visitDefault(p, arg); }
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.TrmInDif p, A arg) { return visitDefault(p, arg); }
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.TrmExImg p, A arg) { return visitDefault(p, arg); }
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.TrmInImg p, A arg) { return visitDefault(p, arg); }
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.TrmExSet p, A arg) { return visitDefault(p, arg); }
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.TrmInSet p, A arg) { return visitDefault(p, arg); }
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.TrmProd p, A arg) { return visitDefault(p, arg); }
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.TrmLit p, A arg) { return visitDefault(p, arg); }
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.TrmStm p, A arg) { return visitDefault(p, arg); }
public R visitDefault(com.googlecode.opennars.parser.loan.Loan.Absyn.Term p, A arg) {
throw new IllegalArgumentException(this.getClass().getName() + ": " + p);
}
/* URIRef */
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.URIFul p, A arg) { return visitDefault(p, arg); }
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.URICur p, A arg) { return visitDefault(p, arg); }
public R visitDefault(com.googlecode.opennars.parser.loan.Loan.Absyn.URIRef p, A arg) {
throw new IllegalArgumentException(this.getClass().getName() + ": " + p);
}
/* Literal */
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.LitQVar p, A arg) { return visitDefault(p, arg); }
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.LitQVarAn p, A arg) { return visitDefault(p, arg); }
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.LitSVarD p, A arg) { return visitDefault(p, arg); }
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.LitSVarI p, A arg) { return visitDefault(p, arg); }
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.LitURI p, A arg) { return visitDefault(p, arg); }
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.LitInt p, A arg) { return visitDefault(p, arg); }
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.LitDbl p, A arg) { return visitDefault(p, arg); }
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.LitString p, A arg) { return visitDefault(p, arg); }
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.LitTrue p, A arg) { return visitDefault(p, arg); }
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.LitFalse p, A arg) { return visitDefault(p, arg); }
public R visitDefault(com.googlecode.opennars.parser.loan.Loan.Absyn.Literal p, A arg) {
throw new IllegalArgumentException(this.getClass().getName() + ": " + p);
}
/* NSPrefix */
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.NSPrefix1 p, A arg) { return visitDefault(p, arg); }
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.NSPrefix2 p, A arg) { return visitDefault(p, arg); }
public R visitDefault(com.googlecode.opennars.parser.loan.Loan.Absyn.NSPrefix p, A arg) {
throw new IllegalArgumentException(this.getClass().getName() + ": " + p);
}
/* TruthValue */
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.TruthE p, A arg) { return visitDefault(p, arg); }
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.TruthF p, A arg) { return visitDefault(p, arg); }
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.TruthFC p, A arg) { return visitDefault(p, arg); }
public R visitDefault(com.googlecode.opennars.parser.loan.Loan.Absyn.TruthValue p, A arg) {
throw new IllegalArgumentException(this.getClass().getName() + ": " + p);
}
}
package com.googlecode.opennars.parser.loan.Loan.Absyn; // Java Package generated by the BNF Converter.
public class BaseR extends BaseRule {
public final String urilit_;
public BaseR(String p1) { urilit_ = p1; }
public <R,A> R accept(com.googlecode.opennars.parser.loan.Loan.Absyn.BaseRule.Visitor<R,A> v, A arg) { return v.visit(this, arg); }
public boolean equals(Object o) {
if (this == o) return true;
if (o instanceof com.googlecode.opennars.parser.loan.Loan.Absyn.BaseR) {
com.googlecode.opennars.parser.loan.Loan.Absyn.BaseR x = (com.googlecode.opennars.parser.loan.Loan.Absyn.BaseR)o;
return this.urilit_.equals(x.urilit_);
}
return false;
}
public int hashCode() {
return this.urilit_.hashCode();
}
}
package com.googlecode.opennars.parser.loan.Loan.Absyn; // Java Package generated by the BNF Converter.
public abstract class BaseRule implements java.io.Serializable {
public abstract <R,A> R accept(BaseRule.Visitor<R,A> v, A arg);
public interface Visitor <R,A> {
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.BaseR p, A arg);
}
}
package com.googlecode.opennars.parser.loan.Loan.Absyn; // Java Package generated by the BNF Converter.
public class Doc extends Document {
public final ListSentence listsentence_;
public Doc(ListSentence p1) { listsentence_ = p1; }
public <R,A> R accept(com.googlecode.opennars.parser.loan.Loan.Absyn.Document.Visitor<R,A> v, A arg) { return v.visit(this, arg); }
public boolean equals(Object o) {
if (this == o) return true;
if (o instanceof com.googlecode.opennars.parser.loan.Loan.Absyn.Doc) {
com.googlecode.opennars.parser.loan.Loan.Absyn.Doc x = (com.googlecode.opennars.parser.loan.Loan.Absyn.Doc)o;
return this.listsentence_.equals(x.listsentence_);
}
return false;
}
public int hashCode() {
return this.listsentence_.hashCode();
}
}
package com.googlecode.opennars.parser.loan.Loan.Absyn; // Java Package generated by the BNF Converter.
public class DocBR extends Document {
public final BaseRule baserule_;
public final ListSentence listsentence_;
public DocBR(BaseRule p1, ListSentence p2) { baserule_ = p1; listsentence_ = p2; }
public <R,A> R accept(com.googlecode.opennars.parser.loan.Loan.Absyn.Document.Visitor<R,A> v, A arg) { return v.visit(this, arg); }
public boolean equals(Object o) {
if (this == o) return true;
if (o instanceof com.googlecode.opennars.parser.loan.Loan.Absyn.DocBR) {
com.googlecode.opennars.parser.loan.Loan.Absyn.DocBR x = (com.googlecode.opennars.parser.loan.Loan.Absyn.DocBR)o;
return this.baserule_.equals(x.baserule_) && this.listsentence_.equals(x.listsentence_);
}
return false;
}
public int hashCode() {
return 37*(this.baserule_.hashCode())+this.listsentence_.hashCode();
}
}
package com.googlecode.opennars.parser.loan.Loan.Absyn; // Java Package generated by the BNF Converter.
public abstract class Document implements java.io.Serializable {
public abstract <R,A> R accept(Document.Visitor<R,A> v, A arg);
public interface Visitor <R,A> {
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.DocBR p, A arg);
public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.Doc p, A arg);
}
}
package com.googlecode.opennars.parser.loan.Loan.Absyn; // Java Package generated by the BNF Converter.
public class ListIdent extends java.util.LinkedList<String> {
}
package com.googlecode.opennars.parser.loan.Loan.Absyn; // Java Package generated by the BNF Converter.
public class ListSentence extends java.util.LinkedList<Sentence> {
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment