Package gnu.kawa.lispexpr
Class LispLanguage
java.lang.Object
gnu.expr.Language
gnu.kawa.lispexpr.LispLanguage
- Direct Known Subclasses:
Scheme
Language sub-class for Lisp-like languages (including Scheme).
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final Symbolstatic final Symbolstatic final Namespaceprotected ReadTableThe defaultReadTablefor this language.static final SimpleSymbolstatic final Namespacestatic StaticFieldLocationstatic final SymbolUsed for Kawa infix ':' operator.static final Stringstatic final Symbolstatic final Stringstatic final Stringstatic final Symbolstatic final Stringstatic final Symbolstatic final NamespaceThe unit namespace contains the bindings for symbols such as `cm', `s', etc.static final Stringstatic final StringFields 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 -
Method Summary
Modifier and TypeMethodDescriptionabstract ReadTableCreate a freshReadTableappropriate for this language.declFromField(ModuleExp mod, Object fvalue, Field fld) static TypedecodeArrayType(String name) protected voiddefSntxStFld(String name, String cname) protected voiddefSntxStFld(String name, String cname, String fname) Declare in the current Environment a Syntax bound to a static field.protected SymbolfromLangSymbol(Object sym) getLexer(gnu.kawa.io.InPort inp, SourceMessages messages) getNamedType(String name) Get the correspondingTypefor a given name.getPackageStyleType(String name) Try to get a type of the form lang:type.getTypeFor(Class clas) getTypeFor(Object spec, boolean lenient) Convert a "type value" to a Type.booleanAre keywords self-evaluating? True in CommonLisp.static SymbollangSymbolToSymbol(Object sym) Convert the Language's idea of a symbol to a gnu.mapping.Symbol.booleanparse(Compilation comp, int options) voidresolve(Compilation comp) Resolve names and other post-parsing processing.booleanMethods 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 Details
-
quote_str
- See Also:
-
unquote_str
- See Also:
-
unquotesplicing_str
- See Also:
-
quasiquote_str
- See Also:
-
quasiquote_sym
-
dots3_sym
-
splice_str
- See Also:
-
splice_sym
-
splice_colon_str
- See Also:
-
splice_colon_sym
-
lookup_sym
Used for Kawa infix ':' operator. -
bracket_list_sym
-
bracket_apply_sym
-
getNamedPartLocation
-
unitNamespace
The unit namespace contains the bindings for symbols such as `cm', `s', etc. -
constructNamespace
-
entityNamespace
-
defaultReadTable
The defaultReadTablefor this language.
-
-
Constructor Details
-
LispLanguage
public LispLanguage()
-
-
Method Details
-
createReadTable
Create a freshReadTableappropriate for this language. -
getLexer
-
getCompilationClass
- Overrides:
getCompilationClassin classLanguage
-
parse
- Specified by:
parsein classLanguage- Throws:
IOExceptionSyntaxException
-
resolve
Resolve names and other post-parsing processing. -
declFromField
- Overrides:
declFromFieldin classLanguage
-
defSntxStFld
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.
-
defSntxStFld
-
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
-
langSymbolToSymbol
Convert the Language's idea of a symbol to a gnu.mapping.Symbol. -
fromLangSymbol
-
getTypeMap
-
getPackageStyleType
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.
-
decodeArrayType
-
getNamedType
Description copied from class:LanguageGet the correspondingTypefor a given name. This is currently used as a hook in the conversion of type designators to types.LispLanguageuses 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:
getNamedTypein classLanguage- Parameters:
name- The name of a type to search for.- Returns:
- The corresponding
Typeif a suitable one can be found, otherwisenull.
-
getTypeFor
Description copied from class:LanguageConvert 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:
getTypeForin classLanguage
-
getTypeFor
- Overrides:
getTypeForin classLanguage
-
getPrimaryPrompt
- Overrides:
getPrimaryPromptin classLanguage
-
getSecondaryPrompt
- Overrides:
getSecondaryPromptin classLanguage
-