small scheme interpreter
git clone git://
Log | Files | Refs | LICENSE

DateCommit messageAuthorFiles+-
2014-05-19 17:13Make iris work non-interactively as wellsin1+10-4
2014-05-19 14:01Use a linked list for handling the environmentssin2+20-23
2014-05-19 13:43Fix (diff)sin1+2-0
2014-05-19 13:41No need to define evalplus() recursivelysin1+18-17
2014-05-19 12:05No need to use a do-while loopsin1+2-2
2014-05-19 12:01Add tests dirsin2+18-0
2014-05-19 11:49Initial implementation of lambda!sin1+122-45
2014-05-19 11:49Remember to invalidate environmentsin1+1-0
2014-05-19 11:41Only replace symbols in the top environmentsin1+5-8
2014-05-19 10:26Don't modify the object in placesin1+6-4
2014-05-19 09:49Increase number of environmentssin1+1-1
2014-05-16 14:49Prepare the ground for compound proceduressin1+9-9
2014-05-16 14:23Add car, cdr and conssin1+59-0
2014-05-16 14:22Fix handling of quotes - no multiple argumentssin1+8-5
2014-05-16 14:09Add lt/gt/eqsin1+97-10
2014-05-16 12:27Report unbound identifiers for pair evaluationsin1+1-1
2014-05-16 12:26Be consistent and use a switch statement in eval()sin1+14-15
2014-05-16 12:23Rename some variables to reflect their meaning bettersin1+22-22
2014-05-16 12:19Rename i.s to for identifierssin1+19-19
2014-05-16 12:16Add integer type predicatesin4+53-31
2014-05-16 11:56Simplify evaluation of builtins and proceduressin1+9-14
2014-05-16 10:46Add null predicatesin1+22-0
2014-05-16 10:41Bomb out on multiple arguments to booleansin1+4-2
2014-05-16 10:37Add boolean proc and clean up a bitsin1+39-38
2014-05-16 10:24Be more consistent when printing proceduressin1+1-1
2014-05-16 10:22Add support for primitive proceduressin1+94-58
2014-05-16 09:43Bomb out on evaluation errors from plus/diffsin1+4-0
2014-05-16 09:40Fix plus/diffsin1+43-27
2014-05-15 16:03Add diffsin1+27-0
2014-05-15 15:09Use car()/cdr()sin1+7-7
2014-05-15 15:02Add plus builtinsin1+27-0
2014-05-15 14:45Rename p to pair because we'll soon have procsin1+7-7
2014-05-15 12:36Add if handlingsin1+23-0
2014-05-15 11:41Fix indentationsin1+45-47
2014-05-15 11:29Implement setsin1+31-0
2014-05-15 11:21Do not allow multiple arguments to definesin1+2-0
2014-05-15 11:16Check for errors while parsing definesin1+3-1
2014-05-15 11:04Don't segfault on (define a) etc.sin1+3-1
2014-05-15 10:46Allow to override sym -> object associationssin1+11-4
2014-05-15 10:41We already have the macros so use themsin1+2-2
2014-05-15 10:34Parse definesin1+82-7
2014-05-15 10:06Split long linesin1+2-1
2014-05-15 10:05Prepare the ground for more builtinssin1+22-9
2014-05-15 09:45Make error message more explicitsin1+3-1
2014-05-15 09:38Fix comment alignmentsin1+1-1
2014-05-15 09:36Eval identifierssin3+31-11
2014-05-14 15:06Staticise quoted()sin1+1-1
2014-05-14 13:54Use identifier() for builtinssin1+1-6
2014-05-14 13:51init() before bannersin1+1-1
2014-05-14 13:50Add the quote identifier as wellsin3+23-15
2014-05-14 13:45Fix c/p errorsin1+2-2
2014-05-14 13:21Staticise quote()sin1+1-1
2014-05-14 13:20Use a switch statementsin1+4-3
2014-05-14 13:14Implementation quotationsin1+38-2
2014-05-14 12:50Rename pushbacktok() to puttok()sin3+5-4
2014-05-14 12:46Parse pairs/listssin3+98-0
2014-05-14 10:52Remove dead codesin1+2-2
2014-05-14 10:46Comments to clarify magic numberssin1+2-0
2014-05-14 10:43Parse identifiers toosin1+20-0
2014-05-14 10:40Make functions uniform, pass around errors as objectssin1+24-58
2014-05-14 16:34Stylistic changesin1+1-1
2014-05-14 16:34Add intro messagesin1+1-0
2014-05-14 16:33Scream for unhandled tokenssin1+3-0
2014-05-14 16:32Newline is added by replsin1+1-1
2014-05-14 16:29No need to export these, treat them as opaquesin2+44-44
2014-05-14 16:25Add resetenv()sin2+7-0
2014-05-14 16:21define's come firstsin2+5-5
2014-05-14 16:20Initialize envsin3+7-5
2014-05-14 16:17Add environment handlingsin2+47-12
2014-05-14 16:00addsym() should return the existing objectsin2+8-6
2014-05-14 15:51Add symtable handlingsin3+54-1
2014-05-14 15:26Some output just for debugging purposessin1+2-0
2014-05-14 15:22Add wrappers for memory allocationsin4+40-47
2014-05-14 15:16Staticise functionssin2+8-9
2014-05-14 15:15Add commentsin1+2-0
2014-05-14 15:15remember to fflush after printing the promptsin1+1-0
2014-05-14 15:12Fix c/p errorsin1+1-1
2014-05-14 15:11Die on oomsin1+4-2
2014-05-14 15:11Add freeobject()sin1+19-0
2014-05-14 15:06Set the number field in number()sin1+1-1
2014-05-14 15:03Make it look like an repl promptsin2+9-6
2014-05-14 14:59Add rudimentary parsing for self-evaluating objectssin3+176-17
2014-05-14 14:37Rename local varsin1+14-14
2014-05-13 15:35Rename tok2string to lexemesin3+3-3
2014-05-13 15:25Be consistent with namingsin1+5-5
2014-05-13 15:23Rename "State_" to Ssin1+50-50
2014-05-13 15:22Prefix token enumeration constants with 'T'sin4+45-45
2014-05-11 15:40't' comes after 'g'sin2+12-12
2014-05-11 15:39Rename extractstring() to tok2string()sin3+3-3
2014-05-11 15:35Guard against unexpected EOFsin1+6-0
2014-05-11 15:30Remove initlexer()sin3+0-9
2014-05-11 15:29Guard against overwriting the internal lexer buffersin1+7-1
2014-05-11 13:51Handle comments correctlysin1+2-6
2014-05-11 13:46No need to pushback on errorssin1+0-9
2014-05-11 13:39Re-organize the lexersin3+114-153
2014-05-09 19:52Use internal state variable to track the lexer's statesin1+26-23
2014-05-09 07:12lexerctx should be internal to lexer.csin3+38-11
2014-05-09 16:20Simplify Makefilesin1+3-6
2014-05-09 16:17Handle gracefully non-interactive inputsin1+11-5
2014-05-09 16:13Change debug output a bitsin1+12-12
2014-05-09 16:10Don't append CFLAGS etc.sin1+2-2
2014-05-09 15:58Factor out lexer driver in a separate functionsin1+16-10
2014-05-09 15:52Add utilsin4+36-3
2014-05-09 15:44Remove matchtype()sin2+0-7
2014-05-09 15:40Rename Illegal_Token to Illegal_Inputsin1+4-4
2014-05-09 15:36Rename tok to t where it makes sensesin2+10-10
2014-05-09 15:30Rename unknown token to illegal tokensin1+4-4
2014-05-09 14:52Factor out printtok() to debug.csin6+58-53
2014-05-09 14:45Add initial parser - no real functionality yetsin3+60-1
2014-05-09 13:32Handle quote tokens properlysin1+2-2
2014-05-09 13:26Add Makefilesin1+23-0
2014-05-09 13:13Add support for signed numberssin1+12-0
2014-05-09 12:58Add greetingsin1+1-0
2014-05-09 12:57No need to typedefsin1+3-3
2014-05-09 12:56State enumeration should be internal to the lexersin2+18-18
2014-05-09 12:49Eat spacesin1+3-0
2014-05-09 12:44Clarify semantics in extractstring()sin1+1-0
2014-05-09 12:41Add LICENSE details at top of filessin3+3-0
2014-05-09 12:41Add LICENSEsin1+21-0
2014-05-09 12:40Initial commitsin3+325-0