1
1
mirror of https://github.com/github/semantic.git synced 2024-12-26 08:25:19 +03:00
Commit Graph

502 Commits

Author SHA1 Message Date
Rob Rix
16b1442b4b
Simplify deref slightly. 2019-07-26 15:35:43 -04:00
Rob Rix
0c106865f7
Record where names were bound. 2019-07-26 15:19:39 -04:00
Rob Rix
09f2362cd2
Abstract closures to their graphs. 2019-07-26 15:13:43 -04:00
Rob Rix
cb5b0fb2c4
Don’t allocate a pointless heap cell. 2019-07-25 13:28:02 -04:00
Rob Rix
b8f7bb06db
Don’t provide a current FrameId. 2019-07-25 13:11:07 -04:00
Rob Rix
3654aac2c8
🔥 the parent addr from the import & scope graph analyses. 2019-07-25 13:09:16 -04:00
Rob Rix
53e08b38ba
🔥 the specialization of String in the scope graph. 2019-07-25 13:03:05 -04:00
Rob Rix
f6cd84eba7
Merge branch 'sequence-values-in-the-abstract-domain' into scope-graphs 2019-07-25 12:57:07 -04:00
Rob Rix
0f34dcec45
Sequence values in the abstract domain. 2019-07-25 12:33:33 -04:00
Rob Rix
cd950fd6ec
Derive a Semigroup instance for Term Monotype a. 2019-07-25 12:33:13 -04:00
Rob Rix
7d9100f816
Derive a Semigroup instance for Concrete. 2019-07-25 12:33:00 -04:00
Rob Rix
fde3424c13
Dedent all the Analysis fields. 2019-07-25 12:32:47 -04:00
Rob Rix
057a4f8b5a
Copy in the import graph definition. 2019-07-25 09:31:36 -04:00
Rob Rix
5a40e01ff1
Derive Eq, Ord, & Show instances for Entry. 2019-07-25 09:30:15 -04:00
Rob Rix
8c59f9dc42
Only import the one symbol from Data.Text. 2019-07-25 09:30:02 -04:00
Rob Rix
455990dbc2
Change entrySymbol’s type to Text. 2019-07-24 08:07:35 -04:00
Rob Rix
a0bf65f43b
Move Edge into Concrete. 2019-07-23 16:11:04 -04:00
Rob Rix
7c24672921
Parse whitespace following string literals. 2019-07-23 15:53:18 -04:00
Rob Rix
41a31d1873
Simplify the projection rule. 2019-07-23 15:49:22 -04:00
Rob Rix
15430badec
Alignment. 2019-07-23 15:44:02 -04:00
Rob Rix
0254bc9895
Parse more escape sequences. 2019-07-23 15:43:25 -04:00
Rob Rix
f10cbb21b3
Generate string literals. 2019-07-23 15:43:11 -04:00
Rob Rix
3d65ae97ef
Sort the atoms. 2019-07-23 15:27:03 -04:00
Rob Rix
ac3f487703
Correct the precedence of load. 2019-07-23 15:24:19 -04:00
Rob Rix
3b6741456d
Rename edge to load. 2019-07-23 15:23:45 -04:00
Rob Rix
e4470bcbcc
Generate load instructions. 2019-07-23 15:23:26 -04:00
Rob Rix
0d530dc078
Sort the recursive generators. 2019-07-23 15:22:12 -04:00
Rob Rix
4bd2129511
Lower the precedence in lambda bodies. 2019-07-23 15:20:20 -04:00
Rob Rix
8e5c2163b8
Correct the precedence of recursive bindings. 2019-07-23 15:19:59 -04:00
Rob Rix
308066fbb1
Generate recursive bindings. 2019-07-23 15:18:04 -04:00
Rob Rix
e03236d301
Generate assignments. 2019-07-23 15:15:55 -04:00
Rob Rix
068941e3e1
Correct the precedence of if/then/else and lambda. 2019-07-23 15:12:41 -04:00
Rob Rix
9ccd11ef09
ifthenelse and lambda bind looser than assignment. 2019-07-23 15:10:51 -04:00
Rob Rix
08878f1a18
assign binds looser than application. 2019-07-23 15:07:21 -04:00
Rob Rix
59af553279
Recur via expr. 2019-07-23 15:05:46 -04:00
Rob Rix
d1671a6d7c
Rename prj to projection. 2019-07-23 15:02:24 -04:00
Rob Rix
b700740174
Split out a rule for application. 2019-07-23 15:02:05 -04:00
Rob Rix
b58ddb470b
Projections are lvalues. 2019-07-23 15:01:25 -04:00
Rob Rix
76eb3e2154
Pretty-print with mandatory precedence handling. 2019-07-23 15:00:32 -04:00
Rob Rix
5b682606bc
inParens wraps a Doc, not an action. 2019-07-23 12:34:10 -04:00
Rob Rix
99668a33a1
Don’t set the precedence recursively. 2019-07-23 12:31:35 -04:00
Rob Rix
edbea6991c
Indentation. 2019-07-23 12:27:24 -04:00
Rob Rix
56d40daef4
Rename with to withPrec. 2019-07-23 12:26:25 -04:00
Rob Rix
96127627f6
Define Prec as a newtype. 2019-07-23 12:24:45 -04:00
Rob Rix
3da182dcec
Comma-separate records. 2019-07-23 12:12:02 -04:00
Rob Rix
453b898581
Use colons to separate keys & values. 2019-07-23 12:10:24 -04:00
Rob Rix
47b43cf009
Don’t pad empty records. 2019-07-23 12:08:28 -04:00
Rob Rix
a96eadb620
Nest & align recursive bindings. 2019-07-23 12:07:08 -04:00
Rob Rix
b119712c53
Avoid redundant nesting of statements. 2019-07-23 12:03:19 -04:00
Rob Rix
6b250c723e
Pretty-print variables early. 2019-07-23 11:46:06 -04:00
Rob Rix
7b290632e5
🔥 bind. 2019-07-23 11:43:38 -04:00
Rob Rix
0045283378
Define unstatements using un. 2019-07-23 11:40:01 -04:00
Rob Rix
1e4315736f
Pass the index to un/unEither’s argument. 2019-07-23 11:38:48 -04:00
Rob Rix
6aa85afa76
Simplify un/unEither to not assume a Monad. 2019-07-23 11:37:38 -04:00
Rob Rix
fa9c991320
Define an eliminator for blocks of statements. 2019-07-23 11:30:14 -04:00
Rob Rix
6050b9594d
Define an eliminator for statements. 2019-07-23 11:18:21 -04:00
Rob Rix
16413e1e5b
Define a couple of functions for taking apart sequences of syntax. 2019-07-23 11:15:47 -04:00
Rob Rix
a63e7c3418
Clean up the language extensions in Data.Name. 2019-07-23 11:14:43 -04:00
Rob Rix
1caf99b0bf
Align. 2019-07-23 11:11:24 -04:00
Rob Rix
aa7f1fc6cc
Define a Bifunctor instance for :<-. 2019-07-23 11:10:49 -04:00
Rob Rix
b0ee9eeb80
Derive Foldable, Functor, & Traversable instances for :<-. 2019-07-23 11:10:04 -04:00
Rob Rix
4e98c0434b
Move the unseq/unseqs exports up. 2019-07-23 11:09:12 -04:00
Rob Rix
ed0231cdf2
Add an unbind eliminator for >>>=. 2019-07-23 11:08:55 -04:00
Rob Rix
9b3164a722
🔥 block. 2019-07-23 11:02:06 -04:00
Rob Rix
50f9b82ae6
Nest sequences. 2019-07-23 11:01:25 -04:00
Rob Rix
390b25a894
Wrap & indent records. 2019-07-23 09:56:00 -04:00
Rob Rix
f1c4d8a1c5
Add spaces inside records’ braces. 2019-07-23 09:54:08 -04:00
Rob Rix
77acb91a7f
Add spaces inside braces. 2019-07-23 09:53:13 -04:00
Rob Rix
5c033abb3e
🔥 encloseIf. 2019-07-23 09:51:52 -04:00
Rob Rix
200bf17d27
Print spaces after semicolons. 2019-07-23 09:47:24 -04:00
Rob Rix
024d2d4072
Don’t qualify the Pretty import. 2019-07-23 09:44:12 -04:00
Rob Rix
09fdb30653
Alignment. 2019-07-23 09:43:27 -04:00
Rob Rix
f851b2bc92
Correct a bunch of precedences. 2019-07-23 09:40:56 -04:00
Rob Rix
0cb3f181d0
Indentation. 2019-07-23 09:40:47 -04:00
Rob Rix
a5ac6f3342
Correct the condition on parenthesization. 2019-07-23 09:40:27 -04:00
Rob Rix
344b5bded1
Projection binds tighter than application. 2019-07-22 16:26:41 -04:00
Rob Rix
45723e71fc
Simplify the pretty-printing of sequences with a helper. 2019-07-22 16:19:22 -04:00
Rob Rix
539f8db2f6
Test roundtripping of general expressions. 2019-07-22 15:42:08 -04:00
Rob Rix
b43bdbb353
Use named' to define the name generator. 2019-07-22 15:33:47 -04:00
Rob Rix
043d3083fa
Generate records. 2019-07-22 15:26:02 -04:00
Rob Rix
52da8b764c
Qualify the import of Data.Core. 2019-07-22 15:13:14 -04:00
Rob Rix
f9eea3892a
Print braces around nested binds. 2019-07-22 15:07:35 -04:00
Rob Rix
a77ecdbe78
Parse binding statements. 2019-07-22 15:04:46 -04:00
Rob Rix
a39e7730ea
Follow the do' model for the Ruby prelude. 2019-07-22 15:02:10 -04:00
Rob Rix
b8bcad0126
Use do' instead of block. 2019-07-22 14:53:54 -04:00
Rob Rix
1ce4153148
do' doesn’t take an explicit body. 2019-07-22 14:52:54 -04:00
Rob Rix
0797316ead
Rename binds to do'. 2019-07-22 14:43:56 -04:00
Rob Rix
724ae1763f
Allow binds to process non-binding statements. 2019-07-22 14:42:46 -04:00
Rob Rix
a25d971250
Better pretty-printing of parse errors. 2019-07-22 14:32:05 -04:00
Rob Rix
ed94f7e5c3
Fix the expectation for projections. 2019-07-22 14:27:03 -04:00
Rob Rix
95226623bf
🔥 redundant specs. 2019-07-22 14:26:49 -04:00
Rob Rix
45a3d6f0c1
Fix the generators. 2019-07-22 14:24:40 -04:00
Rob Rix
325dc9d8a2
🔥 some redundant FIXMEs. 2019-07-22 14:19:17 -04:00
Rob Rix
69b21510b2
Implement typechecking for records. 2019-07-22 13:38:02 -04:00
Rob Rix
0c80fd246c
Set the super field. 2019-07-22 13:32:52 -04:00
Rob Rix
37caa4d759
Annotate the Ruby prelude deeply. 2019-07-22 13:23:21 -04:00
Rob Rix
3f7ac5eb50
Compute the fields of the record. 2019-07-22 13:06:46 -04:00
Rob Rix
acfcee116f
Bind the Ruby prelude sequentially. 2019-07-22 13:05:01 -04:00
Rob Rix
900bdbe426
Rename objectFrame to recordFrame. 2019-07-22 12:08:41 -04:00
Rob Rix
a1f41e155b
Rename Obj to Record. 2019-07-22 12:08:20 -04:00
Rob Rix
d29928827d
Only close over the free variables. 2019-07-22 12:07:51 -04:00
Rob Rix
2a600397b2
Closures close over their lexical environment once more. 2019-07-22 12:06:15 -04:00
Rob Rix
77cb532ae4
Annotate prog5 deeply. 2019-07-22 11:57:11 -04:00
Rob Rix
9ffd3f87e5
Annotate the entire prelude, not just the composition with ann. 2019-07-22 11:51:06 -04:00
Rob Rix
1abddf42b3
Annotate each binding. 2019-07-22 11:50:42 -04:00
Rob Rix
958d32fb52
Follow edges through the graph. 2019-07-22 11:43:28 -04:00
Rob Rix
9b6f7dd148
Obj holds an Env, not a Frame. 2019-07-22 11:32:58 -04:00
Rob Rix
384c221ef6
🔥 frameEdges. 2019-07-22 11:31:47 -04:00
Rob Rix
d41d7757fe
Don’t stratify frames through the heap. 2019-07-22 11:28:38 -04:00
Rob Rix
6c5240bfba
Bind and look names up in an Env. 2019-07-22 11:23:59 -04:00
Rob Rix
fea81ee213
🔥 the frame operation. 2019-07-22 11:19:09 -04:00
Rob Rix
8bc79bd804
Define and implement a record operation. 2019-07-22 11:18:34 -04:00
Rob Rix
5f21602967
🔥 some redundant FIXMEs. 2019-07-22 11:15:44 -04:00
Rob Rix
b0bc2cf25b
Note a FIXME. 2019-07-22 11:10:33 -04:00
Rob Rix
c613b0cef2
🔥 the edge instruction. 2019-07-22 11:10:00 -04:00
Rob Rix
cd3f73afdb
bind acts locally. 2019-07-22 11:08:22 -04:00
Rob Rix
4cc6520d57
Define :. as strictly projection. 2019-07-22 11:04:25 -04:00
Rob Rix
fb318fa56c
Tidier frame-pushing. 2019-07-22 11:00:42 -04:00
Rob Rix
2c13ed8b53
Don’t build a lambda for method calls. 2019-07-22 10:44:49 -04:00
Rob Rix
d5afd8434e
Rename bind* to abstract*. 2019-07-22 10:43:17 -04:00
Rob Rix
8373e3a7bb
🔥 a redundant qualifier. 2019-07-22 10:42:36 -04:00
Rob Rix
b851621c6f
📝 Rec. 2019-07-22 10:40:17 -04:00
Rob Rix
5e8a2c27c6
Note that :>>= is sequential let. 2019-07-22 10:38:08 -04:00
Rob Rix
85c1815b9f
Look up globals in the global scope. 2019-07-22 10:32:50 -04:00
Rob Rix
c495b4bf07
🔥 Edge. 2019-07-22 10:28:41 -04:00
Rob Rix
94546f7e75
Define a helper for binding multiple local variables in a sequence. 2019-07-22 10:24:07 -04:00
Rob Rix
c9b328eff5
🔥 a bunch of redundant prefixes. 2019-07-22 10:18:17 -04:00
Rob Rix
c175bc3553
Bind the global scope recursively. 2019-07-22 10:18:02 -04:00
Rob Rix
2a5c1818d1
🔥 lam'/lams'. 2019-07-22 10:12:48 -04:00
Rob Rix
1d50aecd9e
Define prog5 using lams. 2019-07-22 10:09:26 -04:00
Rob Rix
db448e6847
🔥 Let & Frame. 2019-07-22 10:07:27 -04:00
Rob Rix
b5a0624853
🔥 redundant parens. 2019-07-22 09:42:09 -04:00
Rob Rix
f24ef8b0a4
Correct the docs for Record. 2019-07-19 15:31:47 -04:00
Rob Rix
bff499e934
📝 :.. 2019-07-19 15:31:19 -04:00
Rob Rix
ef24642f26
Give fixity & precedence for :<-. 2019-07-19 15:25:33 -04:00
Rob Rix
38efb33327
Move unseq & unseqs up under >>>. 2019-07-19 15:19:34 -04:00
Rob Rix
e809a2935b
📝 :>>=. 2019-07-19 15:06:27 -04:00
Rob Rix
6f5e578d0f
Define a smart constructor for local bindings. 2019-07-19 15:04:27 -04:00
Rob Rix
15a125ba3b
Give fixity & precedence for >>>. 2019-07-19 15:01:01 -04:00
Rob Rix
a10cdc9380
Use >>> to define Block’s Semigroup instance. 2019-07-19 15:00:39 -04:00
Rob Rix
8c06d7bf0e
Reintroduce assignment syntax. 2019-07-19 14:58:31 -04:00
Rob Rix
cbf9f431dd
Define a smart-constructor for :>>. 2019-07-19 14:44:54 -04:00
Rob Rix
79f573795d
Parse records. 2019-07-19 14:36:22 -04:00
Rob Rix
972a52dcbf
Prefix records during pretty-printing. 2019-07-19 14:32:08 -04:00
Rob Rix
3459b3b058
Parse recursive bindings. 2019-07-19 14:28:48 -04:00
Rob Rix
2606e1eff1
🔥 a redundant where clause. 2019-07-19 14:26:08 -04:00
Rob Rix
1398c995a0
Redefine records as a flat list of bindings. 2019-07-19 14:21:39 -04:00
Rob Rix
f373ca410f
Define a smart constructor for recursive bindings. 2019-07-19 14:16:41 -04:00
Rob Rix
e259bc0e91
Define a recursive binder. 2019-07-19 14:03:31 -04:00
Rob Rix
00beb2dbce
Define a smart constructor for records. 2019-07-19 12:31:00 -04:00