ix.iface.domain
Class LTF_Parser

java.lang.Object
  |
  +--ix.iface.domain.DomainParser
        |
        +--ix.iface.domain.LTF_Parser
All Implemented Interfaces:
LTF_Symbols

public class LTF_Parser
extends DomainParser
implements LTF_Symbols

A parser for domains described in a Lisp-like syntax.

The parser parses a file of refinement definitions to populate a Domain.

In the syntax definitions below, upper-case names are literals and lower-case names are syntactic variables. The literals can be written in either case in domain definitions.

    (REFINEMENT name pattern clause*)

    name ::= symbol | string
    pattern ::= (item*)
    item ::= number | symbol | string | pattern | variable
    variable ::= ?symbol
    clause ::= (ISSUES issue*)
            | (NODES node*)
            | (ORDERINGS ordering*)
            | (CONSTRAINTS constraint*)
    issue ::= (ISSUE pattern)
    node ::= (node-id pattern)
    ordering ::= ({node-id | (node-id*)}*)
    constraint ::= (WORLD-STATE CONDITION pattern = value)
                |  (WORLD-STATE EFFECT pattern = value)
    value ::= item
 

See Also:
Domain, expandAllOrderings(LList)

Inner Class Summary
protected static class LTF_Parser.ConstraintParser
           
 
Field Summary
protected  java.lang.String filename
           
protected  java.lang.Object lastRead
           
protected  LispReader lin
           
protected  MatchTable parsers
           
 
Fields inherited from interface ix.iface.domain.LTF_Symbols
Q_PATTERN, Q_VALUE, S_CONSTRAINTS, S_ISSUE, S_ISSUES, S_NODES, S_ORDERINGS, S_REFINEMENT
 
Constructor Summary
LTF_Parser()
           
LTF_Parser(java.io.File file)
           
LTF_Parser(java.lang.String filename)
           
 
Method Summary
protected  void addConstraintParsers()
           
(package private) static LList ensureList(java.lang.Object a)
           
static LList expandAllOrderings(LList orderings)
          Expands a list of orderings into a list of simple orderings.
static LList expandOrdering(LList ordering)
           
(package private) static LList expandOrderPair(java.lang.Object left, java.lang.Object right)
           
 LList makeConstraints(LList items)
           
 LList makeIssues(LList items)
           
 LList makeNodes(LList items)
           
 LList makeOrderings(LList items)
           
 Refinement makeRefinement(LList def)
           
 Constraint parseConstraint(java.lang.Object spec)
           
 Domain readDomain()
           
 Domain readDomain(Domain dom)
           
protected  void syntaxError(java.lang.String message)
           
 
Methods inherited from class ix.iface.domain.DomainParser
getLibraryDirectory, loadDomain, makeParser, makeParser
 
Methods inherited from class java.lang.Object
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

filename

protected java.lang.String filename

lin

protected LispReader lin

lastRead

protected java.lang.Object lastRead

parsers

protected MatchTable parsers
Constructor Detail

LTF_Parser

public LTF_Parser(java.lang.String filename)
           throws java.io.FileNotFoundException

LTF_Parser

public LTF_Parser(java.io.File file)
           throws java.io.FileNotFoundException

LTF_Parser

public LTF_Parser()
Method Detail

readDomain

public Domain readDomain()
Overrides:
readDomain in class DomainParser

readDomain

public Domain readDomain(Domain dom)
Overrides:
readDomain in class DomainParser

syntaxError

protected void syntaxError(java.lang.String message)

makeRefinement

public Refinement makeRefinement(LList def)

makeNodes

public LList makeNodes(LList items)

makeOrderings

public LList makeOrderings(LList items)

makeConstraints

public LList makeConstraints(LList items)

makeIssues

public LList makeIssues(LList items)

expandAllOrderings

public static LList expandAllOrderings(LList orderings)
Expands a list of orderings into a list of simple orderings. Each simple ordering is a pair of node ids: (before after).

Each ordering is a list representing a sequence. Consider adjacent elements A and B in such a list. Each node in A is linked before each node in B. For example, (1 (2 3) 4) is equivalent to the four separate lists (1 2), (1 3), (2 4), (3 4).


expandOrdering

public static LList expandOrdering(LList ordering)

expandOrderPair

static LList expandOrderPair(java.lang.Object left,
                             java.lang.Object right)

ensureList

static LList ensureList(java.lang.Object a)

parseConstraint

public Constraint parseConstraint(java.lang.Object spec)

addConstraintParsers

protected void addConstraintParsers()