Paul Tagliamonte
acfc5c6aa5
Merge branch 'master' into pr/236
2013-07-27 10:22:38 -04:00
Bob Tolbert
d960dc963f
Add CL handling to hyc
...
This adds real command line handling to 'hyc' for issue #256
This fix catches missing/unreadable files and prints a nice
error message instead of a nasty stack trace when trying to
compile a non-existent file.
Also add this non-existent file check to hy to prevent the
current stack trace from something like "hy foobarbaz" when
"foobarbaz" doesn't exist.
also changes the failure return value to 2 to match Python.
2013-07-26 08:40:56 -06:00
Nicolas Dandrimont
a17dcdbffb
Make with
return the last expression from its branch
...
Thanks @rwtolbert for the bug report
2013-07-19 00:43:12 +02:00
Paul Tagliamonte
ad86dff754
Merge branch 'master' into pr/254
2013-07-18 00:00:42 -04:00
rwtolbert
348eaaa0f4
Merge pull request #243 from paultag/paultag/bugfix/fix-yield
...
Fix yielding to not suck (#151 )
yay team
2013-07-16 18:27:14 -07:00
Paul Tagliamonte
3dde930ede
Merge branch 'master' into pr/236
2013-07-16 20:57:29 -04:00
Guillermo Vaya
6778e9b2e1
added @tuturto sugesstions and flake8 errors
2013-07-16 20:41:56 +02:00
Guillermo Vaya
dda291cfb5
make assoc accept multiple values, also added a even/odd check for checkargs
2013-07-16 14:35:57 +02:00
Bob Tolbert
c42492ad84
Fix missing docstrings from defclass issue #248
...
Added ability to parse doc strings set in defclass declarations,
likei:
(defclass Foo [object]
"this is the doc string"
[[x 1]])
2013-07-15 06:58:08 -06:00
Paul Tagliamonte
7c91913122
Fix yielding to not suck ( #151 )
...
This adds a class to avoid returning when we have a Yieldable
expression contained in the body of the function. This breaks Python
2.x, and ought to break Python 3.x, but doesn't.
We need this fo' context managers, etc.
This commit also has work from @rwtolbert adding new testcases and
fixes for yielded entries behind a while / for.
2013-07-14 13:11:27 -04:00
Bob Tolbert
df7bb1d29a
Provide bin scripts for both Windows and *nix
...
Summary: This update does away with the scripts in bin and changes
setup.py to use entry_points in cmdline.py for the scripts 'hy' and
'hyc'.
This fixes installing and running on Windows.
The tests are updated to run the 'hy' script produced by setup.py
and not from bin/hy. This is more correct and makes the tox tests
run on both Window and *nix.
For running hy or nosetests directly in the source tree, you do have
to run 'python setup.py develop' first. But since tox runs and builds
dists, all tox tests pass on all platforms.
Also, since there is no built-in readline on Windows, the setup.py
only on Windows requires 'pyreadline' as a replacement.
Switched from optparse to argparse in cmdline.py
Instead of trying to manually separate args meant for
hy from args meant for a hy script, this switches from
optparse to argparse for the CLI.
argparse automatically peels out args meant for hy and leaves
the rest, including the user hy script in options.args.
This fixes the issue @paultag found running "hy foo" where
foo is not a real file. Also added a test that makes sure
trying to run a non-existent script exits instead of dropping
the user into the REPL.
Added argparse as setup.py resource (and removed from tox.ini) as well as removed uses of deprecated setf
2013-07-14 09:06:42 -06:00
Bob Tolbert
62f1f40830
Add set of new core functions
...
Add set of new core functions to the stdlib.
Moved the auto-import code from compile_expression to
HySymbol so that "even?' in this style expression will
be found and imported.
(list (filter even? [1 2 3 4 5]))
The core functions are documented in 2 sections, one
for basic functions like (even?..) and (nth ...) and
one for all the sequence functions.
Update: This removes all the caching decorators, misnamed as
'lazy-seq' from the core. All sequence methods now just use
yield to return a generator, so they are Python-lazy
Further refinements of core functions
Cleaned up the docs to use 'iterator' instead of 'generator'
Fixed drop to just return the iterator instead of an extra
yield loop. But also added a test to catch dropping too
many.
2013-07-13 09:55:16 -06:00
Joe H. Rahme
236ebccc74
Removes setf
in favor of setv
2013-07-10 02:16:49 +02:00
Nicolas Dandrimont
1cb8db1cb2
Fix flake error
2013-07-06 20:39:02 +02:00
Morten Linderud
e4ae9880f4
Don't leave cruft around in sys.modules when an import fails.
...
Closes : #214 , #225
Squashed from a bunch of commits by @olasd
2013-07-06 20:37:44 +02:00
Paul Tagliamonte
b78be9a594
Jank @olasd's hack, clean up core.
...
The core shall from now on be only for the core language bits. Macro
bits shall live in hy.macros and in hy.compiler. This cleans up
garbage.
2013-07-06 14:00:11 -04:00
Paul Tagliamonte
86af7eacf1
Add in a new core language file.
...
This will let us implement common functions seen in other lisps,
and allow them to be importable, without explicit imports. The goal
is to keep this as small as we can; we don't want too much magic.
I've added `take' and `drop' as examples of what we can do.
2013-06-29 18:51:11 -04:00
Nicolas Dandrimont
b65c2a4596
whitespace fix
2013-06-26 08:50:37 +02:00
Guillermo Vaya
7b7b953410
set the value of empty hy expression to []
2013-06-26 08:50:37 +02:00
Paul Tagliamonte
59550c9abd
tell flake8 to shut up
2013-06-25 19:23:44 -04:00
Paul Tagliamonte
2f16ad6e78
Merge branch 'master' into pr/208
2013-06-25 19:20:58 -04:00
Morten Linderud
42468051f5
Builtins fix for 2 and 3, tests aswell
2013-06-25 17:02:02 +02:00
Morten Linderud
73c1f218e2
fixed a bug and added tests
2013-06-24 03:26:40 +02:00
Paul Tagliamonte
289586b340
Adding back in keywords.
...
Yes, I'm your hero, @algernon
2013-06-18 22:57:51 -04:00
Paul Tagliamonte
b00f181e1e
Merge branch 'master' into pr/187
2013-06-18 21:17:13 -04:00
Paul Tagliamonte
4aca7842cd
Add regression test for UTF and escapes.
2013-06-08 20:17:50 -04:00
Konrad Hinsen
2674016d3d
More tests
2013-06-07 16:36:04 +02:00
Konrad Hinsen
6eacf63b53
Provide both eval-and-compile and eval-when-compile
2013-06-07 16:36:04 +02:00
Konrad Hinsen
80105d9731
eval-when-compile permits compile-time definitions that can be used from macros
2013-06-07 16:36:04 +02:00
Konrad Hinsen
12abef5ed5
Forgot boolean constants..
2013-06-07 16:35:28 +02:00
Konrad Hinsen
e47bac1f96
Permit macros to return constants
2013-06-05 12:19:06 +02:00
Paul Tagliamonte
9c28e0292d
Merge branch 'master' into pr/185
...
Conflicts:
hy/macros.py
tests/compilers/test_compiler.py
Hoodoggy!
2013-05-17 11:17:51 -04:00
Paul Tagliamonte
c0fd41620f
Merge branch 'master' into pr/182
2013-05-17 11:09:37 -04:00
Paul Tagliamonte
5a1b004bfb
Merge branch 'master' into pr/179
2013-05-17 11:08:30 -04:00
Konrad Hinsen
269da19d76
Make macros module-specific.
...
A macro is available in the module where it was defined and
in any module that does a require of the defining module.
Only macros defined in hy.core are globally available.
Fixes #181
2013-05-16 15:34:14 +02:00
Konrad Hinsen
b7c5ff2991
Refactor test_ast.py to eliminate the lots of hy_compile(tokenize(...)) calls
2013-05-16 15:30:44 +02:00
Nicolas Dandrimont
f939ae9544
Test quoting dicts
2013-05-14 12:10:29 +02:00
Nicolas Dandrimont
3252af3129
Add tests for expr-in-dict
2013-05-14 12:01:23 +02:00
Nicolas Dandrimont
9e03e0e6ec
Modify HyDict semantics to allow nesting expressions
...
HyDicts are now HyLists, that get compiled down to dicts
only by the compiler.
2013-05-14 11:43:17 +02:00
Julien Danjou
66e5af4a82
Write a test for builds() check
...
Signed-off-by: Julien Danjou <julien@danjou.info>
2013-05-14 11:03:13 +02:00
Julien Danjou
4e202aa1a5
Check that compiler error are user always user friendly
...
Signed-off-by: Julien Danjou <julien@danjou.info>
2013-05-13 18:14:39 +02:00
Nicolas Dandrimont
1e7c90c44e
Test requires from native code
2013-05-11 21:25:21 +02:00
Nicolas Dandrimont
bd478590fa
Make that test macro more lispy
2013-05-11 21:25:21 +02:00
Nicolas Dandrimont
31c14e4167
Merge remote-tracking branch 'paultag/feature/native-macros' into feature/native-macros
...
Conflicts:
hy/compiler.py
tests/__init__.py
2013-05-11 20:18:40 +02:00
Paul Tagliamonte
636eec8f51
style fixes
2013-05-11 13:59:19 -04:00
Nicolas Dandrimont
0bbce2a819
Add a native macros test
2013-05-11 19:40:48 +02:00
Nicolas Dandrimont
0986f9001e
Change macros to be called with separate arguments
...
This provides free argument-length checking for macros.
2013-05-11 09:09:34 +02:00
Paul Tagliamonte
2426237916
Add the (require) form.
2013-05-10 23:43:34 -04:00
Nicolas Dandrimont
2860ef6ff7
Don't macro-expand inside quotes
2013-05-11 00:29:42 +02:00
Nicolas Dandrimont
68399b9fc3
Make sure splicing works at all times
2013-05-11 00:26:37 +02:00
Nicolas Dandrimont
e039c73abd
Add tests for quasiquoting
2013-05-10 23:42:38 +02:00
Paul Tagliamonte
9811b7514e
Merge branch 'master' into pr/171
2013-05-09 20:39:49 -04:00
Paul Tagliamonte
1fa53f9255
Try/Except: Ensure that we return properly
...
From both inside a try and in an exception handler.
2013-05-08 20:41:16 -04:00
Nicolas Dandrimont
488fa89e09
Add some tests for kwapplying expressions
2013-05-09 02:33:14 +02:00
Paul Tagliamonte
98134e7396
Merge branch 'master' into bugfix/paultag/fix-try-except
2013-05-08 20:22:51 -04:00
Paul Tagliamonte
066c9781c7
Merge branch 'master' into pr/170
2013-05-08 20:11:57 -04:00
Paul Tagliamonte
72461a5cdb
style tweak
2013-05-08 20:07:38 -04:00
Paul Tagliamonte
058197a24f
Allow returning inside a try / except. Closes #163
2013-05-08 20:00:09 -04:00
Paul Tagliamonte
ceedc69b7d
Correct existing tests for future try / except work.
2013-05-08 19:58:36 -04:00
Nicolas Dandrimont
4e3f842972
Add &optional arguments.
...
Python doesn't really have that concept, so make them clash with &key arguments.
2013-05-08 21:11:33 +02:00
Nicolas Dandrimont
5dbf6c6ca9
Add tests for &key arguments in functions
2013-05-08 21:11:33 +02:00
Nicolas Dandrimont
772927c53d
Drop the bare names that were sprinkled everywhere in the generated AST.
...
This closes #162
We make sure not to drop *explicitly written* bare names.
2013-05-08 18:49:07 +02:00
Nicolas Dandrimont
c7176c05c0
Merge branch 'jd/defclass' of https://github.com/jd/hy into jd-jd/defclass
2013-05-08 15:30:20 +02:00
Nicolas Dandrimont
2b1b11a129
Fixup comment
2013-05-08 15:01:08 +02:00
Julien Danjou
a823aca0c8
Run unit tests against hy2py
...
Signed-off-by: Julien Danjou <julien@danjou.info>
2013-05-08 14:39:38 +02:00
Julien Danjou
ad7e110af4
Implements defclass
...
This fixes issue #156
Signed-off-by: Julien Danjou <julien@danjou.info>
2013-05-08 12:38:57 +02:00
Nicolas Dandrimont
6935b7b8c1
Add a test for lambda w/ lambda-list
2013-05-07 20:07:15 +02:00
Nicolas Dandrimont
1e24dde153
Merge fn and lambda
...
We actually only generate an ast.Lambda if (lambda) was called, as a lot of code
expect ast.FunctionDefs (most notably with_decorator).
This allows empty lambdas too.
This fixes #165 .
2013-05-07 20:07:15 +02:00
Julien Danjou
8e9a16cc61
Add test case for issue #137
...
Signed-off-by: Julien Danjou <julien@danjou.info>
2013-05-06 15:48:00 +02:00
Julien Danjou
6948fff112
Add a first test for the compiler
...
Signed-off-by: Julien Danjou <julien@danjou.info>
2013-05-05 20:42:48 +02:00
Julien Danjou
9d8accb93a
compiler: do not optimize Name
...
The optimization is wrong; they can't have side effects, but they can
raise errors.
Signed-off-by: Julien Danjou <julien@danjou.info>
2013-05-05 20:42:48 +02:00
Nicolas Dandrimont
126e7ac531
Remove some unused code
2013-05-05 20:42:48 +02:00
Nicolas Dandrimont
6b2c635cfa
Add some more eval tests
2013-05-05 20:42:48 +02:00
Nicolas Dandrimont
4387b947b3
Add a test for subscript assignment
2013-05-05 20:42:48 +02:00
Nicolas Dandrimont
3d8a3d589c
Refactor compiler using a result carrying object
...
This object allows to coerce statements to an expression, if we need to use
them that way, which, with a lisp, is often.
This was collaborative work that has been rebased to make it bisectable.
Helped-by: Paul Tagliamonte <paultag@debian.org>
Helped-by: Julien Danjou <julien@danjou.info>
2013-05-05 20:42:48 +02:00
Nicolas Dandrimont
b7f92bd915
Don't lex "j" as a complex number.
...
This fixes #143
2013-05-04 10:27:30 +02:00
Julien Danjou
2ef9a0fdaf
Rename decorate-with' to
with-decorator'
...
Fixes #158
Signed-off-by: Julien Danjou <julien@danjou.info>
2013-04-28 17:14:22 +02:00
Julien Danjou
08fbd754b6
Update indentation for `if'
...
Signed-off-by: Julien Danjou <julien@danjou.info>
2013-04-28 17:08:00 +02:00
Julien Danjou
f25177e9a6
Add a `unless' macro
...
Signed-off-by: Julien Danjou <julien@danjou.info>
2013-04-28 17:04:35 +02:00
Julien Danjou
f68e3b972b
Add a `when' macro
...
Signed-off-by: Julien Danjou <julien@danjou.info>
2013-04-28 17:04:35 +02:00
Julien Danjou
9b261a5004
Make HyList add returns HyList
...
Signed-off-by: Julien Danjou <julien@danjou.info>
2013-04-28 17:04:33 +02:00
Julien Danjou
27e74d43b1
Re-indent Hy code using hy-mode
...
Signed-off-by: Julien Danjou <julien@danjou.info>
2013-04-28 16:31:31 +02:00
Will Kahn-Greene
07dec18dc3
Fix "hy -c CMD" to show lex errors; add tests
...
* tells you there's a lex error, but doesn't tell you much else
* adds tests for all new bin/hy functionality
2013-04-24 22:23:12 -04:00
Julien Danjou
50daf1b4c8
Make temp attribute more solid and add unit test on regression
...
Signed-off-by: Julien Danjou <julien@danjou.info>
2013-04-24 22:36:49 +02:00
Paul Tagliamonte
ada946fca8
style cleanup
2013-04-23 19:25:02 -04:00
Paul Tagliamonte
a1cf9e50eb
Merge branch 'master' into pr/141
2013-04-23 19:23:37 -04:00
John Jacobsen
8d8dd62168
Move take and drop from AST impl. in compiler.py to macros in core/bootstrap.py
2013-04-21 19:08:30 -05:00
John Jacobsen
f69c6243e8
Fix 'direction' of 'drop' function
2013-04-21 15:46:31 -05:00
John Jacobsen
fef571855b
Added 'take' and 'drop' functions (as AST elements)
2013-04-21 15:41:20 -05:00
Paul Tagliamonte
6f7f402c19
Merge branch 'master' into pr/140
...
Conflicts:
hy/compiler.py
tests/native_tests/language.hy
2013-04-21 12:29:09 -04:00
Julien Danjou
7066d53b02
Introduce a context manager for compiler.returnable
...
Signed-off-by: Julien Danjou <julien@danjou.info>
2013-04-21 17:14:26 +02:00
Paul Tagliamonte
47b2709c47
Merge branch 'master' into pr/145
2013-04-21 11:04:36 -04:00
Paul Tagliamonte
36a7f91014
Merge branch 'master' into pr/146
2013-04-21 11:03:32 -04:00
Paul Tagliamonte
feabe3ff4a
Merge branch 'master' into pr/125
2013-04-21 10:58:08 -04:00
Julien Danjou
3226ecc33f
Fix bin/hy and add a unit test
...
Signed-off-by: Julien Danjou <julien@danjou.info>
2013-04-20 22:28:45 +02:00
Julien Danjou
07e99dbd33
importer: doc update, MetaImport refactor
...
Signed-off-by: Julien Danjou <julien@danjou.info>
2013-04-20 22:11:53 +02:00
Gergely Nagy
494bf0e8ad
Remove the import-as and import-from builtins
...
The new and improved (import) can handle all cases import-as and
import-from did, so drop the latter two from the language. To do this,
the import builtin had to be changed a little: if there's a single
import statement to return, return it as-is, otherwise return a list of
imports.
Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2013-04-20 16:06:32 +02:00
Julien Danjou
74ea8fe5e5
Allow fn to have no body
...
Signed-off-by: Julien Danjou <julien@danjou.info>
2013-04-20 05:19:58 -07:00
Julien Danjou
07860b5ce6
Allow variable without value in `let' declaration
...
Fixes issue #138
Signed-off-by: Julien Danjou <julien@danjou.info>
2013-04-20 05:18:45 -07:00
James King
047956c59b
Clean up based on review
2013-04-19 10:36:51 -04:00
E. Anders Lannerback
18cb7203d3
Added global. Not sure if this is a good idea ...
...
(global foo) => global foo
2013-04-19 08:40:03 +02:00
James King
1080a457b1
Implemented &key and added tests
2013-04-18 22:27:38 -04:00
Paul R. Tagliamonte
f268403d49
Add another small test on this
2013-04-18 21:46:30 -04:00
James King
70e0d88149
WIP - Added &key support
2013-04-18 17:47:08 -04:00
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
Konrad Hinsen
41a9ce28f0
Implement unary minus
2013-04-16 17:43:40 +02:00
Paul R. Tagliamonte
9d913e92af
removing the pass
2013-04-14 21:58:44 -04: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
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
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
Nicolas Dandrimont
1756e534ad
The b prefix works since python2.6
2013-04-13 21:46:17 +02:00
Vladimir Gorbunov
0b03733c65
Add tests for pyc compilation
2013-04-13 20:57:54 +04: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
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
30c0b25512
Add a unicode string handling test
2013-04-12 20:58:56 +02:00
Nicolas Dandrimont
8bc8a4a170
Merge remote-tracking branch 'khinsen/float_and_complex_2' into paultag/master
...
Conflicts:
hy/lex/states.py
tests/lex/test_lex.py
2013-04-12 18:16:43 +02: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
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