CHatingPython
abeb5b390b
feat(furc): introduce function declaration parameters
...
Closes : #16
2026-06-24 18:06:40 +02:00
CHatingPython
a61f5c194b
refactor(furc): improve function declarations
...
Refs: #16
2026-06-24 15:52:14 +02:00
CHatingPython
d497e2de45
feat: introduce arrow tokens
...
Refs: #16
2026-06-24 15:50:37 +02:00
CHatingPython
70b7b6a2f4
feat: introduce parse type function
...
Refs: #15
2026-06-24 15:30:45 +02:00
CHatingPython
b5dcd6690a
feat: introduce AST type class
...
Refs: #15
2026-06-24 15:30:28 +02:00
CHatingPython
0baf896c3a
feat: introduce int32 keyword
...
Refs: #15
2026-06-24 15:27:29 +02:00
CHatingPython
7d2e748c27
feat(furc): introduce furvm backend to furc
...
Closes : #14
2026-06-24 14:56:49 +02:00
CHatingPython
8909a0cfff
refactor(furc): bring back ADCE to post process
...
Refs: #12
2026-06-23 15:21:12 +02:00
CHatingPython
dad2c180d6
refactor(furc): bring back SCCP to post process
...
Refs: #12
2026-06-23 15:15:01 +02:00
CHatingPython
4478a839b7
refactor(furc): improve the SSA optimization class
...
Improve and rename the SSA optimization class to post process.
Refs: #12
2026-06-23 14:54:28 +02:00
CHatingPython
190aa8f985
refactor(furc): move arena allocator out of the parser
...
Refs: #12
2026-06-20 11:56:15 +02:00
CHatingPython
b35a274e81
refactor(furlang/ir): rename module to mod
...
Refs: #12
2026-06-16 11:25:41 +02:00
CHatingPython
a262014348
feat(furc/ssa): implement de-ssa phase
...
Refs: #2
2026-06-14 12:52:14 +02:00
CHatingPython
986015bc09
feat(furc/ssa): implement copy propagation
...
Refs: #2
2026-06-14 11:59:39 +02:00
CHatingPython
ac1e226b4b
feat(furc/ssa): add dead code elimination
...
Refs: #2
2026-06-13 22:33:57 +02:00
CHatingPython
d0f3637539
feat(furc/ssa): implement basic constant propagation
...
Refs: #2
2026-06-13 14:46:16 +02:00
CHatingPython
f1f62fad8c
refactor(furc/ssa): change to semi-pruned SSA
...
Refs: #2
2026-06-13 12:38:01 +02:00
CHatingPython
065a2af699
refactor(furc/ssa): fix typo
...
Refs: #2
2026-06-13 12:20:20 +02:00
CHatingPython
767970c69b
feat(furc): introduce while loop statement
...
Refs: #2
2026-06-12 23:10:26 +02:00
CHatingPython
97c01bc96c
refactor(furc/ssa): add exit instruction awareness
...
Refs: #2
2026-06-12 23:09:36 +02:00
CHatingPython
abd975be23
refactor(furc/ssa): revert back to maximal SSA
...
Refs: #2
2026-06-12 23:05:33 +02:00
CHatingPython
be386cf230
feat(furc/ssa): implement renaming
...
Refs: #2
2026-06-12 22:07:26 +02:00
CHatingPython
a14252bd1d
refactor(furlang/ir): improve instruction interface
...
Refs: #2
2026-06-12 14:45:26 +02:00
CHatingPython
6b92e19b23
refactor(furlang/ir): add version to register_operand
...
Refs: #2
2026-06-12 14:07:09 +02:00
CHatingPython
865691df26
feat(furc, ssa): implement phi instruction placement
...
Refs: #2
2026-06-12 13:45:35 +02:00
CHatingPython
b4fda8d7d0
feat(furc): start working on ssa optimizations
...
Compute dominance frontiers.
Refs: #2
2026-06-12 12:21:52 +02:00
CHatingPython
b8e1de8f68
refactor(AST): make operation node names consistent
...
Fixes #5
2026-06-03 18:25:18 +02:00
CHatingPython
2cfbc12977
refactor(AST): use pointers instead of results inside of AST nodes
2026-06-03 18:19:20 +02:00
CHatingPython
3006b58212
refactor(AST): add aliases for AST node pointers
...
Refs: #8
2026-06-03 16:20:08 +02:00
CHatingPython
b68a559980
refactor(AST): improve function declaration AST node
...
Change p_name to be of type std::string instead of furc::token.
2026-06-03 16:11:20 +02:00
CHatingPython
02ce25df2d
refactor(AST): improve AST node print operator
2026-06-03 16:10:35 +02:00
CHatingPython
ab6b65a70e
refactor(result): add print operator to result
...
Fixes #6
2026-06-03 16:06:59 +02:00
CHatingPython
d50bfc868f
refactor(AST): improve literals
...
Changed literal node to templated class and literals to aliases.
2026-06-03 14:13:28 +02:00
CHatingPython
52537e0955
refactor(AST): node location
...
Add location function to node and introduce a new abstract_node class.
Refs: #1
2026-06-03 13:47:01 +02:00
CHatingPython
9b92c06d87
refactor(handle): remove handle
...
Refs: #1
2026-06-03 11:59:36 +02:00
CHatingPython
af982c11ed
refactor(parser): change node handles to node results
...
Refs: #1
2026-06-03 11:57:09 +02:00
CHatingPython
a1b5726271
refactor(handle): remove non-pointer handle
...
Previous commit rendered it obsolete.
Refs: #1
2026-06-03 11:10:01 +02:00
CHatingPython
d1e32baffe
refactor(parser): change value and name handles to results
...
Refs: #1
2026-06-03 11:08:51 +02:00
CHatingPython
cf9c53a9e8
refactor(parser): add print operator to AST error
2026-06-03 10:53:34 +02:00
CHatingPython
26340c279d
refactor(parser): change body_h to body result
...
Refs: #1
2026-06-03 10:45:57 +02:00
CHatingPython
6ce2fba9d2
docs: document token error
2026-06-03 10:43:25 +02:00
CHatingPython
cb7a348540
refactor(lexer): change token_handle to token result
...
Refs: #1
2026-06-02 16:49:40 +02:00
CHatingPython
9eb7d0c68f
docs: document parser
2026-06-02 12:47:51 +02:00
CHatingPython
16ca41b75a
docs: document lexer
2026-06-02 12:41:36 +02:00
CHatingPython
1f4d0b992d
docs: document location
2026-06-02 12:30:18 +02:00
CHatingPython
72dc7777fb
docs: document token
2026-06-02 12:28:39 +02:00
CHatingPython
dd6344aab6
docs: document AST nodes
2026-06-02 12:12:48 +02:00
CHatingPython
18d99d4a86
test(lexer): refactor the test suite to use fixtures
...
Shoutout to my man - Krotek-man for giving me this awesome tip. I guess you really could say that the student became master. Also shoutout to stasiu for giving me his tip.
2026-06-01 23:07:55 +02:00
CHatingPython
af10dfcd40
refactor(parser): organize the includes
2026-06-01 21:28:00 +02:00
CHatingPython
62619cd0bc
refactor(IR)!: change IR block structure
...
It now requires an exit instruction.
2026-06-01 18:27:36 +02:00