Package gnu.kawa.lispexpr
Class LispLanguage
- java.lang.Object
-
- gnu.expr.Language
-
- gnu.kawa.lispexpr.LispLanguage
-
-
Field Summary
Fields Modifier and Type Field Description static Symbol
bracket_apply_sym
static Symbol
bracket_list_sym
static Namespace
constructNamespace
protected ReadTable
defaultReadTable
The defaultReadTable
for this language.static SimpleSymbol
dots3_sym
static Namespace
entityNamespace
static StaticFieldLocation
getNamedPartLocation
static Symbol
lookup_sym
Used for Kawa infix ':' operator.static String
quasiquote_str
static Symbol
quasiquote_sym
static String
quote_str
static String
splice_colon_str
static Symbol
splice_colon_sym
static String
splice_str
static Symbol
splice_sym
static Namespace
unitNamespace
The unit namespace contains the bindings for symbols such as `cm', `s', etc.static String
unquote_str
static String
unquotesplicing_str
-
Fields inherited from class gnu.expr.Language
current, environ, FUNCTION_NAMESPACE, global, NAMESPACE_PREFIX_NAMESPACE, PARSE_CURRENT_NAMES, PARSE_EMIT_MAIN, PARSE_EXPLICIT, PARSE_FOR_APPLET, PARSE_FOR_EVAL, PARSE_FOR_LINT, PARSE_FOR_SERVLET, PARSE_IMMEDIATE, PARSE_INTERACTIVE_MODULE, PARSE_ONE_LINE, PARSE_PROLOG, requirePedantic, userEnv, VALUE_NAMESPACE
-
-
Constructor Summary
Constructors Constructor Description LispLanguage()
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description abstract ReadTable
createReadTable()
Create a freshReadTable
appropriate for this language.Declaration
declFromField(ModuleExp mod, Object fvalue, Field fld)
static Type
decodeArrayType(String name)
protected void
defSntxStFld(String name, String cname)
protected void
defSntxStFld(String name, String cname, String fname)
Declare in the current Environment a Syntax bound to a static field.protected Symbol
fromLangSymbol(Object sym)
String
getCompilationClass()
LispReader
getLexer(gnu.kawa.io.InPort inp, SourceMessages messages)
Type
getNamedType(String name)
Get the correspondingType
for a given name.Type
getPackageStyleType(String name)
Try to get a type of the form lang:type.String
getPrimaryPrompt()
String
getSecondaryPrompt()
Type
getTypeFor(Class clas)
Type
getTypeFor(Object spec, boolean lenient)
Convert a "type value" to a Type.protected HashMap<String,Type>
getTypeMap()
boolean
keywordsAreSelfEvaluating()
Are keywords self-evaluating? True in CommonLisp.static Symbol
langSymbolToSymbol(Object sym)
Convert the Language's idea of a symbol to a gnu.mapping.Symbol.boolean
parse(Compilation comp, int options)
void
resolve(Compilation comp)
Resolve names and other post-parsing processing.boolean
selfEvaluatingSymbol(Object obj)
-
Methods inherited from class gnu.expr.Language
asType, booleanObject, booleanValue, coerceFromObject, coerceToObject, decodeType, defAliasStFld, define, defineFunction, defineFunction, defProcStFld, defProcStFld, defProcStFld, defProcStFldAs, detect, detect, detect, encodeType, eval, eval, eval, eval, eval, eval, eval, eval, eval, formatType, getCompilation, getCompilation, getDefaultLanguage, getEnvironment, getEnvPropertyFor, getEnvPropertyFor, getExtensions, getFormat, getInstance, getInstance, getInstanceFromFilenameExtension, getLangEnvironment, getLangTypeFor, getLanguages, getName, getNamespaceOf, getNewEnvironment, getOutputConsumer, getSymbol, getTypeFor, getTypeFor, getTypeFor, hasNamespace, hasSeparateFunctionNamespace, isTrue, isValidJavaName, loadClass, lookup, lookupBuiltin, mangleName, noValue, parse, parse, parse, parse, registerLanguage, restoreCurrent, runAsApplication, setCurrentLanguage, setDefaults, setSaveCurrent, unionType
-
-
-
-
Field Detail
-
quote_str
public static final String quote_str
- See Also:
- Constant Field Values
-
unquote_str
public static final String unquote_str
- See Also:
- Constant Field Values
-
unquotesplicing_str
public static final String unquotesplicing_str
- See Also:
- Constant Field Values
-
quasiquote_str
public static final String quasiquote_str
- See Also:
- Constant Field Values
-
quasiquote_sym
public static final Symbol quasiquote_sym
-
dots3_sym
public static final SimpleSymbol dots3_sym
-
splice_str
public static final String splice_str
- See Also:
- Constant Field Values
-
splice_sym
public static final Symbol splice_sym
-
splice_colon_str
public static final String splice_colon_str
- See Also:
- Constant Field Values
-
splice_colon_sym
public static final Symbol splice_colon_sym
-
lookup_sym
public static final Symbol lookup_sym
Used for Kawa infix ':' operator.
-
bracket_list_sym
public static final Symbol bracket_list_sym
-
bracket_apply_sym
public static final Symbol bracket_apply_sym
-
getNamedPartLocation
public static StaticFieldLocation getNamedPartLocation
-
unitNamespace
public static final Namespace unitNamespace
The unit namespace contains the bindings for symbols such as `cm', `s', etc.
-
constructNamespace
public static final Namespace constructNamespace
-
entityNamespace
public static final Namespace entityNamespace
-
defaultReadTable
protected ReadTable defaultReadTable
The defaultReadTable
for this language.
-
-
Method Detail
-
createReadTable
public abstract ReadTable createReadTable()
Create a freshReadTable
appropriate for this language.
-
getLexer
public LispReader getLexer(gnu.kawa.io.InPort inp, SourceMessages messages)
-
getCompilationClass
public String getCompilationClass()
- Overrides:
getCompilationClass
in classLanguage
-
parse
public boolean parse(Compilation comp, int options) throws IOException, SyntaxException
- Specified by:
parse
in classLanguage
- Throws:
IOException
SyntaxException
-
resolve
public void resolve(Compilation comp)
Resolve names and other post-parsing processing.
-
declFromField
public Declaration declFromField(ModuleExp mod, Object fvalue, Field fld)
- Overrides:
declFromField
in classLanguage
-
defSntxStFld
protected void defSntxStFld(String name, String cname, String fname)
Declare in the current Environment a Syntax bound to a static field.- Parameters:
name
- the procedure's source-level name.cname
- the name of the class containing the field.fname
- the name of the field, which should be a static final field whose type extends kawa.lang.Syntax.
-
keywordsAreSelfEvaluating
public boolean keywordsAreSelfEvaluating()
Are keywords self-evaluating? True in CommonLisp. Used to be true for Scheme also, but now in Scheme literal keywords should only be used for keyword arguments; if you want a Keyword value if should be quoted.- Returns:
- true if we should treat keywords as self-evaluating.
-
selfEvaluatingSymbol
public boolean selfEvaluatingSymbol(Object obj)
-
langSymbolToSymbol
public static Symbol langSymbolToSymbol(Object sym)
Convert the Language's idea of a symbol to a gnu.mapping.Symbol.
-
getPackageStyleType
public Type getPackageStyleType(String name)
Try to get a type of the form lang:type. E.g. elisp:buffer.- Parameters:
name
- The package-style type name as a string.- Returns:
- null if no such type could be found, or the corresponding
Type
.
-
getNamedType
public Type getNamedType(String name)
Description copied from class:Language
Get the correspondingType
for a given name. This is currently used as a hook in the conversion of type designators to types.LispLanguage
uses it to check for package style type designators such asemacs:buffer
, and CommonLisp uses it to check for a type designator "boolean", so that is can return the appropriate boolean type. This is a bit over-specialised, but it beats actually overriding getTypeFor(String) in LispLanguage, CommonLisp just for these minor changes... FIXME!- Overrides:
getNamedType
in classLanguage
- Parameters:
name
- The name of a type to search for.- Returns:
- The corresponding
Type
if a suitable one can be found, otherwisenull
.
-
getTypeFor
public Type getTypeFor(Object spec, boolean lenient)
Description copied from class:Language
Convert a "type value" to a Type. This is used to process types from source code. Normally, an identifier that resolves to a class name should resolve to the raw ClassType, rather than a language specific class (which might e.g. use a different constructor). These may be exceptions: specifically, given java.lang.String, we do want to use language-specific conversion to String.- Overrides:
getTypeFor
in classLanguage
-
getTypeFor
public Type getTypeFor(Class clas)
- Overrides:
getTypeFor
in classLanguage
-
getPrimaryPrompt
public String getPrimaryPrompt()
- Overrides:
getPrimaryPrompt
in classLanguage
-
getSecondaryPrompt
public String getSecondaryPrompt()
- Overrides:
getSecondaryPrompt
in classLanguage
-
-