Table of Contents
The interpreter accepts requests and returns sets of objects.
A request contains one or more set expressions; if a request
contains multiple set expressions they are separated by
semi-colons [;
].
The details of how the objects are returned
for each set expression depend on
the environment.
A set expression consists of a sequence of tokens. White space or punctuation delimits tokens. A token may be punctuation, a constant, a name, or a reserved word. Names and reserved words consist of a string of alphanumeric characters or underscores starting with a letter or underscore. Reserved words will always start with a lower-case letter.
The only permissable punctuation within a set expression
are parentheses, which are used for grouping in set expressions,
filters or transforms; commas, which are used with certain
operators; the value operators,
and the regular expression matching operator ~
. Punctuation tokens are recognized as tokens
in themselves and don't have to be set off with whitespace.
There are two kinds of constants, integers and strings. Integer constants are a string of decimal digits and must specify a number between 0 and 2^32 -1 . There are two types of string constants:
Certain operators (~, ~=, substitute())
take regular expressions. Regular expressions can be contained in either kind of string constant, and are Java regular expressions
as defined in the documentation
for java.util.regex.Pattern
.
A sequence of one or more reserved words represents a set operator, a logical operator, a simple set expression, a filter or a transform.
Names are words that must not conflict with any of the reserved words, and must reference an expression or transform previously defined with the set command.
A valid set expression consists of one of the set expressions defined in the language, a name that had been defined as a set expression, a scalar value expression, a set expression with a transform prepended, two set expressions joined by one of the set operators, or a set expression enclosed within parentheses.
A transform is one of the transforms defined by the language, a name that has been defined as a transform, a transform with another transform appended, two transforms joined by one of the set operators, a filter, a count-preserving or group value expression, or a transform enclosed within parentheses.
A filter is one of the filters defined in the language,
a filter with the reserved word not
prepended,
two filters joined by the logical operators and
or
or
,
two value expressions related by one of the relational operators,
or a filter enclosed within parentheses.
A value expression is a constant, one of the value expression operators defined in the language, two value expressions with compatible context combined with value operators, or a value expression enclosed within parentheses.
Reserved Words:
abstract | execute | public |
all | exists | recursive |
arguments | fields | references |
and | finalToken | reference |
annotated | first | referenced |
annotations | from | resources |
any | import Java | same |
are | in | set |
array | is | static |
assembly C# | internal C#/CIL | string |
base | intersection | strings |
bundles | interface | substitute |
by | matching | that |
called | methodcast | to |
calls | methods | type |
cast | namespace C#/CIL | types |
catches | namespaces C#/CIL | uncalled |
class | not | uncorrelated |
classes | or | union |
containing | of | unique |
count | package Java | unset |
date | packages Java | using C#/CIL |
deintersection | polymorphic | with |
deprecated Java | previous | without |
derived | protected | write |
each | private | xor |
Reserved words all start with a lowercase letter. Therefore, it is a convention of the language that user defined operators (for set expressions or transforms) start with an uppercase letter; this will distinguish them from current and future reserved words.
browse-by-query home | antlersoft free software | sourceforge project page |