Commit Graph

776 Commits

Author SHA1 Message Date
James King
9ff3b128b4 Got &rest working, tests pass
Did a little house cleaning in lex states.py too and started removing
stupid print() statements.
2013-04-11 12:00:27 -04:00
Gergely Nagy
2ea2cd1a8d tests: Test that keywords do not clash with normal strings
Signed-off-by: Gergely Nagy <algernon@balabit.hu>
2013-04-11 15:13:40 +02:00
Gergely Nagy
702811c69a Implement :keyword support
This implements keywords, ":" prefixed symbols that are able to look
themselves up in a collection. They're internally stored as strings that
start with "\ufdd0".

This fixes #22.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2013-04-11 15:13:26 +02:00
Konrad Hinsen
e3a9909a7e Implement integer division operator
Fixes #107
2013-04-11 10:09:15 +02:00
Konrad Hinsen
ac0a597742 Tests for float and complex constants 2013-04-11 09:54:59 +02:00
Konrad Hinsen
fd99f497a4 Fixed typo in test_lex.py 2013-04-11 09:40:57 +02:00
Paul R. Tagliamonte
d25d354281 Adding in on-the-fly-importing. 2013-04-10 22:51:58 -04:00
James King
484a96abae WIP - Move _parse_lamba_list to the functiondef 2013-04-10 16:52:28 -04:00
Konrad Hinsen
4f98ea22e8 Allow atoms (integers, booleans, symbols) as top-level expressions 2013-04-10 13:08:32 +02:00
Paul R. Tagliamonte
c98a367495 Merging the two tests. 2013-04-09 21:55:34 -04:00
Paul R. Tagliamonte
6f0e739b31 test hoisted functions too 2013-04-09 21:45:37 -04:00
Paul R. Tagliamonte
8cc26ba1bf moving to locals; fixing _ast vs ast, adding tests 2013-04-09 21:40:54 -04:00
Paul R. Tagliamonte
a948cf2870 Merge branch 'master' into feature/quoting 2013-04-09 19:50:25 -04:00
James King
7417789ce0 WIP - Adding Call support and FuncionDef
The test is still broken, there are print statements... this is an
ongoing WIP and will get squashed before submitted the PR.
2013-04-09 15:23:50 -04:00
James King
4d90123506 Merge branch 'develop' into feature/lambda-list-keyword 2013-04-09 15:13:25 -04:00
Julien Danjou
92eaed21e4 Merge pull request #87 from jd/jd/try
compiler: add `else' support in `try'
2013-04-09 08:23:41 -07:00
Julien Danjou
4ba6ada77b Merge pull request #92 from jd/jd/raise-0-arg
Implements (raise)
2013-04-09 08:23:09 -07:00
Julien Danjou
b13cc60075 Implements (raise)
As in Python, this allows to re-raise the last raised exception.

This fixes #86

Signed-off-by: Julien Danjou <julien@danjou.info>
2013-04-09 17:00:45 +02:00
Julien Danjou
f8131d3c36 compiler: add else' support in try'
This is a bit tricky, since we'll also have to support `finally' in the end,
I've introduced an Else statement on my own to be able to recognize it.

This fixes #74

Signed-off-by: Julien Danjou <julien@danjou.info>
2013-04-09 17:00:30 +02:00
Julien Danjou
dd90272129 except/catch: check exceptions list type
Signed-off-by: Julien Danjou <julien@danjou.info>
2013-04-09 16:56:45 +02:00
Paul R. Tagliamonte
997b32e18c Testing the behavior of (quote "foo") 2013-04-08 22:31:26 -04:00
Paul R. Tagliamonte
eeab56c2b7 Adding a symbol checker. 2013-04-08 20:24:47 -04:00
Paul R. Tagliamonte
93e4bc17eb Adding some basic testing in; more to come. 2013-04-08 20:23:51 -04:00
Julien Danjou
d7e8dd2a91 compiler: optimize empty tree mangling to ast.Pass
Signed-off-by: Julien Danjou <julien@danjou.info>
2013-04-08 13:27:50 -04:00
Julien Danjou
cd36a1d7eb Allow empty `do'
Signed-off-by: Julien Danjou <julien@danjou.info>
2013-04-08 15:17:11 +02:00
Paul R. Tagliamonte
38a714b5c5 Adding more tests; new entries 2013-04-07 19:44:52 -04:00
Paul R. Tagliamonte
5336b2f71a Fix early returns. Close #83 2013-04-07 19:29:45 -04:00
Paul R. Tagliamonte
6912f4c4d9 Merge branch 'master' into pr-82 2013-04-07 18:51:18 -04:00
Paul R. Tagliamonte
2216a23438 Merge branch 'jd/try' of git://github.com/jd/hy into pr-82 2013-04-07 18:51:08 -04:00
Julien Danjou
2ff3da032c Merge pull request #81 from paultag/paultag/bugfix/with-syntax-fix
Fixing (with)'s syntax to be more hyish.
2013-04-07 15:41:53 -07:00
Julien Danjou
c3cbceca36 Merge pull request #78 from paultag/paultag/bugfix/anon-macros
Paultag/bugfix/anon macros
2013-04-07 15:40:52 -07:00
Paul R. Tagliamonte
e22a0ff73c Mangle a macro until it stops moving
this helps if we use a macro in something that got tree-mangled
  back out.
2013-04-07 18:41:41 -04:00
Paul R. Tagliamonte
83d91c3f81 Asserting `fd' exists inside the with 2013-04-07 18:39:30 -04:00
Julien Danjou
a81a716420 Be sure errors are raised at by compile, not tokenize
Signed-off-by: Julien Danjou <julien@danjou.info>
2013-04-08 00:38:55 +02:00
Julien Danjou
0d3500f6e5 try: accept a simpler form
Signed-off-by: Julien Danjou <julien@danjou.info>
2013-04-08 00:36:08 +02:00
Paul R. Tagliamonte
4db9446197 Fixing (with)'s syntax to be more hyish. 2013-04-07 18:35:36 -04:00
Julien Danjou
48ae1b1e26 Merge pull request #80 from olasd/bugfix/unbalanced-expressions
Correctly handle unbalanced expressions
2013-04-07 15:27:45 -07:00
Nicolas Dandrimont
806f0d900c Throw an error on unbalanced expressions 2013-04-08 00:25:47 +02:00
Julien Danjou
a73d460beb try: allow empty body
Signed-off-by: Julien Danjou <julien@danjou.info>
2013-04-08 00:14:42 +02:00
Gergely Nagy
1b7d145c65 Implement the (or) function too
The (or) function is to be constructed similarly to (and), so refactor
the compile_and_operator function to handle or aswell.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2013-04-08 00:02:08 +02:00
Gergely Nagy
f03b538787 Implement the (and) function
The function takes at least two arguments, and turns it into a pythonic
and statement, which returns the last True-ish value, or False.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2013-04-07 23:54:56 +02:00
Paul R. Tagliamonte
bfc71e4a60 Add tail threading (->>) 2013-04-07 15:05:30 -04:00
Nicolas Dandrimont
1853b7d33c Correctly balance the brackets in the wrong syntax tests
We want to test the compiler, not the lexer.
2013-04-07 19:53:50 +02:00
Julien Danjou
bdd07e1251 Alias except' to catch' and raise' to throw'
Signed-off-by: Julien Danjou <julien@danjou.info>
2013-04-07 18:24:01 +02:00
Julien Danjou
2fd56e8fa1 catch: uncomment some tests
Signed-off-by: Julien Danjou <julien@danjou.info>
2013-04-07 18:20:32 +02:00
Julien Danjou
6dec894a0c Better catch syntax
The syntax is now changed to:

  (catch [] BODY)
  (catch [Exception] BODY)
  (catch [e Exception] BODY)
  (catch [e [Exception1 Exception2]] BODY)

Signed-off-by: Julien Danjou <julien@danjou.info>
2013-04-07 18:03:43 +02:00
Paul R. Tagliamonte
9d36dab693 Test importing things with dashes 2013-04-07 09:54:53 -04:00
Paul R. Tagliamonte
03dfbde1b8 style voodoo 2013-04-06 23:11:43 -04:00
Paul R. Tagliamonte
5a96089266 Using backslashes for now; punycode soon. 2013-04-06 21:33:52 -04:00
Paul R. Tagliamonte
bac3f6991c Revert "adding this as testable"
This reverts commit 104b9d1636.
2013-04-06 20:03:14 -04:00
Paul R. Tagliamonte
e0ed7cac40 Revert "Make HySymbol bytes free!"
This reverts commit 8b144a4f3d.
2013-04-06 20:02:08 -04:00
Paul R. Tagliamonte
104b9d1636 adding this as testable 2013-04-06 19:57:59 -04:00
Julien Danjou
8b144a4f3d Make HySymbol bytes free!
We can know use any amount and type of bytes to build a HyString, meaning we
can use Unicode and UTF-8 for our function and variables.

Eat that, snake!

Signed-off-by: Julien Danjou <julien@danjou.info>
2013-04-06 23:37:34 +02:00
Julien Danjou
123339bfcf tests: simplify not compiling tests
Signed-off-by: Julien Danjou <julien@danjou.info>
2013-04-06 21:28:12 +02:00
Julien Danjou
78133500cb Fix flake8 errors in tests
Signed-off-by: Julien Danjou <julien@danjou.info>
2013-04-06 21:22:35 +02:00
Julien Danjou
0eb795b4a5 Check the number of arguments for each function
Signed-off-by: Julien Danjou <julien@danjou.info>
2013-04-06 19:00:32 +02:00
Paul R. Tagliamonte
4b57fd0a51 Adding in an If mangle 2013-04-06 11:10:33 -04:00
Paul R. Tagliamonte
3ab7153398 Merge branch 'master' of git://github.com/jd/hy 2013-04-06 08:19:23 -04:00
Paul R. Tagliamonte
6aebc5820f Merge branch 'jd/if' of git://github.com/jd/hy 2013-04-06 08:18:13 -04:00
Julien Danjou
3e9a2178c5 Add support for unary operators (not, ~)
Signed-off-by: Julien Danjou <julien@danjou.info>
2013-04-06 10:38:41 +02:00
Julien Danjou
b36018981a if: emit error on too many args
Signed-off-by: Julien Danjou <julien@danjou.info>
2013-04-06 10:13:14 +02:00
Julien Danjou
9768345a7c let: add a scope test
Signed-off-by: Julien Danjou <julien@danjou.info>
2013-04-06 10:12:03 +02:00
Paul R. Tagliamonte
7abc472336 Implementing `let' 2013-04-05 21:54:04 -04:00
Julien Danjou
fa5ab3b3ad Tests for a future native-eval. Close #64. 2013-04-05 20:18:46 -04:00
Paul R. Tagliamonte
3b185250e0 trailing newlines suck 2013-04-05 20:01:37 -04:00
Paul R. Tagliamonte
27e4772aa7 Test the function return-o-matic 2013-04-05 19:59:33 -04:00
Paul R. Tagliamonte
936d1bcec7 testing nested things 2013-04-04 21:58:26 -04:00
Paul R. Tagliamonte
b2406a9d72 list flattener 2013-04-04 19:32:56 -04:00
Nicolas Dandrimont
ba021ed7bf Count the number of expressions executed in do 2013-04-04 11:20:10 +02:00
Nicolas Dandrimont
06511fe303 Add do-in-defn tests 2013-04-04 11:08:18 +02:00
Nicolas Dandrimont
99f62fb8b3 Add some tests for defn 2013-04-04 09:29:21 +02:00
Paul R. Tagliamonte
d421d869af Fixing the "olasd" bug 2013-04-03 20:18:56 -04:00
Nicolas Dandrimont
d070d3d484 Add while loops to the compiler 2013-04-03 19:55:09 +02:00
James King
dceaad716a [WIP] Added lambda list keyword parsing step
This allows us to translate lisp argument lists to Python ones.

(defun foo (x y &rest z &optional {foo 3} &aux kwargs))

translates roughly to:

def foo(x, y, *z, foo=3, **kwargs):
  pass
2013-04-03 11:39:31 -04:00
James King
c200b4e3d1 Added HyLambdaListKeyword tokens to the lexer
The name "lambda list keyword" is a historical artifact from the CLHS
and not optimal (http://clhs.lisp.se/Body/26_glo_l.htm).

The name may change at some point.
2013-04-03 10:19:18 -04:00
Paul Tagliamonte
0eeb5321e1 Merge branch 'jd/if-parsing' of git://github.com/jd/hy 2013-04-03 09:00:53 -04:00
Julien Danjou
1c8d21e3de Raises TypeError on bad if statements
This relates to issue #6.

Signed-off-by: Julien Danjou <julien@danjou.info>
2013-04-03 11:25:17 +02:00
Paul R. Tagliamonte
d316a8fde8 covering the new bits 2013-04-02 20:49:42 -04:00
Paul R. Tagliamonte
b1c605cc6a Updating the tests to not break Python 3.x 2013-04-01 23:06:59 -04:00
Paul R. Tagliamonte
fb6ec426e6 Adding in list comprehensions.
Thanks to paroneayea for the syntax brotip.
2013-04-01 22:47:11 -04:00
Paul R. Tagliamonte
b077af9620 more tests 2013-04-01 22:13:45 -04:00
Paul R. Tagliamonte
c4b270a727 test coverage bits 2013-04-01 22:07:05 -04:00
Paul Tagliamonte
025e501b13 cleaning up the tests a bit 2013-04-01 20:00:37 -04:00
Paul Tagliamonte
678ef441e5 Adding in tuple checkingish. 2013-04-01 19:53:04 -04:00
Paul Tagliamonte
6831841699 Adding in some tests for print 2013-04-01 19:51:21 -04:00
Paul Tagliamonte
426c7cd829 Test bad decoration 2013-04-01 19:38:58 -04:00
Christopher Allan Webber
1b60bee8a3 Change all instances of (def foo bar) to (setv foo bar)!
I'm in ur base polluting your language with all my opinions!
2013-04-01 16:51:28 -05:00
Christopher Allan Webber
9416422330 Changing cond to be more common lisp / emacs lisp like
Instead of:
  (cond (condition-1) (body-1)
        (condition-2) (body-2))

We now work like:

  (cond ((condition-1) (body-1)
         (condition-2) (body-2)))
2013-04-01 10:33:45 -05:00
Paul Tagliamonte
0809ef206c undoing that 2013-03-26 19:14:50 -04:00
Paul Tagliamonte
fee6263b85 Trying to double-import to trigger importer bugs 2013-03-26 19:09:42 -04:00
Paul R. Tagliamonte
ccd26205d7 unbreak py3.3? need to re-add with 2013-03-24 10:00:07 -04:00
Paul R. Tagliamonte
dd6a883060 implmenting with 2013-03-24 02:04:44 -04:00
Amrut Joshi
29f8cecf65 Added test for "import as" 2013-03-19 05:46:00 +00:00
Paul R. Tagliamonte
a94831beac add mod operator 2013-03-18 21:46:58 -04:00
Paul R. Tagliamonte
83a9bdc87d adding in rest macros 2013-03-18 19:49:36 -04:00
Paul R. Tagliamonte
a58c813dda adding in a slice operator 2013-03-18 19:47:48 -04:00
Paul R. Tagliamonte
8f6c77831b Adding first' / car' 2013-03-18 16:11:29 -04:00
Paul R. Tagliamonte
4cb4e7384e holy shit it's 2013 2013-03-18 10:27:14 -04:00
Paul R. Tagliamonte
0c1bdde6e3 doh, my bad 2013-03-17 17:51:09 -04:00
Paul R. Tagliamonte
5321703287 testing the double loop 2013-03-17 17:50:18 -04:00
Paul R. Tagliamonte
3c288519ac adding in yielding 2013-03-14 20:55:11 -04:00
Paul R. Tagliamonte
9b32506854 Fixing catch a bit to now force a param. 2013-03-14 09:21:03 -04:00
Paul R. Tagliamonte
b5214fb427 Inline comments. 2013-03-13 21:31:23 -04:00
Paul Tagliamonte
57775a95a6 Fiddling with the threading macro 2013-03-13 10:11:14 -04:00
Paul R. Tagliamonte
7f02210ad1 Testing assoc 2013-03-12 22:07:32 -04:00
Paul R. Tagliamonte
daa6443e7c Adding in a Threading macro (->) 2013-03-12 22:04:51 -04:00
Thomas Mashek
b6eca8dfc0 Earmuff stuff. 2013-03-12 12:46:20 -07:00
Paul R. Tagliamonte
9f057e8c8f Fixing 3.x AST 2013-03-11 20:17:27 -04:00
Paul Tagliamonte
b12e14b96b Adding in CodeMirror stuff. Makin' moves. 2013-03-11 19:14:20 -04:00
Paul R. Tagliamonte
4f856c35d4 adding in dotted notation 2013-03-09 22:04:38 -05:00
Paul R. Tagliamonte
44f5035919 reflowing; docstrings 2013-03-09 21:16:28 -05:00
Paul R. Tagliamonte
4ce12c93a5 adding in kwapply things. 2013-03-09 21:14:30 -05:00
Paul R. Tagliamonte
b1c3a758f9 adding in decorators 2013-03-09 21:01:59 -05:00
Paul R. Tagliamonte
3dba5f7aff futz with name things. 2013-03-09 19:46:32 -05:00
Paul R. Tagliamonte
821ca442aa allowing foo-bar 2013-03-09 18:58:47 -05:00
Paul R. Tagliamonte
0424446d56 adding in noteq 2013-03-09 17:15:56 -05:00
Paul R. Tagliamonte
8a2ba20407 Adding in lambdas. 2013-03-09 15:57:13 -05:00
Paul R. Tagliamonte
aa89c3c98e adding list checks, too 2013-03-09 00:56:13 -05:00
Paul R. Tagliamonte
f97cb5e4cb adding in array access 2013-03-09 00:55:27 -05:00
Paul R. Tagliamonte
5bdebdf5fc adding in a cond macro test. 2013-03-09 00:18:32 -05:00
Paul R. Tagliamonte
ce3e7a2d37 adding in more tests. 2013-03-09 00:01:43 -05:00
Paul R. Tagliamonte
7c7a613c9c adding a bit more coverage 2013-03-08 20:45:19 -05:00
Paul Tagliamonte
abf63fca12 fixing up the tests 2013-03-08 18:46:51 -05:00
Paul Tagliamonte
67b803b99a Breaking things to start again. 2013-03-08 18:18:43 -05:00
Paul R. Tagliamonte
dbd9f0bbf8 Q'plah! 2013-03-07 23:04:20 -05:00
Paul R. Tagliamonte
0b3628bcc3 Adding more compiler coverage. 2013-03-07 23:01:17 -05:00
Paul R. Tagliamonte
3166fec53e Thinking some ideas out. 2013-03-07 22:52:47 -05:00
Paul R. Tagliamonte
b520d3148b Revert "Adding in Quoting bits."
This reverts commit db122f2ec9.

I'm an idjiot.
2013-03-07 21:37:43 -05:00
Paul R. Tagliamonte
db122f2ec9 Adding in Quoting bits. 2013-03-07 21:29:18 -05:00
Paul Tagliamonte
173598d055 add spaceless things 2013-03-07 19:23:11 -05:00
Paul R. Tagliamonte
935ef5424e Add in dicts. 2013-03-06 20:59:45 -05:00
Paul Tagliamonte
863d619e4a cleaning up lexing code 2013-03-06 18:57:21 -05:00
Paul R. Tagliamonte
81d6a6515b adding better native testing 2013-03-05 22:15:45 -05:00
Paul R. Tagliamonte
da234b1d8f adding in thingers. 2013-03-05 22:08:53 -05:00
Paul R. Tagliamonte
de50e9d7a8 shutting up the test file 2013-03-05 21:44:26 -05:00
Paul R. Tagliamonte
37a11247c7 Tweaking the AST. 2013-03-05 21:42:54 -05:00
Paul R. Tagliamonte
7a925b5ee4 futzing with ideas 2013-03-05 20:28:09 -05:00
Paul Tagliamonte
0638cfa187 ideas, ideas. 2013-03-05 18:39:34 -05:00
Paul Tagliamonte
fecf17960d unstaged changes 2013-03-05 09:08:13 -05:00
Paul R. Tagliamonte
4d32dac9ad Moving the compiler stuff around. 2013-03-04 20:40:23 -05:00
Paul Tagliamonte
20805fc7b2 tweaking the ast. 2013-03-04 19:12:57 -05:00
Paul R. Tagliamonte
9e16fb4ca0 Very broken. 2013-03-03 19:40:46 -05:00
Paul R. Tagliamonte
ef9007c229 Futzing about. 2013-03-03 16:26:17 -05:00
Paul R. Tagliamonte
b37d92fe28 better line bits. 2013-03-03 14:03:59 -05:00
Paul R. Tagliamonte
9b58f893cb adding more testing 2013-03-03 13:12:23 -05:00
Paul R. Tagliamonte
a9b5d851b2 Fiddling with more AST testing 2013-03-03 13:10:50 -05:00
Paul R. Tagliamonte
6661d85323 Add some failing tests in. 2013-03-03 11:18:13 -05:00
Paul R. Tagliamonte
f776f5411a docstring update 2013-03-03 00:00:55 -05:00
Paul R. Tagliamonte
b42fdc0bb7 Adding more testing. 2013-03-02 23:47:16 -05:00
Paul R. Tagliamonte
f7ff953f7e Updating states / tests for more stuff. 2013-03-02 21:08:23 -05:00
Paul R. Tagliamonte
1c238d1f4c Adding better testing. 2013-03-02 20:41:57 -05:00
Paul R. Tagliamonte
159151f847 thingthings. like licensing. 2013-03-02 20:24:32 -05:00
Paul R. Tagliamonte
627ae0ffa5 Naming the tests, etc. 2013-03-02 19:48:29 -05:00
Paul R. Tagliamonte
3a630303dc cleanup 2013-03-02 19:45:54 -05:00
Paul R. Tagliamonte
797656b1fd Add some line bits. 2013-03-02 19:41:55 -05:00
Paul R. Tagliamonte
f14ccb6d22 Adding in the Integer bits. 2013-03-02 19:28:10 -05:00
Paul R. Tagliamonte
ea326ee29b Fiddling with the lexing. 2013-03-02 18:40:00 -05:00
Paul R. Tagliamonte
a405b8ef52 Thinking. 2013-03-02 18:03:59 -05:00
Paul R. Tagliamonte
5c6d98a24a Rebuilding. 2013-02-28 22:37:23 -05:00
Paul R. Tagliamonte
84453e75d2 Thinking about a refacotr. 2013-02-28 22:27:20 -05:00
Paul Tagliamonte
f5836da2a5 Kill everything 2013-02-27 19:00:52 -05:00
Matt Fenwick
a264b81e57 test case for lexing a lone string 2013-01-25 14:53:23 +01:00
Gergely Nagy
a7cd70c84a compiler: Make maps and lists able to look up their params
As a neat syntactic sugar, it's very neat if maps and lists are able
to work as if they were functions, and look up their arguments.

This implements just that, by translating (map key) to (index map key)
internally, and (list idx) to (index list idx).

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2013-01-12 00:50:08 +01:00
Paul Tagliamonte
f956b75e4e tests, again 2012-12-23 14:02:47 -05:00
Paul Tagliamonte
472da09f51 fixing the tests 2012-12-22 23:09:08 -05:00
Paul Tagliamonte
4f5bc16508 hacking on stuff. 2012-12-18 09:11:42 -05:00
Paul Tagliamonte
0081d4fdfc Updating for numbers 2012-12-16 21:44:14 -05:00
Paul Tagliamonte
0ec30fd75b Hash-maps from the ballroom 2012-12-16 21:09:11 -05:00
Paul Tagliamonte
03f25f0cbe updating tests 2012-12-15 18:38:34 -05:00
Paul Tagliamonte
a8c17db048 more list tests 2012-12-15 18:24:40 -05:00
Paul Tagliamonte
11fe591d38 testing thinger 2012-12-15 18:24:06 -05:00
Paul Tagliamonte
5975f2c8d6 Adding lists to the lexable things 2012-12-15 18:20:15 -05:00
Paul Tagliamonte
ec06d6af88 cleanup 2012-12-15 17:47:05 -05:00
Paul Tagliamonte
8f20829b08 adding in test for more stuff. 2012-12-15 17:39:10 -05:00
Paul Tagliamonte
457d84e3f7 Adding in better tests & a fix. 2012-12-15 17:31:23 -05:00
Paul Tagliamonte
d9b6fe7d79 Adding in some lexer testing. 2012-12-15 17:22:14 -05:00