|
Lexicon.java
|
// FILE. . . . . /home/hak/ilt/src/ilog/rif/Lexicon.java // EDIT BY . . . Hassan Ait-Kaci // ON MACHINE. . Latitude407.Ilog.Biz // STARTED ON. . Wed May 3 14:37:18 2006 package ilog.rif;
This is a simple lexicon class implementing a very basic token
discriminator for the tokenizer in Tokenizer.java. It uses explicit
declararations for functional and relation symbols since there is no
a priori means to distinguish them - at least not from the
information in
[RIF] Extensible Design.
|
import java.util.HashMap;
import java.util.HashSet;
class Lexicon
{
| Returns true iff the specified string starts with a question mark, and every other character is alphanumeric or underscore. |
public final static boolean isVariable (String s)
{
char c = s.charAt(0);
if (c != '?')
return false;
for (int i=1; i<s.length(); i++)
{
c = s.charAt(i);
if (!Character.isLetterOrDigit(c) && c != '_')
return false;
}
return true;
}
| The following is a store for RCL reserved words. |
public static final HashSet reserved = new HashSet();
| The following is a store for RCL function identifiers, associated with a corresponding XML tag. |
public static final HashMap functions = new HashMap();
| The following is a store for RCL relation identifiers, associated with a corresponding XML tag. |
public static final HashMap relations = new HashMap();
| Returns true iff the specified string is a function identifier. |
public final static boolean isFunction (String word)
{
return functions.containsKey(word);
}
| Returns true iff the specified string is a relation identifier. |
public final static boolean isRelation (String word)
{
return relations.containsKey(word);
}
| Returns true iff the specified string is a reserved RCL word. |
public final static boolean isReserved (String word)
{
return reserved.contains(word);
}
| Declares the specified string as a function identifier whose XML tag is itself. |
static final void function (String word)
{
functions.put(word,word);
}
| Declares the specified string as a function identifier, with specified XML tag. |
static final void function (String word, String tag)
{
functions.put(word,tag);
}
| Declares the specified string as a relation identifier whose XML tag is itself. |
static final void relation (String word)
{
relations.put(word,word);
}
| Declares the specified string as a relation identifier, with specified XML tag. |
static final void relation (String word, String tag)
{
relations.put(word,tag);
}
| Declares the specified string as a reserved word. |
static final void reserved (String word)
{
reserved.add(word);
}
| Initializes the table of function and relation sysmbols. |
static
{
reserved("Exists");
reserved("Forall");
reserved("Or");
reserved("And");
reserved("Neg");
reserved("Naf");
relation("reject");
relation("accept");
relation("perishable");
relation("delivered");
relation("scheduled");
relation("timediff");
relation("greaterThan");
relation("special");
relation("purchase");
relation("knows");
relation("high");
function("book");
}
}
This file was generated on Thu Sep 21 08:10:12 PDT 2006 from file Lexicon.java
by the ilog.language.tools.Hilite Java tool written by Hassan Aït-Kaci