nars.io
Class StringParser

java.lang.Object
  extended by nars.io.Symbols
      extended by nars.io.StringParser

public abstract class StringParser
extends Symbols

Parse input String into Task.


Nested Class Summary
private static class StringParser.InvalidInputException
          All kinds of invalid input lines
 
Field Summary
 
Fields inherited from class nars.io.Symbols
ARGUMENT_SEPARATOR, BUDGET_VALUE_MARK, COMMENT_MARK, COMPOUND_TERM_CLOSER, COMPOUND_TERM_OPENER, CONJUNCTION_OPERATOR, DIFFERENCE_EXT_OPERATOR, DIFFERENCE_INT_OPERATOR, DISJUNCTION_OPERATOR, EQUIVALENCE_AFTER_RELATION, EQUIVALENCE_RELATION, EQUIVALENCE_WHEN_RELATION, GOAL_MARK, IMAGE_EXT_OPERATOR, IMAGE_INT_OPERATOR, IMAGE_PLACE_HOLDER, IMPLICATION_AFTER_RELATION, IMPLICATION_BEFORE_RELATION, IMPLICATION_RELATION, IMPLICATION_WHEN_RELATION, INHERITANCE_RELATION, INPUT_LINE, INSTANCE_PROPERTY_RELATION, INSTANCE_RELATION, INTERSECTION_EXT_OPERATOR, INTERSECTION_INT_OPERATOR, JUDGMENT_MARK, NEGATION_OPERATOR, OPERATOR_TAG, OUTPUT_LINE, PARALLEL_OPERATOR, PREFIX_MARK, PRODUCT_OPERATOR, PROPERTY_RELATION, QUERY_VARIABLE_TAG, QUESTION_MARK, RESET_MARK, SEQUENCE_OPERATOR, SET_EXT_CLOSER, SET_EXT_OPENER, SET_INT_CLOSER, SET_INT_OPENER, SIMILARITY_RELATION, STAMP_CLOSER, STAMP_OPENER, STAMP_SEPARATOR, STAMP_STARTER, STATEMENT_CLOSER, STATEMENT_OPENER, TENSE_FUTURE, TENSE_MARK, TENSE_PAST, TENSE_PRESENT, TO_COMPONENT_1, TO_COMPONENT_2, TO_COMPOUND_1, TO_COMPOUND_2, TRUTH_VALUE_MARK, VALUE_SEPARATOR, VARIABLE_TAG
 
Constructor Summary
StringParser()
           
 
Method Summary
private static java.lang.String getBudgetString(java.lang.StringBuffer s)
          Return the prefex of a task string that contains a BudgetValue
private static java.lang.String getTruthString(java.lang.StringBuffer s)
          Return the postfix of a task string that contains a TruthValue
private static boolean isCloser(java.lang.String s, int i)
          Check CompoundTerm closer symbol
private static boolean isOpener(java.lang.String s, int i)
          Check CompoundTerm opener symbol
private static int nextSeparator(java.lang.String s, int first)
          Locate the first top-level separator in a CompoundTerm
private static java.util.ArrayList<Term> parseArguments(java.lang.String s0)
          Parse a String into the argument get of a CompoundTerm.
private static BudgetValue parseBudget(java.lang.String s, char punctuation, TruthValue truth)
          parse the input String into a BudgetValue
private static Term parseCompoundTerm(java.lang.String s0)
          Parse a String to create a CompoundTerm.
static void parseExperience(java.lang.StringBuffer buffer)
          Parse a line of input experience
private static Term parseSimpleTerm(java.lang.String s0)
          Parse a Term that has no internal structure.
private static Statement parseStatement(java.lang.String s0)
          Parse a String to create a Statement.
static void parseTask(java.lang.String s)
          The only public (static) method of the class, called from InputWindow or locally.
private static java.lang.String parseTense(java.lang.StringBuffer s)
          Recognize the tense of an input sentence
private static Term parseTerm(java.lang.String s0)
          Top-level method that parse a Term in general, which may recursively call itself.
private static TruthValue parseTruth(java.lang.String s, char type)
          parse the input String into a TruthValue (or DesireValue)
private static int tenseToOrder(java.lang.String t)
           
private static int topRelation(java.lang.String s)
          locate the top-level relation in a statement
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

StringParser

public StringParser()
Method Detail

parseExperience

public static void parseExperience(java.lang.StringBuffer buffer)
Parse a line of input experience

called from ExperienceIO.loadLine

Parameters:
buffer - The line to be parsed

parseTask

public static void parseTask(java.lang.String s)
The only public (static) method of the class, called from InputWindow or locally.

Parameters:
s - the single-line input String

getBudgetString

private static java.lang.String getBudgetString(java.lang.StringBuffer s)
                                         throws StringParser.InvalidInputException
Return the prefex of a task string that contains a BudgetValue

Parameters:
s - the input in a StringBuffer
Returns:
a String containing a BudgetValue
Throws:
StringParser.InvalidInputException - if the input cannot be parsed into a BudgetValue

parseTense

private static java.lang.String parseTense(java.lang.StringBuffer s)
Recognize the tense of an input sentence

Parameters:
s - the input in a StringBuffer
Returns:
a tense value

tenseToOrder

private static int tenseToOrder(java.lang.String t)

getTruthString

private static java.lang.String getTruthString(java.lang.StringBuffer s)
                                        throws StringParser.InvalidInputException
Return the postfix of a task string that contains a TruthValue

Parameters:
s - the input in a StringBuffer
Returns:
a String containing a TruthValue
Throws:
StringParser.InvalidInputException - if the input cannot be parsed into a TruthValue

parseTruth

private static TruthValue parseTruth(java.lang.String s,
                                     char type)
parse the input String into a TruthValue (or DesireValue)

Parameters:
s - input String
type - Task type
Returns:
the input TruthValue

parseBudget

private static BudgetValue parseBudget(java.lang.String s,
                                       char punctuation,
                                       TruthValue truth)
                                throws StringParser.InvalidInputException
parse the input String into a BudgetValue

Parameters:
truth - the TruthValue of the task
s - input String
punctuation - Task punctuation
Returns:
the input BudgetValue
Throws:
StringParser.InvalidInputException - If the String cannot be parsed into a BudgetValue

parseTerm

private static Term parseTerm(java.lang.String s0)
                       throws StringParser.InvalidInputException
Top-level method that parse a Term in general, which may recursively call itself.

There are 5 valid cases: 1. (Op, A1, ..., An) is a CompoundTerm if Op is a built-in operator 2. {A1, ..., An} is an SetExt; 3. [A1, ..., An] is an SetInt; 4. is a Statement (including higher-order Statement); 5. otherwise it is a simple term.

Parameters:
s0 - the String to be parsed
Returns:
the Term generated from the String
Throws:
StringParser.InvalidInputException - the String cannot be parsed into a Term

parseSimpleTerm

private static Term parseSimpleTerm(java.lang.String s0)
                             throws StringParser.InvalidInputException
Parse a Term that has no internal structure.

The Term can be a constant or a variable.

Parameters:
s0 - the String to be parsed
Returns:
the Term generated from the String
Throws:
StringParser.InvalidInputException - the String cannot be parsed into a Term

parseStatement

private static Statement parseStatement(java.lang.String s0)
                                 throws StringParser.InvalidInputException
Parse a String to create a Statement.

Parameters:
s0 - The input String to be parsed
Returns:
the Statement generated from the String
Throws:
StringParser.InvalidInputException - the String cannot be parsed into a Term

parseCompoundTerm

private static Term parseCompoundTerm(java.lang.String s0)
                               throws StringParser.InvalidInputException
Parse a String to create a CompoundTerm.

Parameters:
s0 - The String to be parsed
Returns:
the Term generated from the String
Throws:
StringParser.InvalidInputException - the String cannot be parsed into a Term

parseArguments

private static java.util.ArrayList<Term> parseArguments(java.lang.String s0)
                                                 throws StringParser.InvalidInputException
Parse a String into the argument get of a CompoundTerm.

Parameters:
s0 - The String to be parsed
Returns:
the arguments in an ArrayList
Throws:
StringParser.InvalidInputException - the String cannot be parsed into an argument get

nextSeparator

private static int nextSeparator(java.lang.String s,
                                 int first)
Locate the first top-level separator in a CompoundTerm

Parameters:
s - The String to be parsed
first - The starting index
Returns:
the index of the next seperator in a String

topRelation

private static int topRelation(java.lang.String s)
locate the top-level relation in a statement

Parameters:
s - The String to be parsed
Returns:
the index of the top-level relation

isOpener

private static boolean isOpener(java.lang.String s,
                                int i)
Check CompoundTerm opener symbol

Parameters:
s - The String to be checked
i - The starting index
Returns:
if the given String is an opener symbol

isCloser

private static boolean isCloser(java.lang.String s,
                                int i)
Check CompoundTerm closer symbol

Parameters:
s - The String to be checked
i - The starting index
Returns:
if the given String is a closer symbol