Commit Graph

65 Commits

Author SHA1 Message Date
Mike Cifelli 698305f07f Add the backtick facility
Resolves #20
2017-03-11 15:41:07 -05:00
Mike Cifelli 655f49e612 Add DEFMACRO special function
Resolves #16
2017-03-10 15:08:42 -05:00
Mike Cifelli e78e18df98 Add a simple GENSYM function 2017-03-10 13:14:16 -05:00
Mike Cifelli 87eb0204f5 Remove SETF function 2017-03-07 16:41:26 -05:00
Mike Cifelli 736e230de9 Add LET* special function 2017-03-07 13:26:24 -05:00
Mike Cifelli d1060a8aad Add aliases for several functions 2017-03-07 13:15:40 -05:00
Mike Cifelli 77a341a1a7 Add more advanced lisp objects
Added a class to compute compound interest.

An alias for FUNCALL has been added: CALL

Refactored some acceptance tests to load code from files.
2017-03-06 16:52:06 -05:00
Mike Cifelli 8a719c8e44 Add unit test for LOAD 2017-03-05 10:41:49 -05:00
Mike Cifelli 04cb46e94d Store the base directory for an interpreted files
A bug was resolved where some functions were getting a null
ErrorManager.

A reset funtion was added to RuntimeEnvironment.

Resolves #15
2017-03-05 10:20:31 -05:00
Mike Cifelli 311a3b4036 Cleaned up code and tests 2017-03-03 15:06:49 -05:00
Mike Cifelli 503b19a5e1 Resolves #14 - Load now keeps track of directories 2017-03-03 12:56:06 -05:00
Mike Cifelli ba53448c9d Exception checking unit tests were refactored 2017-03-03 12:07:23 -05:00
Mike Cifelli 2bd0c1a674 Major Refactor - Static constants and test case names 2017-03-02 09:54:23 -05:00
Mike Cifelli ba203d34b9 dlambda was converted for multiple method classes
Added several unit tests, including a failing one for CASE
Added an acceptance test for dlambda
2017-03-01 16:33:06 -05:00
Mike Cifelli 64e18fe076 Resolves #12 - &rest keyword added to lambda lists
Added unit tests and cleaned up some code
The setup for acceptance tests now cleans up the environment
2017-03-01 11:11:59 -05:00
Mike Cifelli 42191ec69d Parts of CASE and COND were refactored
Updated the terminology used in the code
Added test cases
Changed the format of error/warning messages
2017-02-28 16:16:43 -05:00
Mike Cifelli 4253145383 A few test cases were added for CASE 2017-02-28 15:07:37 -05:00
Mike Cifelli 05f75b627b Resolves #11 - The CASE special function has been added
Refactored some unit tests
2017-02-28 15:01:05 -05:00
Mike Cifelli d2dfe23083 Resolves #10 - The equality predicates have been refactored 2017-02-28 11:54:19 -05:00
Mike Cifelli 50a3f3be67 Resolves #6 - PROGN Special Function (Form) 2017-02-27 15:36:17 -05:00
Mike Cifelli d3e3f52e59 Altered SYMBOL-FUNCTION behavior and cleaned up some code 2017-02-27 14:10:20 -05:00
Mike Cifelli bf40feadec User defined functions now set up their scope correctly 2017-02-27 12:00:24 -05:00
Mike Cifelli 1fed0433e5 Formatted a source file 2017-02-25 19:12:34 -05:00
Mike Cifelli 78c7bf4d9c Added DEFINE-MACRO for user defined special functions (forms) 2017-02-25 19:11:31 -05:00
Mike Cifelli c83db3721c Finished changing car/cdr to first/rest in the code 2017-02-24 16:00:05 -05:00
Mike Cifelli 0c3d3ae024 Resolves #1 - Added the IF Special Form 2017-02-21 12:35:47 -05:00
Mike Cifelli b3ae5c9122 Added decorators for output text 2017-02-11 13:33:34 -05:00
Mike Cifelli ce1547d71a Formatted and cleaned some code 2017-02-11 10:51:37 -05:00
Mike Cifelli 6fa132313d Refactored error severity 2017-02-11 10:42:07 -05:00
Mike Cifelli bdcb2227c9 Removed RuntimeExceptions and associated logic 2017-02-09 12:09:51 -05:00
Mike Cifelli 1a25ddc35f Refactored the lisp interpreter builder and some error handling 2017-02-09 11:00:23 -05:00
Mike Cifelli 993df541aa Organized imports in several files 2017-02-06 13:44:35 -05:00
Mike Cifelli b6d717ec1c Formatted several files 2017-02-06 13:43:27 -05:00
Mike Cifelli 913fd031c6 Only allow a single interpreter to be built
Renamed Environment to RuntimeEnvironment
2017-02-06 13:39:05 -05:00
Mike Cifelli 4719e14d7f Added unit tests for the FunctionTable and ExecutionContext 2017-02-06 12:02:19 -05:00
Mike Cifelli c2a373dc85 Added the following built-ins: AND & OR 2017-02-05 16:00:56 -05:00
Mike Cifelli a9a47be6cd Allow DEFUN and LAMBDA with an empty body 2017-02-04 15:38:47 -05:00
Mike Cifelli 0a5228d5a7 Update argument validation and added unit tests
Fixed some bugs in LET and LAMBDA

Refactored the code in UserDefinedFunction
2017-02-04 13:51:10 -05:00
Mike Cifelli d7ca5d09da Added unit tests and refactored the let form
Wrote a lisp program to calculate the number of bi-weekly paydays in a year
2017-02-04 12:03:31 -05:00
Mike Cifelli db2817f7be Refactored the symbol table code 2017-01-30 16:12:38 -05:00
Mike Cifelli 27fdc7b328 Added unit tests and refactored lambda 2017-01-27 14:31:41 -05:00
Mike Cifelli 79648cd96f Added unit tests and refactored defun 2017-01-27 12:12:27 -05:00
Mike Cifelli 5fd22b310f Simplified some predicate unit tests 2017-01-27 11:37:11 -05:00
Mike Cifelli fe880e1a02 Refactored tests to put the expected and actual values in the correct positions 2017-01-27 10:51:25 -05:00
Mike Cifelli 32db0b2520 Minor code formatting 2017-01-26 16:00:47 -05:00
Mike Cifelli 25f73e6d2e Added unit tests and refactored the load function 2017-01-26 15:58:15 -05:00
Mike Cifelli 919644d9c0 Added unit tests and refactored setf 2017-01-26 12:30:38 -05:00
Mike Cifelli 1f0d312e7e Added unit tests for exit and symbol-function and refactored some code 2017-01-22 11:11:16 -05:00
Mike Cifelli ea8acd423f Refactored some code and added unit tests 2017-01-18 16:25:09 -05:00
Mike Cifelli 217c215efe Started major refactoring of several built in functions 2017-01-16 13:38:49 -05:00