Commit Graph

192 Commits

Author SHA1 Message Date
Sameer Rahmani fde6636ca2 Modify the Node and MaybeX to contain Serene's Error instead of llvm
Previously, MaybeNode and MaybeAST use to have the llvm::Error as the
error type. But after this change they will have a `vector` of
`serene::errors::Error` as the error type.
2021-05-06 19:17:57 +01:00
Sameer Rahmani add3765982 Add necessary Traits to construct an Expression alternative 2021-05-04 21:10:52 +01:00
Sameer Rahmani d0defdbf54 Add tests for MetaTrait concept 2021-05-03 22:45:35 +01:00
Sameer Rahmani b121483f2b Move the traits header to the appropriate place 2021-05-01 21:40:30 +01:00
Sameer Rahmani 179ef75793 Add A basic Trait like system using CRTP 2021-05-01 20:08:49 +01:00
Sameer Rahmani 6ce565163c Add support for current namespace in the context 2021-04-29 23:39:58 +01:00
Sameer Rahmani f2a76aa007 Add a minimal test case for namespace to pin down some behavior 2021-04-28 21:03:22 +01:00
Sameer Rahmani 33c6ebd3d3 Setup the ns table in the context class 2021-04-27 23:43:18 +01:00
Sameer Rahmani 66cecc77f3 Add the namespace table to the context 2021-04-26 21:29:44 +01:00
Sameer Rahmani c1c1421531 Rename 'maybe_ast' type to 'MeybeAst' 2021-04-25 23:08:40 +01:00
Sameer Rahmani 32ddfc313f Rename 'ast' type to 'Ast' 2021-04-25 23:07:08 +01:00
Sameer Rahmani 7bc9535617 Rename 'maybe_node' type to 'MaybeNode' 2021-04-25 23:05:21 +01:00
Sameer Rahmani 095d1872c1 Rename the 'node' type to 'Node' 2021-04-25 23:02:52 +01:00
Sameer Rahmani 0e58304462 Create the boilerplate of the call expression 2021-04-25 22:56:31 +01:00
Sameer Rahmani c04c67ccbe Add an environment implementation 2021-04-25 21:19:26 +01:00
Sameer Rahmani f9bd6cd567 Add the missing context header/impl files 2021-04-25 10:21:48 +01:00
Sameer Rahmani 4084135851 Extract SereneContext to the top level namespace 2021-04-25 09:56:28 +01:00
Sameer Rahmani 499852c48f Rename Semantic Context to Serene Context to be used in other phases too 2021-04-25 09:17:58 +01:00
Sameer Rahmani 5427b2ab00 Add a more complicated test to semantic analysis 2021-04-24 20:40:01 +01:00
Sameer Rahmani c12c6b1281 Change the semantic analysis entrypoint to the 'analyze' fn 2021-04-24 20:18:33 +01:00
Sameer Rahmani 4aee3413ea Analyze the value in the 'def' form 2021-04-24 19:10:22 +01:00
Sameer Rahmani 7c35f6a95e Add asserts to check for the first element of the list in def and fn forms 2021-04-24 18:04:04 +01:00
Sameer Rahmani 573550ca07 Add Fn expression and List rewrite to Fn 2021-04-24 14:39:43 +01:00
Sameer Rahmani 16d02a0fb1 Finish up the basic 'def' rewrite rules 2021-04-23 16:48:14 +01:00
Sameer Rahmani 806987b0ad Setup the minimal semantic analysis foundation 2021-04-22 10:20:15 +01:00
Sameer Rahmani f614d35b7f Change toString format and finalize Def::isValid signature 2021-04-22 00:49:11 +01:00
Sameer Rahmani 751eb49538 Rename the Result success/error methods to be consistent with the coding style 2021-04-20 19:33:25 +01:00
Sameer Rahmani 4fde47311e Remove the old implementations to keep the source tree as clean as possible 2021-04-20 00:17:28 +01:00
Sameer Rahmani 17b778bc49 Move the Error expression to it's own namespace 2021-04-19 23:34:39 +01:00
Sameer Rahmani a486b03d10 Add a very basic Error Expression to be used in semantic analysis 2021-04-19 19:49:05 +01:00
Sameer Rahmani 9f90e42bbb Setup the minimal rewrite wiring to rewrite 'def' to Def 2021-04-18 18:39:48 +01:00
Sameer Rahmani 30c54f9e73 Add more tests for List to test and iterators 2021-04-18 17:32:33 +01:00
Sameer Rahmani 7c9ee97895 Finish up the analyze setup before moving back to vector/shared_ptr setup 2021-04-17 19:36:25 +01:00
Sameer Rahmani 3b6d165baa Replace the shared_ptr in the node with a unique ptr 2021-04-17 00:18:13 +01:00
Sameer Rahmani 1330bad6fb Add a new type alias for Result<shared_ptr<Expressoin>> 2021-04-14 21:59:22 +01:00
Sameer Rahmani 3223fc6944 Restructure the source tree to have tests and impl files in src 2021-04-13 13:53:12 +01:00
Sameer Rahmani 470f23acef Short circute the 'analyze' method of expressions for now 2021-04-13 00:45:08 +01:00
Sameer Rahmani 8b4f2941cf Add the Result type as an error wrapper type 2021-04-12 23:18:32 +01:00
Sameer Rahmani f4c28ae722 Upgrade to C++17 for now 2021-04-11 18:36:00 +01:00
Sameer Rahmani 11df9a6d1d Add some test cases for the reader 2021-04-11 15:13:10 +01:00
Sameer Rahmani 555e770c01 Finalize migration to new expression interface 2021-04-11 00:02:56 +01:00
Sameer Rahmani e4b0823e49 Fall back to the OOP design and setup the test env 2021-04-10 15:36:16 +01:00
Sameer Rahmani 944efcd1a9 Finish up the single dispatcher 2021-04-08 23:41:52 +01:00
Sameer Rahmani fd211653f2 Fix the expression instantiation 2021-04-08 19:59:47 +01:00
Sameer Rahmani a42259d684 Add c++20 support flag to cmake 2021-04-07 19:56:54 +01:00
Sameer Rahmani c1bec1ec99 Document the Expression type 2021-04-07 01:01:12 +01:00
Sameer Rahmani cd6552960d Fix the cmake file to use the new reader files 2021-04-06 19:13:24 +01:00
Sameer Rahmani 08e661c508 Rename the reader header files 2021-04-06 18:28:50 +01:00
Sameer Rahmani e620d8dcb2 rename location.hpp to location.h 2021-04-06 18:24:05 +01:00
Sameer Rahmani f1f77386ae Finish up the new Expression implementation 2021-04-06 16:20:20 +01:00
Sameer Rahmani 0020f95a80 Setup tests via Catch2 2021-04-06 00:21:43 +01:00
Sameer Rahmani f73cfe7aaf Introduce the new polymorphic approach to expressions 2021-04-05 19:02:30 +01:00
Sameer Rahmani 062b24e701 Add doxygen support for the documentation 2021-04-05 17:51:09 +01:00
Sameer Rahmani 9ff707c726 Save the progress before introducing the semantic analysis 2021-04-04 23:08:57 +01:00
Sameer Rahmani 53ec0c240a Change the different generator methods to be a polymorphic function 2021-04-01 23:37:12 +01:00
Sameer Rahmani f6ca246f0d Implement classof in derived expressions 2021-03-31 19:37:32 +01:00
Sameer Rahmani 3a899d82b3 Add Location and LocationRange support to expressions 2021-03-29 01:02:29 +01:00
Sameer Rahmani f50e20567a Move reader related files to the reader namespace 2021-03-28 23:14:32 +01:00
Sameer Rahmani e9daeb9d13 Add support for a dummy value operation to demonstrate a value 2021-03-28 10:53:32 +01:00
Sameer Rahmani 21b1958ecf Add symbol type to the dialect 2021-03-26 21:39:25 +00:00
Sameer Rahmani 50c2054f0a Add a barebone MLIR dialect with the necessary cmake changes" 2021-03-25 00:53:44 +00:00
Sameer Rahmani 737b6e1a41 Remove unused code to simplify the project to the bare min 2021-03-23 22:31:20 +00:00
Sameer Rahmani 04a50eb65b Update the serene executable to use llvm::cl and spit out the AST 2021-03-22 19:53:10 +00:00
Sameer Rahmani a8557125c4 Add the mapping for builtins special forms to namespace 2020-08-03 20:21:46 +01:00
Sameer Rahmani dfa64e8f26 Fix some of the hints from the 1on1 session on the refactoring the code 2020-08-03 12:39:20 +01:00
Hamid 18910a4a2c Refactoring 2020-08-02 22:08:35 +02:00
Sameer Rahmani f008470de3 Finish the basic implementation of the special form 2020-08-01 21:32:21 +01:00
Sameer Rahmani ff3bceac62 Change id attribute of AExpr to virtual method 2020-08-01 20:14:51 +01:00
Sameer Rahmani 1238898ddc Add a very basic 'def' special form 2020-08-01 19:58:34 +01:00
Sameer Rahmani b27611d5ba Create a very basic compiler setup to wire everything in the most basic way 2020-07-25 18:59:00 +01:00
Sameer Rahmani 6e36ce1711 Add the basic class structure of the compiler, namespace and state 2020-07-25 15:49:19 +01:00
Sameer Rahmani 2eda5f8d5f Setup clang-format as a githook and apply it to the source 2020-07-23 21:47:13 +01:00
Sameer Rahmani 8e90ea9813 Finish the first implementation of the compiler level list 2020-07-23 17:13:16 +01:00
Sameer Rahmani d55b4a27f5 Create the PoC of API of the List 2020-07-22 18:58:15 +01:00
Sameer Rahmani 576eba6451 Add a very basic List implementation 2020-07-21 22:23:11 +01:00
Sameer Rahmani cbea0c8e28 Add the first draft of a very basic reader, list and symbol impl 2020-07-16 15:48:06 +01:00
Sameer Rahmani 51b9f4a307 Add the build setup for the C++ implementation 2020-07-10 18:06:26 +01:00
Sameer Rahmani 72fb1f1a2c Commit the final changes before moving to C++ :( 2020-07-09 13:52:46 +01:00
Sameer Rahmani 402e267e7c Add basic namespace and scope support 2020-07-06 14:18:29 +01:00
Sameer Rahmani 2756349204 Add a very basic Namespace datastructure 2020-06-27 22:12:09 +01:00
Sameer Rahmani 08a651019f Add Symbol struct to represent symbols 2020-06-20 22:14:48 +01:00
Sameer Rahmani 3454a44f65 Add inkwell to replace llvm-sys and add the types module 2020-06-20 22:02:17 +01:00
Sameer Rahmani 0b348cff82 Add clap to manage the cli arguments 2020-06-20 18:20:10 +01:00
Sameer Rahmani 2a98d4b771 Create Expr function helpers to create different Expr variants 2020-06-20 16:25:05 +01:00
Sameer Rahmani 0065c2edf1 Add Expression trait and new cons implementation 2020-06-20 15:20:05 +01:00
Sameer Rahmani 30a7dbfce5 Fix the reader to ignore comment lines 2020-06-19 19:37:00 +01:00
Sameer Rahmani 04fe7e6085 Add llvm-sys as a dependency 2020-06-16 09:27:32 +01:00
Sameer Rahmani 25c58c27c2 Format the reader module 2020-06-14 21:25:18 +01:00
Sameer Rahmani 5181c84696 Add support for negative numbers 2020-06-14 21:23:39 +01:00
Sameer Rahmani 47bf80e834 Add a very basic lisp1 parser 2020-06-14 21:02:31 +01:00
Sameer Rahmani e527beea5a Add a very simple lisp grammer based on LALRPOP (whitespace problem) 2020-06-13 17:55:27 +01:00
Sameer Rahmani c7c4876838 Initial Commit 2020-06-05 22:23:14 +01:00