Commit Graph

724 Commits

Author SHA1 Message Date
greg
da928db351 Add a new language - Rukka
This is a (simple) lisp, partially for fun, partially for testing the
generic interfaces
2017-11-26 21:17:17 -08:00
greg
93d0cfe5b8 Make schala-lib::language private and reexport 2017-11-02 02:45:26 -07:00
greg
687b28d1d1 Take TokenError type out of schala-lib 2017-11-01 22:41:34 -07:00
greg
b62f618256 I don't need this syntax 2017-11-01 01:25:26 -07:00
greg
f25b76ea11 Kill some packages from schala bin 2017-11-01 01:23:54 -07:00
greg
6b2736348d Get rid of unused imports 2017-10-31 00:45:15 -07:00
greg
69d5f38ea1 Refactor into libs part II
woo it compiles
2017-10-30 22:18:02 -07:00
greg
a6f8616839 Halfway done to library-ifying schala 2017-10-30 20:06:20 -07:00
greg
cdcb55e3b8 PLIGenerators can be authoritative, not the instances themselves 2017-10-29 13:45:55 -07:00
greg
74ac26841f Some simplification 2017-10-29 12:27:24 -07:00
greg
8fd29b5090 Passing things along as generators 2017-10-29 04:09:10 -07:00
greg
5ebc96daa7 Don't need mutex, kill it 2017-10-29 04:04:54 -07:00
greg
277e039251 Finally removed schala dependency
Now need to clena up everything
2017-10-29 03:41:40 -07:00
greg
6e8f57e54f Okay this compiles
The secret (from #rust) appeared to be that Fn() needed to have + Send
explicitly annotated on it
2017-10-29 03:16:08 -07:00
greg
ae02391270 Working on solution to Rocket state problem 2017-10-27 00:30:28 -07:00
greg
9379485713 Some linker bullshit
I don't know why I needed to do this
2017-10-26 02:03:47 -07:00
greg
910522537c Splitting up some code
In preparation for splitting schala into crates
2017-10-23 20:51:08 -07:00
greg
98e1a5235a Some more structure in evaluator 2017-10-23 01:54:35 -07:00
greg
e054c4b27f Revert "Starting to split project into multiple crates"
This reverts commit e3b0f4a51e.
Bah, this was a bad idea, wrong way to do it
2017-10-23 00:45:01 -07:00
greg
e3b0f4a51e Starting to split project into multiple crates 2017-10-23 00:43:43 -07:00
greg
911f26e9c6 Halfway done with evaluating tuples 2017-10-23 00:22:25 -07:00
greg
677e3ae0a9 Add module keyword 2017-10-22 03:58:09 -07:00
greg
4c256cb5f7 Literal non-primitive values 2017-10-14 13:54:17 -07:00
greg
688e1c7f5d Starting work on literal non-primitve values 2017-10-13 18:56:02 -07:00
greg
26c9c72bcc Can eval custom data constructors now 2017-10-13 03:05:18 -07:00
greg
2d614aa17a Float literals, kill old code 2017-10-13 00:01:43 -07:00
greg
ecb2eb0f87 Some more primitive types + binop-checking 2017-10-12 23:59:52 -07:00
greg
4c4004d3ac Add required imports 2017-10-12 21:46:12 -07:00
greg
9b4a23c4f2 Some partial work on refactoring type infer fn 2017-10-12 20:14:33 -07:00
greg
936c168cef Add colored output to non-interactive 2017-10-12 10:43:54 -07:00
greg
db835f42aa Convert webapp to using included files 2017-10-12 02:13:55 -07:00
greg
cd5fc36c37 Fix type check macro to add symbol table 2017-10-11 16:43:04 -07:00
greg
d7a33c974e More work with unification 2017-10-11 02:33:46 -07:00
greg
b2288206d2 the evar table
TODO find a better way to represent this
2017-10-11 02:11:12 -07:00
greg
d962e2c27a Unify work 2017-10-11 02:03:50 -07:00
greg
4534c1d3d6 Move type-level func up 2017-10-11 01:55:45 -07:00
greg
f79dc0b1e3 Okay I am figuring things out about hindley-milner again 2017-10-11 01:50:04 -07:00
greg
4928fc0019 rename type_var to ty 2017-10-10 22:14:55 -07:00
greg
d735e45688 String and () types 2017-10-10 21:51:45 -07:00
greg
b4208b696d Change around some stuff 2017-10-10 21:23:24 -07:00
greg
ff3dbbcbc6 Change Variable to Value 2017-10-10 21:02:32 -07:00
greg
e3261be8a0 Partial handling of user defined types 2017-10-10 17:29:28 -07:00
greg
f131105b50 Starting to make unify actually work 2017-10-10 04:38:59 -07:00
greg
1089a33634 Convert unify to are types
b/c Type implements Clone
Maybe wanna kill this later for efficiency
2017-10-10 04:26:40 -07:00
greg
6c60794485 Have + do something different with strings
Needed to introduce polymorphism soon
2017-10-10 02:45:25 -07:00
greg
2f18529bcc Operator typing a little bit 2017-10-10 02:41:17 -07:00
greg
c68e09d89d Slight refactoring 2017-10-10 02:32:02 -07:00
greg
d9e8178a90 Renamed all the type-related types 2017-10-10 02:17:07 -07:00
greg
57536e6399 Move some type checking code around 2017-10-10 01:11:24 -07:00
greg
32e077c407 Merge branch 'master' of github.com:neunenak/schala 2017-10-10 01:09:27 -07:00
greg
83752a1c74 Some more type work 2017-10-10 01:04:19 -07:00
greg
33d0d49d30 Basic typing test 2017-10-09 12:26:25 -07:00
greg
76a9367284 String types 2017-10-09 11:42:53 -07:00
greg
66c7bbeb07 Floats, pathspec changes 2017-10-09 04:02:50 -07:00
greg
ed8359bcd7 Store constant state, func/binding as value
on symbol table, instead of key
2017-10-09 02:38:33 -07:00
greg
996f75e15c A lot more type work 2017-10-09 02:26:59 -07:00
greg
30a54d997c Simplify symbol table code 2017-10-09 00:59:52 -07:00
greg
4bcbf1854a Use universal/existential type data structures 2017-10-09 00:36:54 -07:00
greg
f2c6556c2a Use name TypeVariable 2017-10-09 00:22:42 -07:00
greg
9161e2751f (Janky) type inference for explicitly-type-annotated values 2017-10-08 23:45:38 -07:00
greg
60fc9fd7e1 Super-basic type inference working
with a bunch of assumptions and hard-coded values
2017-10-08 23:33:53 -07:00
greg
3b249045aa Call needs to accept a general argument 2017-10-08 23:02:03 -07:00
greg
ff0e14d9a9 Rename params -> args in Call Expr 2017-10-08 22:52:05 -07:00
greg
8fe535597e Starting to actually do Hindley-Milner!! 2017-10-08 22:48:10 -07:00
greg
4bb8f82579 Make AST output red 2017-10-08 22:17:29 -07:00
greg
5cb8423ecc Beginning for expressions 2017-10-08 22:07:18 -07:00
greg
4032707dc9 Kill some comments 2017-10-08 21:26:47 -07:00
greg
1a8423535a Add test for function decl 2017-10-08 21:25:51 -07:00
greg
338981febe Changed function signatures around slightly 2017-10-08 21:21:02 -07:00
greg
6dff8b029e Function definitions expanded 2017-10-08 20:55:05 -07:00
greg
df877830d3 Fixed tests 2017-10-08 19:39:41 -07:00
greg
40696b3cbd Rename TypeAnno to TypeName everywhere 2017-10-08 19:30:52 -07:00
greg
40a82d7e25 Tests for new type stuff
+ some renaming
2017-10-08 19:15:08 -07:00
greg
c605f76059 More type work II 2017-10-08 19:03:02 -07:00
greg
a6d71821b9 More type work I 2017-10-08 18:47:57 -07:00
greg
c4f0331d1a Symbol table addition should be separate stage 2017-10-08 16:24:44 -07:00
greg
b4054d7581 Impl blocks 2017-10-08 14:24:02 -07:00
greg
74d3828c71 Symbol table debug needs to happen before type check 2017-10-08 13:59:55 -07:00
greg
bb57da564d Infrastructure to debug symbol table 2017-10-08 13:57:43 -07:00
greg
3f9ae5fac3 Symbol table accepts variables 2017-10-08 13:51:56 -07:00
greg
62edc7c996 type checking / symbol table stuff 2017-10-08 12:22:04 -07:00
greg
e412fb9a89 Convert type-checking function type 2017-10-07 22:08:48 -07:00
greg
3a97401f61 Add symbol table insertion method skeleton 2017-10-07 21:57:51 -07:00
greg
87cfe854ac Tuple literals 2017-10-06 20:28:07 -07:00
greg
184a2ae03a Change syntax for type alias 2017-10-04 22:02:31 -07:00
greg
50ceb92d6b Move type-checking into a module 2017-10-04 02:07:30 -07:00
greg
dd7736e32d Add some resources 2017-10-03 21:28:17 -07:00
greg
3025af3ded Starting on impls 2017-10-03 03:49:07 -07:00
greg
c83df6fd84 refactor main code 2017-10-02 23:33:07 -07:00
greg
65f64ebcc2 Add source file suffix to trait 2017-10-02 23:07:05 -07:00
greg
00ee802fbd Clear up clutter in code from using std::process:: 2017-10-02 23:00:11 -07:00
greg
c88d59401c Making main.rs more concise 2017-10-02 22:58:03 -07:00
greg
1aa4e3b942 Get rid of virtual machine code
Gonna implement this differently
2017-10-02 20:34:51 -07:00
greg
abbbb34901 Some very basic evaluation stuff 2017-10-02 20:11:27 -07:00
greg
3ff4a34aeb kill some non-used variable warnings 2017-10-02 01:52:46 -07:00
greg
7430aebe63 Webapp actually does something 2017-10-02 00:15:39 -07:00
greg
29d307ff53 Made web app a bit more useful 2017-10-01 23:25:36 -07:00
greg
89482e5b5a Use a Result 2017-10-01 19:31:43 -07:00
greg
6435d5e958 Make eval output nicer 2017-10-01 19:29:05 -07:00
greg
f6536e7ebd Evaluation stuff 2017-10-01 19:09:55 -07:00
greg
c5cb223168 Super-minimal type-checking with just ints 2017-10-01 17:50:26 -07:00
greg
d16a0c9380 Evaluation of literals 2017-10-01 12:55:28 -07:00
greg
daf9878020 Kill some unused code 2017-10-01 00:50:13 -07:00
greg
f825c87397 Type checking beginnings 2017-10-01 00:48:08 -07:00
greg
8d2a65b44e Starting eval framework 2017-09-30 23:30:02 -07:00
greg
6b9fee1aed Made handling parse errors nicer 2017-09-30 14:41:37 -07:00
greg
d05f173dd3 Using delmited! macro for more things 2017-09-30 14:11:38 -07:00
greg
e88a0f59b5 Made macro less complicatd 2017-09-30 13:46:50 -07:00
greg
90cf7db609 Use the delimiter macro in a few places
Made it capable of handling the strict <item> <delim> behavior necessary
for non-blocks, as well as teh loose behavior necessary for blocks,
added a test for a parse error.
2017-09-30 13:04:56 -07:00
greg
1ae9dbcba7 Tests for tuple type annotations 2017-09-30 01:14:49 -07:00
greg
9214f36c04 Tests for type annotations 2017-09-29 19:10:37 -07:00
greg
98169bd352 update test for new type anno format 2017-09-29 14:53:16 -07:00
greg
d60cf99ab5 Parsing sorta works
Need to handle double >> bug
2017-09-29 14:10:49 -07:00
greg
bb93d29beb Some type anno parsing work 2017-09-28 23:55:10 -07:00
greg
c20f93e18c A test for type annotation 2017-09-28 00:45:36 -07:00
greg
f48adbd9bf Made the tests work again 2017-09-28 00:06:08 -07:00
greg
9ad506fc78 Handling type annotations in the AST 2017-09-27 22:27:50 -07:00
greg
4c81c36d67 Parse type annotations
Not using them yet
2017-09-26 22:10:13 -07:00
greg
230f2dd7ff More match expr work 2017-09-21 16:00:14 -07:00
greg
4831a24853 yarn build script + rocket passthrough route 2017-09-20 23:21:45 -07:00
greg
8b83d982c0 More work on match expression 2017-09-20 21:05:08 -07:00
greg
6bff7aac0d Match expressions
not done yet
2017-09-20 20:30:30 -07:00
greg
7ac5846282 A tiny bit more work on the webapp 2017-09-19 22:11:05 -07:00
greg
0f9d2d76c4 Serve an actual file
Convert this to stdweb soon?
2017-09-19 22:11:05 -07:00
greg
006fd7d411 Trying webapp
Note this doesn't work yet
2017-09-19 22:11:05 -07:00
greg
e3b236a15d If expressions 2017-09-19 22:11:04 -07:00
greg
68bbd62ab6 Make token debug nicer 2017-09-19 22:11:04 -07:00
greg
e47a2c7241 Save REPL config to file 2017-09-19 22:11:04 -07:00
greg
a8b77848b4 kill old EBNF in comments 2017-09-19 22:11:04 -07:00
greg
839731f2d1 Make op! macro part of binexp!/prefexp! macros
For tests
2017-09-19 22:11:04 -07:00
greg
f51e1a3c47 make Operation a tuple-style struct 2017-09-19 22:11:04 -07:00
greg
fc350cd03e Prefix operators 2017-09-19 22:11:04 -07:00
greg
8fe7c85b00 return keyword + idea for how to use it in for 2017-09-19 22:11:04 -07:00
greg
b920fae93b variable bindings 2017-09-19 22:11:04 -07:00
greg
1981b74d89 Nicen up precedence-testing 2017-09-19 22:11:04 -07:00
greg
077ab8ddb8 Add trace to binexp parser 2017-09-19 22:11:04 -07:00
greg
9775bfc342 bool literals 2017-09-19 22:11:04 -07:00
greg
505d23a327 Parse . operator 2017-09-19 22:11:04 -07:00
greg
81c4566c2b Improved operator parsing 2017-09-19 22:11:04 -07:00
greg
8be757beca Some changes to EBNF grammar 2017-09-19 22:11:04 -07:00
greg
20c74953b5 Get rid of unimplemented! and panic! 2017-09-19 22:11:04 -07:00
greg
d5c3227966 Parse string literals 2017-09-19 22:11:04 -07:00
greg
fbeb101e7f make parse trace have newlines 2017-09-19 22:11:04 -07:00
greg
18c761a5b5 Wrap all parse methods in record-printing macro 2017-09-19 22:11:04 -07:00
greg
89cf101362 Refactoring prace trace infra 2017-09-19 22:11:04 -07:00
greg
66d10604ba make parse_method! macro more naturalistic 2017-09-19 22:11:04 -07:00
greg
565461e1db Show more useful information in parse tracing 2017-09-19 22:11:04 -07:00
greg
5ecd28d057 Print parse record in REPL as TraceArtifact 2017-09-19 22:11:04 -07:00
greg
6c5dbac406 Starting to add logic to track recursive descent calls 2017-09-19 22:11:04 -07:00
greg
5dd1cd79ff Parsing call expressions 2017-09-19 22:11:03 -07:00
greg
dfc89e5060 Index expressions
This only partially works
2017-09-19 22:11:03 -07:00
greg
5871bf68de test for function parsing 2017-09-19 22:11:03 -07:00
greg
34b569eb5f Starting to parse formal params 2017-09-19 22:11:03 -07:00
greg
5810fb7961 type alias test 2017-09-19 22:11:03 -07:00
greg
1a3076a949 Change syntax of rc macro 2017-09-19 22:11:03 -07:00
greg
1d9e5edfba Rudimentary type stuff 2017-09-19 22:11:03 -07:00
greg
555d2a7ba5 Identifier tests 2017-09-19 22:11:03 -07:00
greg
291fb61c8d Parse identifiers
Some more complicted types of expression
2017-09-19 22:11:03 -07:00
greg
685b579fdd paren exprs 2017-09-19 22:11:03 -07:00
greg
f72e77cbb6 Remove printlns 2017-09-19 22:11:03 -07:00
greg
4b5afef17e Added one more test 2017-09-19 22:11:03 -07:00
greg
5889998126 Precedence parsing
Using the Pratt parser algorithm (probably with some bugs as of yet).
Need to clean up the code some as well
2017-09-19 22:11:03 -07:00
greg
c19946bb6d Additional test 2017-09-19 22:11:03 -07:00
greg
d1301b30e6 Added infra for operators 2017-09-19 22:11:03 -07:00
greg
f8287e42ce Binary literal test case 2017-09-19 22:11:03 -07:00
greg
bd6bf2f4bb Parse binary literal 2017-09-19 22:11:03 -07:00
greg
a6b336d84c type anno EBNF 2017-09-19 22:11:03 -07:00
greg
deab74b992 Kill extraneous lines 2017-09-19 22:11:03 -07:00
greg
0755d42112 More parsing work 2017-09-19 22:11:03 -07:00
greg
117e0e38a8 Starting types 2017-09-19 22:11:03 -07:00
greg
3f1de5f60d Kill unused struct 2017-09-19 22:11:03 -07:00
greg
c52fd4c73d Parse test 2017-09-19 22:11:03 -07:00
greg
cac3ea86cf Import TokenType and Kw everywhere 2017-09-19 22:11:03 -07:00
greg
92ece39d5e Only IntLiteral
Signed/unsigned is via - operator
2017-09-19 22:11:03 -07:00
greg
14c09bb40c Float literals too 2017-09-19 22:11:03 -07:00
greg
0dabbc700b Concise-ify code 2017-09-19 22:11:03 -07:00
greg
741e5f7f9b Parsing basic numbers! 2017-09-19 22:11:03 -07:00
greg
cfefceabf9 More infra
Don't want EOF after all
2017-09-19 22:11:02 -07:00
greg
ea08f8cab8 More parse infra 2017-09-19 22:11:02 -07:00
greg
7d1c07c481 Parsing infrastructure 2017-09-19 22:11:02 -07:00
greg
7831cb8d8a Start parsing 2017-09-19 22:11:02 -07:00
greg
16d9e3eb60 Colored text for artifacts 2017-09-19 22:11:02 -07:00
greg
737dad6438 Added some tests
And commented out old tests for Maaru that don't compile
2017-09-19 22:11:02 -07:00
greg
74f8c16599 Fix bug with _ 2017-09-19 22:11:02 -07:00
greg
a82f24a158 Kill import 2017-09-19 22:11:02 -07:00
greg
6459ad28e8 A few more keywords 2017-09-19 22:11:02 -07:00
greg
57d4222746 Operators, keywords largely working 2017-09-19 22:11:02 -07:00
greg
88d1896281 Identifiers and keywords 2017-09-19 22:11:02 -07:00
greg
7fe0a6589e Unclosed string 2017-09-19 22:11:02 -07:00
greg
ac5bdd7bcb Change some func signatures around tokenizing and errors 2017-09-19 22:11:02 -07:00
greg
8bf5f40a2a Some string tokenizing - not done 2017-09-19 22:11:02 -07:00
greg
7e505dd88e Stuff 2017-09-19 22:11:02 -07:00
greg
f15427e5d9 A bunch of token stuff 2017-09-19 22:11:02 -07:00
greg
a53135a897 More elaborate tokens 2017-09-19 22:11:02 -07:00
greg
f3c8474c93 Add help entry
Would like to make this generalizeable
2017-09-19 22:11:02 -07:00
greg
8dc8d15437 Cleaned up Repl struct 2017-09-19 22:11:02 -07:00
greg
b5a6c5903e Switch to contentful output types 2017-09-19 22:11:02 -07:00
greg
c97e58c2aa Cleared out all remaining linter warnings 2017-09-19 22:11:02 -07:00
greg
cb9b56f000 Added back compilation 2017-09-19 22:11:02 -07:00
greg
55e1600b97 Kill old trait 2017-09-19 22:11:02 -07:00