Commit Graph

197 Commits

Author SHA1 Message Date
Robby Findler
0459e4fbcd redex: when there are no duplicate names in a pattern, don't do the
same-name-same-bindings check

this seems to speed up the r6rs test suite by about 12% and the
lambdajs benchmark by about 25%
2012-01-08 12:13:36 -06:00
Robby Findler
160fcacad6 redex: fix bug introduced in recent optimization attempts 2012-01-02 22:21:21 -06:00
Robby Findler
fe1df742b3 Tried to improve redex by detecting when a pattern does not
have any holes, hide-holes, or names and, in that case, just
combining booleans instead of building of mtch structs.

This does seem to work on a simple benchmark. The code below
gets about 6x faster. But on the r6rs test suite, there is
no substantial change (possibly because the caching obviates
this optimization?)

lang racket/base
(require redex/reduction-semantics)
(caching-enabled? #f)
(define-language L (e (+ e e) number))
(define t
  (let loop ([n 100])
    (cond
      [(zero? n) 1]
      [else `(+ 11 ,(loop (- n 1)))])))
(define f (redex-match L e))
(time (for ([x (in-range 1000)]) (f t)))
2012-01-02 10:08:29 -06:00
Robby Findler
5b2d378a77 fixed a bug in recent Redex internal pattern rewrite
(discovered by the random testing done for the racket machine model)
2011-12-28 23:52:56 -06:00
Robby Findler
f1bacffbdc Adjusted rewrite-side-condition/check-errs so that it normalizes the internal
redex patterns a bunch:

- repeats are turned into wrappers in sequences,
- names are all explicit,
- non-terminals are wrapped with `nt',
- cross patterns always have the hyphens in them.
- ellipses names are normalized (so there are no "hidden"
  name equalities); this also means that repeat patterns
  can have both a regular name and a mismatch name

Also, added a match-a-pattern helper macro that checks to make sure
that functions that process patterns don't miss any cases
2011-12-28 09:46:43 -06:00
Robby Findler
c91d004729 more cleanup of the rendering for the case when (format "~s" x)
and (format "~a" x) are different (when 'x' is a symbol)
2011-12-15 08:44:39 -06:00
Robby Findler
f725066bf9 fix bug in the handling of side-conditions 2011-12-05 01:14:54 -06:00
Robby Findler
e788c6f49e adjust define-judgment-form so that it
a) avoids creating big intermediate lists of the same things over and over
   (this closes PR 12380)
b) generates less code (by generating calls to local functions)
c) normalizes its output (sorts by the printed representation)
2011-11-20 22:50:07 -06:00
Robby Findler
0a75219438 added support for where & side-condition & judgment-holds to define-relation
closes PR 12382
2011-11-20 21:34:22 -06:00
Robby Findler
755dc28e55 Fixes define-relation's handling of ellipses across clauses
closes PR 12378
2011-11-17 17:00:11 -06:00
Robby Findler
9d371153fd add the #:stop-when argument to apply-reduction-relation* 2011-10-23 12:10:56 -05:00
Casey Klein
57a8ed5c79 Fixes matching of prefab struct literals
Fixes PR 12298
2011-10-17 19:37:16 -05:00
Casey Klein
83451fea98 Add evaluation contexts for by-need letrec calculus as an example 2011-09-19 12:20:45 -05:00
Casey Klein
9944e6b3f6 Adds missing test image 2011-09-08 10:43:23 -05:00
Casey Klein
6d43376f9c Adds support for `judgment-holds' clauses in metafunctions 2011-09-08 09:11:52 -05:00
Casey Klein
145828527f Fixes handling of pattern variables that look like metafunctions 2011-08-31 11:20:02 -05:00
Casey Klein
ecdd50da09 Tests defined-checks directly 2011-08-30 15:10:50 -05:00
Casey Klein
c25c0b2868 Deletes duplicate tests 2011-08-30 15:10:50 -05:00
Casey Klein
c0625dc30c Adds define-term form 2011-08-30 15:10:50 -05:00
Casey Klein
cee4566ed4 Makes test work when compilation strips source locations 2011-08-16 19:18:18 -05:00
Casey Klein
e485e9f348 Tests define-judgment-form and metafunction renaming
Closes PR 11469
2011-08-16 14:32:34 -05:00
Casey Klein
9e2e11e9c4 Tests metafunction Check Syntax arrows 2011-08-16 14:32:33 -05:00
Casey Klein
efa04066c6 Tests define-judgment-form's Check Syntax interaction 2011-08-16 14:32:33 -05:00
Casey Klein
98eaaebc65 Improves error messages for Redex definition forms 2011-08-15 12:46:14 -05:00
Casey Klein
4d1651645a Improves error message for premise typos 2011-08-10 12:24:02 -05:00
Casey Klein
a2dc2d9540 Fixes arity checks outside define-judgment-form 2011-08-10 12:24:02 -05:00
Casey Klein
87f3541979 Adds support for ellipsis-repeated premises 2011-08-10 12:24:01 -05:00
Casey Klein
88cd7cd303 Adds with-compound-rewriters typesetting form 2011-08-10 12:24:00 -05:00
Casey Klein
52c50dd67e Adds an alternative syntax for define-judgment-form rules
The conclusion may come last instead of first when a sequence of
dashes precedes it.
2011-08-10 12:24:00 -05:00
Casey Klein
dbfbf59256 Changes syntax for define-judgment-form mode and contract specs 2011-08-10 12:23:59 -05:00
Casey Klein
d58a743b89 Fixes define-judgment-form at the top-level with errortrace enabled 2011-08-10 12:23:59 -05:00
Casey Klein
576272362b Adds define-judgment-form form 2011-08-05 07:19:23 -05:00
Casey Klein
8887ea2ef3 Refactors meta-function implementation further 2011-08-05 07:19:22 -05:00
Casey Klein
c1198d0687 Makes tests executable from outside their directory 2011-08-05 07:19:21 -05:00
Casey Klein
3dc677d270 Factors out parsing of relation contracts 2011-08-05 07:19:21 -05:00
Casey Klein
6ff5dc779b Fixes keyword tests 2011-07-16 18:19:22 -05:00
Eli Barzilay
3157955d40 ".ss" -> ".rkt" scan done. 2011-07-02 10:37:53 -04:00
Eli Barzilay
40124a0619 A long overdue scan to eliminate files without terminating newlines.
(DrRacket should really do that.)
2011-06-28 02:01:41 -04:00
Robby Findler
58b60a6a87 fixed lw-test.rkt test suite 2011-06-15 09:25:50 +08:00
Robby Findler
b43e956c7b Redex: added to-lw/stx
plus improved the redex docs slightly and Rackety
2011-05-30 21:33:55 -05:00
Casey Klein
e8e2898359 Fixes rendering of relations with `name' patterns 2011-05-24 11:58:54 -05:00
Robby Findler
040bd371b6 adjust the lw construction in Redex so that it uses the width of the
"canonical" way to write symbols, instead of the way they are displayed.
This makes a difference for symbols that have spaces in them or symbols
that, when displayed, look like numbers or other non-symbol things.
2011-05-20 21:52:09 -05:00
Casey Klein
dd58b457a9 Fixes domain checking of unioned reduction relations 2011-05-08 05:04:16 -05:00
Robby Findler
507b1cd8fd moved the docs-complete library into rackunit
to avoid having a separate, new manual for the
  one library
2011-05-05 16:10:42 -05:00
Casey Klein
4b03ddccb1 Fixes Redex stepper's handling of symbols quoted with || 2011-05-04 10:34:01 -05:00
Casey Klein
fd401ce98e Adds docs test to the test script 2011-05-02 06:02:50 -05:00
Robby Findler
8fbefb0b6d added typesetting support for relations 2011-04-28 22:20:14 -05:00
Casey Klein
1d1cdd03f5 Adds a form like term-let but using Redex patterns 2011-04-26 12:13:17 -05:00
Casey Klein
b3f45d3c84 Refactors to eliminate copied code 2011-04-26 12:13:17 -05:00
Robby Findler
e7d0029aea added lots of new tests that our documentation is complete 2011-04-25 13:24:43 -05:00
Casey Klein
50f14dea18 Adds start term to test-->>E failure message
Closes PR 11867
2011-04-22 09:49:41 -05:00
Casey Klein
1c8c6ddbee Adds generate-term option for LHS-based generation 2011-04-22 04:43:11 -05:00
Casey Klein
362a6d75a5 Changes redex-match to suppress ..._x bindings 2011-04-22 04:43:11 -05:00
Casey Klein
0b9db752ca Fixes test-->>E failure message
Fixes PR 11853
2011-04-15 04:52:13 -05:00
Casey Klein
46b3a9d13d Fixes generation of any' within in-hole' context position 2011-04-14 18:32:06 -05:00
Casey Klein
ff7aba9750 Moves `term-let' test to proper file 2011-04-14 18:32:05 -05:00
Casey Klein
989103c3a1 Improves term-let's "too few ellipses" error
Fixes PR 10837
2011-04-07 13:17:15 -05:00
Casey Klein
143e1e66fd Improves error for references to not-yet-defined metafunctions
Fixes PR 11041
2011-04-07 13:17:15 -05:00
Casey Klein
6fc20125b0 Adds the STLC example to the test script 2011-04-06 11:11:43 -05:00
Casey Klein
1ad2b1b938 Makes cross' work better with hide-hole'
Fixes PR 11579
2011-04-06 10:17:15 -05:00
Casey Klein
e8130a2fd1 Fixes bug in `cross' pattern handling 2011-04-06 10:17:15 -05:00
Casey Klein
a4644d4d49 Disallows unquote in Redex patterns
Fixes PR 11296
2011-04-01 14:00:45 -05:00
Casey Klein
8a283650c4 Updates typesetting tests
Spacing is now different by a few pixels. The change does not seem to
be Redex specific
2011-03-30 13:59:39 -05:00
Casey Klein
6cdfa2ff73 Updates typesetting tests for new arrow drawing 2011-03-30 10:20:53 -05:00
Casey Klein
d97a2b505c Fixes matching of ..._x and ..._!_x inside ellipses 2011-03-30 10:15:17 -05:00
Casey Klein
b958e21f46 Fixes another bug in the stepper's diff highlighting 2011-03-29 13:05:03 -05:00
Casey Klein
df3bc8980b Fixes a bug in the stepper's diff highlighting 2011-03-29 13:05:02 -05:00
Robby Findler
f69ff3b6b7 added support for 'or', \vee, and \cup as builtins to the define-metafunction codomain contracts 2011-03-26 10:04:39 -05:00
Casey Klein
3214861420 Fixes rendering of (hole t ...+)
There was some old named holes code still in use.
2011-03-24 14:35:02 -05:00
Casey Klein
87934752b5 Adds a parameter that provides a default for redex-check's #:attempt argument 2011-03-22 21:20:29 -05:00
Casey Klein
f7fd6ee689 Changes the term generator to produce shorter sequences
It now uses the (local) size bound instead of the (global) attempt count.
2011-01-31 12:36:42 -06:00
Casey Klein
3250ff846c Adds a Redex version of Jay's continuation mark transformation 2011-01-29 15:26:30 -06:00
Casey Klein
b45bb829b6 Fixes a bug in metafunction traces
When the result is in the cache but the cache is not consulted because
`caching-enabled?' is false, the call should not be shown as cached.
2011-01-14 13:41:09 -06:00
Casey Klein
61607c4da1 Adds a check to the define/extend language parser 2011-01-14 13:41:09 -06:00
Casey Klein
3c2e2fc362 Fixes `extend-reduction-relation' bug.
The #:domain argument did not apply to inherited rules.
2011-01-14 13:41:09 -06:00
Casey Klein
56a548c517 Suppresses overridden rules in the names reported for a reduction relation 2011-01-14 13:41:09 -06:00
Casey Klein
de8b1bc101 Fixes a bug in the generation of `side-condition' patterns
The bindings supplied to `side-condition' predicates by the matcher
sometimes contain the-not-hole; the ones supplied by the generator
must be the same.
2010-12-31 15:34:31 -06:00
Robby Findler
eb29b17112 adds a #:pred argument to test-->> (in rough analogy to the #:pred argument on traces) 2010-12-20 22:09:10 -06:00
Casey Klein
335e679ec7 Makes the Redex tests less dependent on the wording of blame messages 2010-12-10 13:58:11 -06:00
Casey Klein
7243029786 Fixes a bug in the Redex term generator 2010-12-10 13:58:11 -06:00
Casey Klein
9ea976625d Steven's progress on the compiler 2010-12-06 14:44:38 -06:00
Casey Klein
45ba14cafa Updates OS X bitmaps for minor changes in gr2 rendering 2010-12-02 15:54:46 -06:00
Casey Klein
de775e6dc1 Fixes bug in typesetting tests 2010-11-28 06:43:10 -06:00
Casey Klein
8ff358b559 Abstracts randomized testing forms over the underlying PRG 2010-11-26 13:02:14 -06:00
Casey Klein
d927bc117e Fixes the bug with named contexts in a better way 2010-11-26 13:02:14 -06:00
Casey Klein
1147318426 Fixes bug with `in-hole' generation 2010-11-26 13:02:14 -06:00
Casey Klein
ae164d281b Adds optional `::=' keyword to language definition forms 2010-11-09 10:14:50 -06:00
Robby Findler
38b9b25ae0 redex: added indication of caching for metafunction tracing 2010-11-07 15:31:18 -06:00
Casey Klein
743ccafd15 Improves the error reporting and documentation for `define-relation' 2010-11-05 08:59:46 -05:00
Casey Klein
df810e8e10 Closes PR 11383 2010-11-04 17:31:35 -05:00
Robby Findler
8bf096b1e3 added contracts to define-relation.
(also removed old, wrong tl-pat stuff from the docs)
2010-11-04 17:29:14 -05:00
Casey Klein
4542d071d5 Adds the `test-->>∃' form. 2010-10-28 20:22:35 -05:00
Casey Klein
f4c4b79049 Renames delim-cont tests so that they're not stripped by the distribution script.
(Merge to release branch.)
2010-10-25 15:18:16 -05:00
Casey Klein
4577de0790 Fixes PR 11336. 2010-10-20 15:56:57 -07:00
Casey Klein
42687d26d1 Reverts most of push #21257.
That push recompiles a clause of an extended metafunction by
replacing the LHS with a recompiled form of the `lhs-pat' field of the
`metafunc-case' struct. But that field (used by the test generator)
also incorporates the clause's `where' and `side-condition' clauses,
causing them to executed twice when applying the recompiled clause (once
while matching its LHS, and once while evaluating its RHS).
2010-10-20 15:56:57 -07:00
Robby Findler
93260c7dd0 fixed mangled test case 2010-10-16 22:24:16 -05:00
Robby Findler
ccdea59949 added a failing test case; fixing this one isn't simple, but hopefully will also lead to good performance improvements (for some models at least) 2010-10-16 16:29:17 -05:00
Robby Findler
99d85159b6 adjusted define-metafunction/extension so that it recompiles the old cases in the new language 2010-10-16 16:29:15 -05:00
Robby Findler
e875f262d9 added a test case to be sure that the extension's clauses come before the original clauses in an extended metafunction 2010-10-16 16:29:15 -05:00
Robby Findler
c2d7f58e65 Rackety 2010-10-13 17:44:20 -05:00