Fix the test cases of traits

This commit is contained in:
Sameer Rahmani 2021-07-17 16:40:02 +01:00
parent a117572ce5
commit 5beffbc604
4 changed files with 20 additions and 6 deletions

View File

@ -135,7 +135,7 @@ case "$command" in
"compile")
compile
;;
"compile-and-test")
"compile-and-tests")
compile
run-tests
;;

View File

@ -114,9 +114,9 @@ in python.
- [ ] Add the support to the *Context*.
- [ ] Add the support to *Namespace*.
- [ ] Add the cli argument to the =bin/serene.cpp=
*** TODO Replace =llvm::outs()= with debug statements
*** TODO Error handling
Create proper error handling for the internal infra
*** TODO Replace =llvm::outs()= with debug statements
*** TODO Language Spec :DOCS:
*** TODO A proper List implementation
*** TODO Vector implementation
@ -127,7 +127,6 @@ Create proper error handling for the internal infra
- [ ] For namespaces and projects
- [ ] API to interact with docstrings and helps
*** TODO FFI interface
*** TODO Load path and namespace loading
*** TODO nREPL
*** TODO Emacs mode :Misc:
*** TODO Number implementation

View File

@ -84,5 +84,20 @@ Deducted from https://www.aosabook.org/en/llvm.html
to generate object files.
- Call the default =c compiler= to link the object files and generate the machine code.
* Episode 4 - The reader
- We have a hand written parser/lexer since lisp already has a structure.
** What is a Parser ?
*** Algorithms
- LL(k)
- LR
- LALR
- PEG
- .....
Read More:
- https://stereobooster.com/posts/an-overview-of-parsing-algorithms/
- https://tomassetti.me/guide-parsing-algorithms-terminology/
*** Libraries
- https://en.wikipedia.org/wiki/Comparison_of_parser_generators
*** Our Parser
- We have a hand written LL(1.5) like parser/lexer since lisp already has a structure.
- LL(1.5)? s
- O(n)

View File

@ -33,7 +33,7 @@ class Printable : public TraitBase<ConcreteType, Printable> {
public:
Printable(){};
Printable(const Printable &) = delete;
std::string Print() const { return this->Object().Print(); }
std::string Print() { return this->Object().Print(); }
};
template <typename ConcreteType>
@ -41,7 +41,7 @@ class Analyzable : public TraitBase<ConcreteType, Analyzable> {
public:
Analyzable(){};
Analyzable(const Analyzable &) = delete;
std::string Analyze() const { return this->Object().Analyze(); }
std::string Analyze() { return this->Object().Analyze(); }
};
template <typename T> std::string Print(Printable<T> &t) { return t.Print(); }