Commit Graph

39 Commits

Author SHA1 Message Date
5078f38f61 pork: it's got it all, ffi, state machine tokenizer, and better IDE support 2023-10-13 01:04:35 -07:00
73a458b673 parser: various code and quality enhancements 2023-10-08 04:46:23 -07:00
945ba85c98 ast: move gay.pizza.pork.ast to gay.pizza.pork.ast.gen 2023-10-06 15:52:34 -07:00
87623505c0 common: unused marker for marking values as unused intentionally 2023-09-23 16:30:00 -07:00
83c24843a3 ffi: new native function format 2023-09-22 00:26:24 -07:00
f60715dfb3 idea: proper scoping support, completion now works 2023-09-21 23:07:22 -07:00
4758e92676 evaluator: significant performance enhancements 2023-09-21 17:21:53 -07:00
a08526c92c language: implement list indexing 2023-09-17 08:38:11 -07:00
b42ca92d9f evaluator: fix unary operators on floating point types always throwing a spurious error (#9) 2023-09-12 03:40:13 -04:00
a6f9a82e5e language: none support 2023-09-12 02:03:41 -04:00
1b363dcf56 parser: implement long literal and handle overflow 2023-09-12 00:25:13 -04:00
a07e0fe672 language: add boolean and/or operators, change negation syntax (#7)
* language: add boolean and/or operators, change negation syntax

* examples: simplify row builder using arrays
2023-09-11 14:02:58 -04:00
0aab45094a language: implement for in 2023-09-11 05:34:09 -04:00
9ba150bb69 language: add binary operators (#6)
- unary binary not
- infix bitwise and
- infix bitwise or
- infix bitwise exclusive or (xor)
2023-09-11 05:24:08 -04:00
8f60039d6e language: implement let definitions 2023-09-11 04:57:13 -04:00
2ee1565fb5 native: pass argument specs in order to support varadic ffi 2023-09-11 01:12:32 -04:00
8d310e337a language: add unary plus & minus, post increment & decrement operators, non-newline print builtin. fix block comments (#4) 2023-09-11 00:34:10 -04:00
e8c984f2dc language: prelude and internal functions, and varargs support 2023-09-10 19:27:59 -04:00
1cfb197a7f ensure new lines exist on all files 2023-09-10 04:37:30 -04:00
71999032ac language: var, reassign, comparison operators 2023-09-10 04:35:36 -04:00
0bc3128b9d support: basic idea plugin 2023-09-10 01:27:53 -04:00
0024a8b141 language: euclidean modulo and remainder infix operators (#3) 2023-09-09 22:41:20 -04:00
3a43b56fcd evaluator: cache native function resolution 2023-09-09 01:51:04 -04:00
e8766323ee language: floating point support 2023-09-09 00:08:30 -04:00
bf474f6b69 evaluator: introduce and expose scope tracking 2023-09-08 00:04:36 -07:00
81296ee1d1 imports are now python style with a twist: forms! import std ffi and import local myfile 2023-09-06 22:43:03 -07:00
0e4362eefb add a standard library, and introduce formed imports (import std "myfile.pork") 2023-09-06 21:39:57 -07:00
236f812caf while loop support, and native functions (including ffi!) 2023-09-06 19:07:28 -07:00
ddff6cb365 language: today, we killed lambdas 2023-09-05 19:37:23 -07:00
9f90e05d8a ast: utilize extension functions to prevent larger stack frames from default interface methods 2023-09-05 17:06:52 -07:00
290d8d0f0a evaluator: optimize the cost of defining a variable in a scope 2023-09-05 03:13:43 -07:00
63a90a599c evaluator: functions now use their own evaluation visitor 2023-09-05 02:42:15 -07:00
9634a735ee evaluator: ensure function definitions use root scope 2023-09-05 02:20:46 -07:00
2631b6752b evaluator: inherit fast cache for calls to functions in a function definition 2023-09-05 01:43:59 -07:00
65f61fcd90 evaluator: implement an elaborate system that should mean that recursive functions don't require reaching far up the stack 2023-09-05 01:35:50 -07:00
cc23789203 evaluator: prevent double lookup when looking up value in a scope 2023-09-05 01:09:26 -07:00
174d51ca1c Auto-generate the AST. 2023-09-04 22:13:58 -07:00
3545aa076f Introduce the requirement of let for assignment. 2023-09-04 02:33:13 -07:00
128f40bcf4 Split out all code into modules. 2023-09-04 01:56:24 -07:00