diff options
author | David Robillard <d@drobilla.net> | 2010-08-19 03:25:43 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2010-08-19 03:25:43 +0000 |
commit | 9a1c3c7cfc96cb6ee1c9f7bc103b99b89da43d6e (patch) | |
tree | 3c0f7348198b9c722c67ed6f2e819fa8e8150767 /src/compile.cpp | |
parent | 1bc26254cf83449017b24afd90420916d8f512aa (diff) | |
download | resp-9a1c3c7cfc96cb6ee1c9f7bc103b99b89da43d6e.tar.gz resp-9a1c3c7cfc96cb6ee1c9f7bc103b99b89da43d6e.tar.bz2 resp-9a1c3c7cfc96cb6ee1c9f7bc103b99b89da43d6e.zip |
Coherent AString and Lexeme implementation.
A Lexeme is any "token" read from input, a lexeme has not yet beeen parsed
and could parse to anything, e.g. a string, an expression, a number, etc.
Lexemes are not (yet?) exposed to the language or ever compiled.
A String is a string literal, which can contain any character directly
except " and \. There are two special escapes: \" and \\, any other
character following a \ is a syntax error.
Fix garbage collection of REPL objects, leading to type errors from
type variable re-use because a type variable for a given AST's /address/
exists, but that address has actually been deleted and reused by new
(i.e. make top level REPL expressions and types be GC roots).
git-svn-id: http://svn.drobilla.net/resp/resp@261 ad02d1e2-f140-0410-9f75-f8b11f17cedd
Diffstat (limited to 'src/compile.cpp')
-rw-r--r-- | src/compile.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/compile.cpp b/src/compile.cpp index 70056db..f5a4128 100644 --- a/src/compile.cpp +++ b/src/compile.cpp @@ -32,6 +32,18 @@ COMPILE_LITERAL(float); COMPILE_LITERAL(bool); CVal +AString::compile(CEnv& cenv) throw() +{ + return cenv.engine()->compileString(cenv, c_str()); +} + +CVal +ALexeme::compile(CEnv& cenv) throw() +{ + return cenv.engine()->compileString(cenv, c_str()); +} + +CVal ASymbol::compile(CEnv& cenv) throw() { if (cenv.vals.topLevel(this) && cenv.type(this)->head()->str() != "Fn") { |