Classes that represent and operate on simplified SExpressions used
in IOA .il files and in registration templates.
When using SExps, consider the following idioms:
SList list = new SList(new SValue[] {SExp.makeSValue("foo"), SExp.makeSValue(1), new SList()});
// Makes a new SList that represents "(foo 1 ())"
SList list2 = (new SParser()).parser ("(a /\\ b)");
// Creates an SList that represents "(a /\ b)". Notice that no escaping is necessary.
// Type-safe casting with SValueExceptions
String first = list.getString(0); // Valid
String secondS = list.getString(1); // Throws an SValueException, invalid type
float secondNum = list.getNumber(1); // Okay
// The following is equivalent but preserves the List interface
SList third = SExp.getSList(list.get(2)); // Valid
Iterator i = list.iterator();
String alsoFirst = SExp.getString(i.next()); // Valid
// Note that no index checking is done.