remove obsolete file

cvs
Slava Pestov 2005-04-28 21:29:11 +00:00
parent 3f38246bff
commit d9764b0b8e
1 changed files with 0 additions and 323 deletions

View File

@ -1,323 +0,0 @@
/* :folding=explicit:collapseFolds=1: */
/*
* $Id$
*
* Copyright (C) 2004, 2005 Slava Pestov.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* DEVELOPERS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package factor;
import factor.parser.*;
import java.io.*;
import java.util.*;
public class DefaultVocabularyLookup implements VocabularyLookup
{
public static final Cons DEFAULT_USE = new Cons("syntax",new Cons("scratchpad",null));
public static final String DEFAULT_IN = "scratchpad";
/**
* Maps vocabulary names to vocabularies.
*/
private Map vocabularies;
//{{{ DefaultVocabularyLookup constructor
public DefaultVocabularyLookup()
{
vocabularies = new HashMap();
/* comments */
FactorWord lineComment = define("syntax","!");
lineComment.parsing = new LineComment(lineComment);
FactorWord stackComment = define("syntax","(");
stackComment.parsing = new StackComment(stackComment);
FactorWord docComment = define("syntax","#!");
docComment.parsing = new LineComment(docComment);
/* strings */
FactorWord str = define("syntax","\"");
str.parsing = new StringLiteral(str);
FactorWord sbuf = define("syntax","SBUF\"");
sbuf.parsing = new StringBufferLiteral(str);
FactorWord ch = define("syntax","CHAR:");
ch.parsing = new CharLiteral(ch);
/* constants */
FactorWord t = define("syntax","t");
t.parsing = new T(t);
FactorWord f = define("syntax","f");
f.parsing = new F(f);
FactorWord complex = define("syntax","#{");
complex.parsing = new ComplexLiteral(complex,"}#");
/* lists */
FactorWord bra = define("syntax","[");
bra.parsing = new Bra(bra);
FactorWord ket = define("syntax","]");
ket.parsing = new Ket(bra,ket);
/* conses */
FactorWord beginCons = define("syntax","[[");
beginCons.parsing = new BeginCons(beginCons);
FactorWord endCons = define("syntax","]]");
endCons.parsing = new EndCons(beginCons,endCons);
/* vectors */
FactorWord beginVector = define("syntax","{");
beginVector.parsing = new BeginVector(beginVector);
FactorWord endVector = define("syntax","}");
endVector.parsing = new EndVector(beginVector,endVector);
/* word defs */
FactorWord def = define("syntax",":");
def.parsing = new Def(def);
FactorWord ine = define("syntax",";");
ine.parsing = new Ine(ine);
FactorWord symbol = define("syntax","SYMBOL:");
symbol.parsing = new Definer(symbol);
/* reading numbers with another base */
FactorWord bin = define("syntax","BIN:");
bin.parsing = new Base(bin,2);
FactorWord oct = define("syntax","OCT:");
oct.parsing = new Base(oct,8);
FactorWord hex = define("syntax","HEX:");
hex.parsing = new Base(hex,16);
/* vocabulary parsing words */
FactorWord noParsing = define("syntax","POSTPONE:");
noParsing.parsing = new NoParsing(noParsing);
FactorWord defer = define("syntax","DEFER:");
defer.parsing = new Definer(defer);
FactorWord in = define("syntax","IN:");
in.parsing = new In(in);
FactorWord use = define("syntax","USE:");
use.parsing = new Use(use);
FactorWord using = define("syntax","USING:");
using.parsing = new Using(using);
FactorWord pushWord = define("syntax","\\");
pushWord.parsing = new PushWord(pushWord);
/* OOP */
FactorWord generic = define("syntax","GENERIC:");
generic.parsing = new Definer(generic);
FactorWord beginMethod = define("syntax","M:");
beginMethod.parsing = new BeginMethod(beginMethod);
FactorWord beginConstructor = define("syntax","C:");
beginConstructor.parsing = new BeginConstructor(beginConstructor);
FactorWord beginPredicate = define("syntax","PREDICATE:");
beginPredicate.parsing = new BeginPredicate(beginPredicate);
FactorWord beginUnion = define("syntax","UNION:");
beginUnion.parsing = new ClassDefinition(beginUnion);
FactorWord beginBuiltin = define("syntax","BUILTIN:");
beginBuiltin.parsing = new ClassDefinition(beginBuiltin);
FactorWord tuple = define("syntax","TUPLE:");
tuple.parsing = new Tuple(tuple);
FactorWord primitive = define("syntax","PRIMITIVE:");
primitive.parsing = new Primitive(primitive);
/* Alien */
FactorWord beginStruct = define("alien","BEGIN-STRUCT:");
beginStruct.parsing = new BeginStruct(beginStruct);
FactorWord endStruct = define("alien","END-STRUCT");
endStruct.parsing = new EndStruct(beginStruct,endStruct);
FactorWord field = define("alien","FIELD:");
field.parsing = new Field(field);
} //}}}
//{{{ getVocabulary() method
public Map getVocabulary(String name)
{
return (Map)vocabularies.get(name);
} //}}}
//{{{ searchVocabulary() method
/**
* Search in the given vocabulary for the given word.
*/
public FactorWord searchVocabulary(String vname, String name)
{
Map v = getVocabulary(vname);
if(v != null)
return (FactorWord)v.get(name);
else
return null;
} //}}}
//{{{ searchVocabulary() method
/**
* Search through the given vocabulary list for the given word.
*/
public FactorWord searchVocabulary(Cons vocabulary, String name)
{
while(vocabulary != null)
{
FactorWord word = searchVocabulary(
(String)vocabulary.car,name);
if(word != null)
return word;
vocabulary = vocabulary.next();
}
return null;
} //}}}
//{{{ define() method
/**
* Define a word in the given vocabulary if it doesn't exist already.
*/
public FactorWord define(String vocabulary, String name)
{
Map v = getVocabulary(vocabulary);
if(v == null)
{
v = new HashMap();
vocabularies.put(vocabulary,v);
}
Object value = v.get(name);
if(value instanceof FactorWord)
return (FactorWord)value;
else
{
// save to same workspace as vocabulary,
// or no workspace if vocabulary is builtins
FactorWord word = new FactorWord(this,vocabulary,name);
v.put(name,word);
return word;
}
} //}}}
//{{{ forget() method
public void forget(FactorWord word)
{
Map vocab = (Map)vocabularies.get(word.vocabulary);
if(vocab != null)
vocab.remove(word.name);
} //}}}
//{{{ getVocabularies() method
public Cons getVocabularies()
{
Cons vocabs = null;
Iterator iter = vocabularies.keySet().iterator();
while(iter.hasNext())
vocabs = new Cons(iter.next(),vocabs);
return vocabs;
} //}}}
//{{{ getWordCompletions() method
/**
* @param use A list of vocabularies.
* @param word A substring of the word name to complete
* @param anywhere If true, matches anywhere in the word name are
* returned; otherwise, only matches from beginning.
* @param completions Set to add completions to
*/
public void getWordCompletions(Cons use, String word, boolean anywhere,
Set completions) throws Exception
{
while(use != null)
{
String vocab = (String)use.car;
getWordCompletions(vocab,word,anywhere,completions);
use = use.next();
}
} //}}}
//{{{ isCompletion() method
public boolean isCompletion(String match, String against, boolean anywhere)
{
if(anywhere)
{
if(against.indexOf(match) != -1)
return true;
}
else
{
if(against.startsWith(match))
return true;
}
return false;
} //}}}
//{{{ getWordCompletions() method
public void getWordCompletions(String vocab, String word, boolean anywhere,
Set completions) throws Exception
{
Map v = (Map)vocabularies.get(vocab);
if(v == null)
return;
Iterator words = v.values().iterator();
while(words.hasNext())
{
FactorWord w = (FactorWord)words.next();
if(w != null && w.name != null)
{
if(!completions.contains(w))
{
if(isCompletion(word,w.name,anywhere))
completions.add(w);
}
}
}
} //}}}
//{{{ getVocabCompletions() method
/**
* @param vocab A string to complete
* @param anywhere If true, matches anywhere in the vocab name are
* returned; otherwise, only matches from beginning.
*/
public String[] getVocabCompletions(String vocab, boolean anywhere)
throws Exception
{
List completions = new ArrayList();
Cons vocabs = getVocabularies();
while(vocabs != null)
{
String v = (String)vocabs.car;
if(isCompletion(vocab,v,anywhere))
completions.add(v);
vocabs = vocabs.next();
}
return (String[])completions.toArray(new String[completions.size()]);
} //}}}
//{{{ parseObject() method
public Cons parseObject(String source) throws Exception
{
FactorReader parser = new FactorReader(
"parseObject()",
new BufferedReader(new StringReader(source)),
true,this);
return parser.parse();
} //}}}
}