Commit Graph

130 Commits

Author SHA1 Message Date
Danila Fedorin a1d679a59d No longer destroy the list of free variables.
It so happens that this list will tell us which variables
need to be captured.
2020-05-30 23:29:36 -07:00
Danila Fedorin 4586bd0188 Check for free variables in the environment before generalizing. 2020-05-30 16:40:27 -07:00
Danila Fedorin a97b50f497 Add parsing of let/in. 2020-05-28 14:44:12 -07:00
Danila Fedorin c84ff11d0d Add typechecking to let/in expressions. 2020-05-26 00:52:54 -07:00
Danila Fedorin e966e74487 Extract ordering functionality into definition group. 2020-05-25 23:58:56 -07:00
Danila Fedorin 3865abfb4d Add a struct to contain groups of mutually recursive definitions. 2020-05-25 22:11:45 -07:00
Danila Fedorin 1905601aaa Fork off the 12th version of the compiler. 2020-05-25 21:20:41 -07:00
Danila Fedorin 18339d7e4d Build and test version 11 of the compiler instead of 10.
continuous-integration/drone/push Build is failing Details
2020-04-26 21:28:34 -07:00
Danila Fedorin 78563448fb Update to LLVM 10.
continuous-integration/drone/push Build is failing Details
2020-04-26 21:24:24 -07:00
Danila Fedorin c1f0104edb Add missing arity checks to compiler series
continuous-integration/drone/push Build is failing Details
2020-04-14 19:21:33 -07:00
Danila Fedorin 1f00b6a3f8 Make compiler check for arity in part 11 of compiler series.
continuous-integration/drone/push Build is failing Details
2020-04-14 16:20:12 -07:00
Danila Fedorin acb22c4119 Finish draft of part 11 of compiler series 2020-04-14 16:19:54 -07:00
Danila Fedorin be2b855ffe Rename inaccurately named rule 2020-04-14 15:58:25 -07:00
Danila Fedorin 88c9418350 Update example to include polymorphism 2020-04-14 15:58:13 -07:00
Danila Fedorin b4c91d2dd4 Adjust grammar to allow for broader range of type inputs. 2020-04-13 23:17:34 -07:00
Danila Fedorin 98c1b5a3b2 Make substitution replace types at every lookup step 2020-04-13 17:59:57 -07:00
Danila Fedorin 122a1d73d3 Integrate new types into the rest of the project 2020-04-13 17:12:43 -07:00
Danila Fedorin 74e6dba914 Add parsed type data structure, type application and arity. 2020-04-13 17:08:03 -07:00
Danila Fedorin d7846e0b32 Fork off code for part 11 of compiler series.
continuous-integration/drone/push Build is failing Details
2020-04-09 23:48:53 -07:00
Danila Fedorin 8c1168d818 Add seemingly missing string includes. 2020-04-09 16:26:10 -07:00
Danila Fedorin 5cccb97ede Add missing source file
continuous-integration/drone/push Build is passing Details
2020-03-25 03:36:17 -07:00
Danila Fedorin 493419f324 Remove debug output
continuous-integration/drone/push Build is failing Details
2020-03-25 03:35:30 -07:00
Danila Fedorin 577e0ad930 Finalize draft of polymorphism post
continuous-integration/drone/push Build is failing Details
2020-03-25 03:22:21 -07:00
Danila Fedorin 2a12f7f31e Switch to using type schemes and implement polymorphism in compiler series 2020-03-24 23:04:51 -07:00
Danila Fedorin ae3e661d7a Implement new ordered typing in compiler series 2020-03-24 22:00:11 -07:00
Danila Fedorin 0efa05142f Separate definitions in compiler series 2020-03-24 21:08:06 -07:00
Danila Fedorin 6714e18e7c Switch type environment to using pointers 2020-03-24 18:04:01 -07:00
Danila Fedorin 5d53678e83 Only store type in case expression
continuous-integration/drone/push Build is passing Details
2020-03-24 17:53:06 -07:00
Danila Fedorin e3834ed6ea Explain graph code
continuous-integration/drone/push Build is passing Details
2020-03-14 21:04:13 -07:00
Danila Fedorin 1bdb4a650e Start work on algorithms in compiler post 10
continuous-integration/drone/push Build is passing Details
2020-03-14 17:18:06 -07:00
Danila Fedorin 6966973497 Set up script to test latest compiler version
continuous-integration/drone/push Build is passing Details
2020-03-10 22:26:02 -07:00
Danila Fedorin 8ee016e189 Fork into version 10 of the compiler for blog series 2020-03-10 20:58:26 -07:00
Danila Fedorin c207d1dfcf Remove unused line at the end of works1.txt 2020-02-23 21:26:37 -08:00
Danila Fedorin 0f744888ef Move testing code into a script 2020-02-11 18:37:21 -08:00
Danila Fedorin e7f0ccfa16 Finish compiler series 2020-02-10 19:18:55 -08:00
Danila Fedorin e5d01a4e19 Add the primes program from compiler series 2020-02-10 18:13:04 -08:00
Danila Fedorin b7d72f2fbf Implement garbage collection in runtime 2020-02-06 11:32:19 -08:00
Danila Fedorin 281dbbd174 Track allocated nodes using a G-machine struct in compiler series. 2020-02-06 10:05:26 -08:00
Danila Fedorin 8d22acfe78 Switch to single stack in runtime for Compiler Series 2020-01-31 15:29:12 -08:00
Danila Fedorin 803f52b2d0 Update the compiler to leave the stack clean 2020-01-27 20:29:01 -08:00
Danila Fedorin 2f96abeef6 Instantiate compiler for garbage collection 2020-01-27 14:52:25 -08:00
Danila Fedorin 3df9c57482 Fix naming issue (this is really a compiler bug) 2019-12-05 19:36:47 -08:00
Danila Fedorin db16dbda18 Fix incorrect CMakeLists.txt 2019-11-13 13:47:04 -08:00
Danila Fedorin 50fbe3e196 Finish draft of post 8 in compiler series 2019-11-06 21:10:53 -08:00
Danila Fedorin 2994f8983d Add the push operation in code in compiler series 2019-11-06 13:23:59 -08:00
Danila Fedorin 64227f2873 Finish implementation of compiler 2019-11-06 12:52:42 -08:00
Danila Fedorin 9aef499deb Factor out definition into separate file in compiler series 2019-11-05 10:40:51 -08:00
Danila Fedorin c79b5a4120 Start writing actual compillation code in compiler series 2019-11-05 00:42:33 -08:00
Danila Fedorin 81ee50d0d4 Implement function and type creation, add text to blog in compiler series 2019-11-04 18:25:54 -08:00
Danila Fedorin 43b140285f Fix missing line in runtime header in compiler series 2019-11-04 13:30:18 -08:00
Danila Fedorin 1f6032a30e Start work on chapter 8 code for compilers 2019-11-02 17:53:15 -07:00
Danila Fedorin 9531f4d8e3 Add chapter 8 starting code for compiler series 2019-11-02 16:38:11 -07:00
Danila Fedorin 3aa468c2f6 Remove debug printf 2019-10-31 14:38:06 -07:00
Danila Fedorin a834fd578e Finish initial draft of runtime posts. 2019-10-30 14:21:13 -07:00
Danila Fedorin 4b5e2f4454 Write some more about runetime 2019-10-30 00:19:56 -07:00
Danila Fedorin 7812b1064b Make progress on compiler posts 2019-10-26 20:30:29 -07:00
Danila Fedorin df0b819b0e Fix bug from small improvements 2019-10-10 17:59:44 -07:00
Danila Fedorin 21f90d85c5 Add finishing touches to code for part 6 of compiler series 2019-10-10 13:14:00 -07:00
Danila Fedorin 18e3f2af55 Fix definition to resolve its own types 2019-10-09 22:51:19 -07:00
Danila Fedorin 3901c9b115 Add print methods to instructions 2019-10-09 22:46:17 -07:00
Danila Fedorin d90993a93c Implement ast_case::compile for compiler series and reference code 2019-10-08 23:46:35 -07:00
Danila Fedorin 7e9bd95846 Write explanations of AST refactor in compiler series 2019-10-08 21:42:25 -07:00
Danila Fedorin d3d73e0e9c Fix up compile in compiler blog part 6, and add more text. 2019-10-08 14:10:05 -07:00
Danila Fedorin d9c151d774 Continue implementation of compilation 2019-10-01 23:23:52 -07:00
Danila Fedorin bcaa67cc7a Begin implementation of new environment 2019-10-01 14:34:38 -07:00
Danila Fedorin 8c0a6c834e Create new 'branch' for part 6 of compiler series 2019-10-01 11:05:21 -07:00
Danila Fedorin 05af1350c8 Add errors ection to Part 4 of compiler posts 2019-08-28 15:34:13 -07:00
Danila Fedorin 8ba501bd84 Add output and fix two bugs. 2019-08-26 21:05:44 -07:00
Danila Fedorin 6344ce11ce Add CMake file and code for post 4 2019-08-26 18:52:25 -07:00
Danila Fedorin 619c346897 Do the first round of revisions on part 3 2019-08-26 17:08:05 -07:00
Danila Fedorin 469cabda14 Backport fix for parser to post 2. 2019-08-26 00:14:45 -07:00
Danila Fedorin c2df5fdc78 Add the examples to the repo. 2019-08-26 00:13:34 -07:00
Danila Fedorin 918dfbe980 Drafts of code and markdown. 2019-08-26 00:13:10 -07:00
Danila Fedorin d60d4e61bd Add environment code 2019-08-26 00:11:38 -07:00
Danila Fedorin 1820a05fcc Write up type code 2019-08-25 16:42:23 -07:00
Danila Fedorin 0d275844d4 Start working on type code 2019-08-25 01:36:34 -07:00
Danila Fedorin 5acd08dcce Add copy of part 2 project for part 3 2019-08-25 01:10:55 -07:00
Danila Fedorin d1a84b6f30 Add a way to clean the generated files. 2019-08-06 14:24:39 -07:00
Danila Fedorin 8450e2c35d Address listed flaws in implementation 2019-08-06 14:24:26 -07:00
Danila Fedorin 34e967f364 Move code into folders for convenience 2019-08-06 13:56:32 -07:00