James King
18ed72136f
Merge branch 'master' into feature/lambda-list-keyword
...
Conflicts:
hy/compiler.py
hy/lex/states.py
hy/util.py
tests/compilers/test_ast.py
tests/lex/test_lex.py
2013-04-18 15:17:30 -04:00
Paul R. Tagliamonte
d3a019b3dd
Don't quote things in (quote) - Closes #129
2013-04-17 23:20:56 -04:00
Paul R. Tagliamonte
3f362bc318
Merge branch 'unary_minus' of github.com:khinsen/hy
2013-04-16 23:07:32 -04:00
Konrad Hinsen
270a619cf7
Simplify the decorator hy.compiler.builds
...
Not so much for the efficiency gain, but to save keystrokes in the
debugger when looking at methods with lots of builds decorators.
2013-04-16 17:53:02 +02:00
Konrad Hinsen
41a9ce28f0
Implement unary minus
2013-04-16 17:43:40 +02:00
Paul R. Tagliamonte
4888589f59
Callin' this 0.9.6
2013-04-15 22:36:50 -04:00
Julien Danjou
475c2b6b63
Use HyTypeError to raise else' errors in
foreach'
...
Signed-off-by: Julien Danjou <julien@danjou.info>
2013-04-15 11:47:11 -07:00
Paul R. Tagliamonte
7b4d4fb371
Merge branch 'jd/finally' of git://github.com/jd/hy into pr-94
2013-04-14 21:57:11 -04:00
Paul R. Tagliamonte
da33f41753
some style fixes for @algernon
2013-04-14 21:54:15 -04:00
Paul R. Tagliamonte
a5a54fc7eb
Merge branch 'f/smart-import' of git://github.com/algernon/hy into pr-113
2013-04-14 21:32:22 -04:00
Paul R. Tagliamonte
3b3768853a
Merge branch 'jd/remove-pass' of git://github.com/jd/hy into pr-122
2013-04-14 21:09:47 -04:00
Paul R. Tagliamonte
5d0b1a5e1e
Merge branch 'jd/for-else' of git://github.com/jd/hy into pr-121
2013-04-14 21:05:55 -04:00
Julien Danjou
bbaab58a4c
Implements else' for
foreach' statements
...
Signed-off-by: Julien Danjou <julien@danjou.info>
2013-04-15 02:50:26 +02:00
Julien Danjou
c05ae5fcbc
Add AugAssign handling
...
Signed-off-by: Julien Danjou <julien@danjou.info>
2013-04-15 02:49:34 +02:00
Julien Danjou
60a9003b0c
Add missing bits operator and power
...
Signed-off-by: Julien Danjou <julien@danjou.info>
2013-04-15 02:49:34 +02:00
Julien Danjou
6a09179809
Enhance error handling
...
We now have a full backtrace if the compiler bugs, and if it's a user
problem we indicate him where he failed.
Signed-off-by: Julien Danjou <julien@danjou.info>
2013-04-15 02:48:58 +02:00
Julien Danjou
fdb6bf944c
try: add support for `finally'
...
This fixes #75
Signed-off-by: Julien Danjou <julien@danjou.info>
2013-04-15 02:48:58 +02:00
Julien Danjou
cb20910d93
Remove `pass' from the language.
...
This also fixes a bug in the pass optimize missing branch where the code is
something like: [stmt, [], stmt]; in such case we want to filter out [], so
if we end up with [] we can optimize it. This fix is needed otherwise (do)
inside (do) are not properly optimized.
Signed-off-by: Julien Danjou <julien@danjou.info>
2013-04-14 13:56:44 +02:00
Gergely Nagy
5d895c2005
Making (import) a lot smarter
...
With these changes, the import function will become a lot smarter, and
will combine all of import, import-from and import-as in a hyly lispy
syntax:
(import sys os whatever_else)
(import [sys [exit argv]] [os :as real_os]
[whatever_else [some_function :as sf]])
That is, each argument of import can be:
- A plain symbol, which will be imported
- A list, which will be handled specially
If the argument is a list, the first element will always be the module
name to import, the second member can be either of these:
- A list of symbols to import
- The ':as' keyword
- Nothing
If it is the ':as' keyword, the third argument must be an alias. If it
is a list of symbols to import, we'll iterate through that list too. If
any symbol is followed by an ':as' keyword, we'll pick all three, and
treat the third member as an alias. If there is nothing else in the
list, we'll import the module as-is.
All this combined fixes #113 .
Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2013-04-13 15:06:31 +02:00
Vladimir Gorbunov
f30e7cd99b
Fix hyc
2013-04-13 16:28:37 +04:00
Paul R. Tagliamonte
f295b10f52
Updating yield.
2013-04-12 23:48:58 -04:00
Paul R. Tagliamonte
a71f166610
Merge branch 'future_division' of github.com:khinsen/hy into pr-106
2013-04-12 23:07:40 -04:00
Nicolas Dandrimont
d5db2840ad
Don't punycode pure unicode strings.
2013-04-12 20:42:40 +02:00
Nicolas Dandrimont
65c08c8c7d
Factor str_type into hy.util
2013-04-12 20:42:39 +02:00
Paul Tagliamonte
e4e61a463e
Adding in the new models.
2013-04-12 09:18:25 -04:00
Paul Tagliamonte
1f4ed473d3
Style fixes; function declashing.
2013-04-12 09:11:56 -04:00
Paul Tagliamonte
3ec828e660
Merge branch 'float_and_complex' of git://github.com/khinsen/hy into pr-109
2013-04-12 09:09:38 -04:00
Paul Tagliamonte
c15d8750e8
Merge branch 'f/hy.models.keyword' of git://github.com/algernon/hy into pr-101
2013-04-12 08:58:38 -04:00
Paul Tagliamonte
94d2c381a5
Merge branch 'lexer_extensions' of git://github.com/khinsen/hy into pr-98
2013-04-12 08:55:13 -04:00
Konrad Hinsen
0c56885d42
Use __future__.division for all Hy code
...
Fixes #106
Note: This is implemented by replacing all calls to Python's
builtin "compile" function by calls to hy.importer.compile_,
which adds the "future division" flag. Anyone using "compile"
in future work will have to remember this.
2013-04-12 05:23:25 +02:00
Paul R. Tagliamonte
db3e2bd346
updating the nested mangles
2013-04-11 22:25:23 -04:00
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
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
Paul R. Tagliamonte
eee65f3051
Update to the style.
2013-04-10 23:11:54 -04:00
Paul R. Tagliamonte
b65f78a0c7
Adding in this barf of a hack beacuse it pleases me.
2013-04-10 23:06:55 -04:00
Paul R. Tagliamonte
f6b94b1b40
Avoiding breaking PyPy. Wat.
2013-04-10 23:00:42 -04:00
Paul R. Tagliamonte
d25d354281
Adding in on-the-fly-importing.
2013-04-10 22:51:58 -04:00
Paul R. Tagliamonte
644f2756f3
Fixing the raised Exception.
2013-04-10 21:49:27 -04:00
Paul R. Tagliamonte
1adf64839a
Updating travis; exceptions.
2013-04-10 21:44:23 -04:00
Paul R. Tagliamonte
65db83d1ff
moving atoms around to make it easier for internals.
2013-04-10 20:04:58 -04:00
James King
484a96abae
WIP - Move _parse_lamba_list to the functiondef
2013-04-10 16:52:28 -04:00
James King
160eaaa543
Merge branch 'develop' into feature/lambda-list-keyword
2013-04-10 15:14:45 -04:00
James King
1506ff16ad
Added ast pretty printer
2013-04-10 15:08:44 -04:00
Konrad Hinsen
b1f66b6893
Handle float and complex constants in addition to integer
2013-04-10 14:26:16 +02:00
Konrad Hinsen
4f98ea22e8
Allow atoms (integers, booleans, symbols) as top-level expressions
2013-04-10 13:08:32 +02:00
Konrad Hinsen
753460884e
Accept strings as top-level expressions
2013-04-10 12:32:39 +02: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
73be6afd3a
Initial cut of `eval'
2013-04-09 21:33:09 -04:00
Paul R. Tagliamonte
3f5ce64407
I'm an idiot
2013-04-09 20:44:52 -04:00
Paul R. Tagliamonte
c0b34181bc
futzing with alignment
2013-04-09 20:44:05 -04:00
Paul R. Tagliamonte
b71d5c597e
Fixing a bug @jd noticed.
2013-04-09 20:34:46 -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
181a22be93
Merge pull request #91 from jd/jd/better-error-reporting
...
Enhance error reporting
2013-04-09 08:23:27 -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
48d5a0abc0
catch: use the right symbol name in errors
...
Signed-off-by: Julien Danjou <julien@danjou.info>
2013-04-09 16:58:32 +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
Julien Danjou
ed5a0455b6
Enhance error reporting
...
We're now able to make the difference between a compiler bug and a user
trying to compile wrong thing, and report this correctly on the console.
Signed-off-by: Julien Danjou <julien@danjou.info>
2013-04-09 16:09:06 +02:00
Paul R. Tagliamonte
997b32e18c
Testing the behavior of (quote "foo")
2013-04-08 22:31:26 -04:00
Paul R. Tagliamonte
f27378e57a
Adding in some prototype bits for quoted forms.
2013-04-08 20:18:15 -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
57fa5c8127
Time for 0.9.5
2013-04-07 19:45:50 -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
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
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
Paul R. Tagliamonte
47ec1d264c
style fixes
2013-04-07 18:16:45 -04:00
Paul R. Tagliamonte
3f84da8771
Merge branch 'f/and-and-or' of git://github.com/algernon/hy into pr-79
2013-04-07 18:15:54 -04: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
Julien Danjou
f5dc569de4
compiler: remove old TODO entry
...
Signed-off-by: Julien Danjou <julien@danjou.info>
2013-04-07 23:14:42 +02:00
Paul R. Tagliamonte
bfc71e4a60
Add tail threading (->>)
2013-04-07 15:05:30 -04: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
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
3c735d18bd
Revert "Revert "Remove useless code""
...
This reverts commit 262da59c77
.
Conflicts:
hy/models/string.py
2013-04-07 10:06:44 -04:00
Paul R. Tagliamonte
c657def253
namespaceing to __hy in case anyone tries this 4real
2013-04-06 23:31:26 -04:00
Paul R. Tagliamonte
03dfbde1b8
style voodoo
2013-04-06 23:11:43 -04:00
Paul R. Tagliamonte
0429cbea12
Using punycode where we can.
2013-04-06 22:49:48 -04:00
Paul R. Tagliamonte
5a96089266
Using backslashes for now; punycode soon.
2013-04-06 21:33:52 -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
262da59c77
Revert "Remove useless code"
...
This reverts commit 801c4e0099
.
2013-04-06 20:01:55 -04:00
Paul R. Tagliamonte
0eb4029d74
Merge branch 'jd/clean-hystring' of git://github.com/jd/hy
2013-04-06 19:17:28 -04:00
Julien Danjou
801c4e0099
Remove useless code
...
This seems to have no purpose to me.
Signed-off-by: Julien Danjou <julien@danjou.info>
2013-04-06 23:40:21 +02: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
Paul R. Tagliamonte
914011175f
Style fixes
2013-04-06 13:15:32 -04: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
a625493a3f
Style fix
2013-04-06 08:18:45 -04:00
Paul R. Tagliamonte
6aebc5820f
Merge branch 'jd/if' of git://github.com/jd/hy
2013-04-06 08:18:13 -04:00
Paul R. Tagliamonte
c612582e7b
cosmetic style fix
2013-04-06 08:17:04 -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
Paul R. Tagliamonte
7abc472336
Implementing `let'
2013-04-05 21:54:04 -04:00
Paul R. Tagliamonte
d48c2b7cae
Calling this 0.9.4
2013-04-05 20:47:25 -04:00
Paul R. Tagliamonte
d762625aeb
also ignore setf / setv
2013-04-05 20:00:19 -04:00
Paul R. Tagliamonte
65ad7a3b87
Adding FunctionDef as a returnable
2013-04-05 19:46:27 -04:00
Paul R. Tagliamonte
1d01d8874a
Bugfix for #50 . I'm slowly starting to take a shine to this.
2013-04-05 19:29:31 -04:00
Paul R. Tagliamonte
7da1129298
Merge branch 'master' into bugfix/branch-mangler
2013-04-04 21:52:45 -04:00
Paul R. Tagliamonte
9578ae7a57
This fix is in living memory of paroneayea
2013-04-04 21:52:15 -04:00
Paul R. Tagliamonte
7c9fa3758c
Print is for loosers.
2013-04-04 21:50:01 -04:00
Paul R. Tagliamonte
4e2e18576a
Fixing a subtle bug.
2013-04-04 21:49:04 -04:00
Paul R. Tagliamonte
256506ede0
Sketch for #50 - branch mangler
...
This is only slightly better. The insert point needs to walk
with the for loop.
2013-04-04 21:47:00 -04:00
Paul R. Tagliamonte
b2406a9d72
list flattener
2013-04-04 19:32:56 -04:00
Nicolas Dandrimont
940afcafa9
Allow (do) inside (defn)
...
Closes #59
2013-04-04 11:07:38 +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
9c3142f752
tigten that code up a skitch
2013-04-02 21:00:50 -04:00
Paul R. Tagliamonte
26f38367e9
cleaning the last bit up
2013-04-02 20:47:24 -04:00
Paul R. Tagliamonte
c8d3a1859e
Reflowing the list-comp bits.
2013-04-02 20:47:24 -04:00
Paul Tagliamonte
12106d3d37
idle cleanup
2013-04-02 14:50:16 -04:00
James King
aa3a4e54cd
Minor py3.3 fixes
2013-04-02 14:38:21 -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
c4b270a727
test coverage bits
2013-04-01 22:07:05 -04:00
Paul R. Tagliamonte
bb14b7a7f6
Add progn in :)
2013-04-01 21:08:32 -04:00
Paul Tagliamonte
6831841699
Adding in some tests for print
2013-04-01 19:51:21 -04:00
Christopher Allan Webber
b4ba4087df
Minor stylistic change to compiler.py
2013-04-01 18:41:55 -05:00
Christopher Allan Webber
f8be07b643
Defun is now an alias for defn
2013-04-01 16:36:56 -05:00
Christopher Allan Webber
73695881a9
Provide setf and setv as options for setting variables.
2013-04-01 16:32:48 -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 R. Tagliamonte
82c4ac1b8f
Moving to 0.9.3
2013-03-29 20:38:02 -04:00
Paul R. Tagliamonte
684c0e928b
License bits.
2013-03-28 22:42:53 -04:00
Paul R. Tagliamonte
c447a5dc7e
style cleanup
2013-03-28 22:33:32 -04:00
Paul R. Tagliamonte
32574e140e
adding space
2013-03-28 22:32:24 -04:00
Paul R. Tagliamonte
de7a450d92
Adding in a completer.
2013-03-28 21:42:40 -04:00
Paul R. Tagliamonte
1f1676c354
Adding in meth
2013-03-27 22:19:27 -04:00
Paul R. Tagliamonte
7eed26f0c3
Adding in tuples. Close #30 . Ugly as hell.
2013-03-27 20:09:11 -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
Paul Tagliamonte
980cd493e0
futzing with a few things
2013-03-21 19:27:34 -04:00
Amrut Joshi
db88fcd347
Support for "import as"
2013-03-19 05:33:45 +00:00
Paul R. Tagliamonte
07c169eb1b
Adding in a main bit for rPy evil bits
2013-03-19 00:58:43 -04:00
Paul R. Tagliamonte
a94831beac
add mod operator
2013-03-18 21:46:58 -04:00
Paul R. Tagliamonte
a0ff144686
adding slightly better reprs in
2013-03-18 21:08:35 -04:00