Commit Graph

181 Commits

Author SHA1 Message Date
Bruce Hill
7c6047254e Upgraded to 3.8 (text method changes) and fixed some bugs in
tree_to_nomsu.
2018-09-10 16:26:27 -07:00
Bruce Hill
43e6523fd4 Shifting towards more text methods instead of text global functions.
Also fixed a bug with method call parenthesizing.
2018-09-10 15:56:00 -07:00
Bruce Hill
13923c9d26 Made uuid action public. 2018-09-06 13:32:30 -07:00
Bruce Hill
a35d010dfe Removed the mandatory "_" prefix for Nomsu variables, renamed "list" and
"dict" to "List" and "Dict", or in Nomsu's environment, "_List" and
"_Dict", removed uuid.lua and replaced it with core/id.nom for handling
IDs.
2018-09-06 12:48:16 -07:00
Bruce Hill
e1bc075bb5 Removing the "A_" prefix on action names, and improving the quality of
as_lua_id() (guaranteed injectivity).
2018-08-31 15:22:32 -07:00
Bruce Hill
bfb40c02bc Added test for list addition. 2018-08-30 14:26:32 -07:00
Bruce Hill
18126da9c5 Auto-upgraded to 3.7 2018-08-30 14:16:18 -07:00
Bruce Hill
4f30e02acb Handling more compatibility stuff, including Lua 5.4, and a backup for
if openssl module is not found, and moving containers (List/Dict) into
their own file, as well as bit operators (and support for __bxor, etc.
metamethods in Lua 5.2/LuaJIT)
2018-08-29 19:39:15 -07:00
Bruce Hill
aae5ce31fe Actually deleting old list modification methods. 2018-08-29 16:05:14 -07:00
Bruce Hill
811fdd6856 Tweaked version 3.6 to include deprecating list append/removal functions
in favor of using a method call style.
2018-08-29 16:00:04 -07:00
Bruce Hill
dcb5e8add2 Fully updated to 3.6, deprecated old LuaCode global functions like "to 1
write 2" and replaced them with method calls like "1::append 2"
2018-08-29 15:10:27 -07:00
Bruce Hill
23b52bc22d Intermediate step in upgrading to 3.6. Fixed a bug with upgrading
methods.
2018-08-29 15:03:03 -07:00
Bruce Hill
e64632be1a Switched "as_lua_id" to not add an underscore by default, and just add
it manually to variables and A_ as a prefix to actions. Now, by default,
classes and method calls don't use the A_ prefix, which means nomsu can
more easily play nice with regular Lua objects.
2018-08-29 14:20:18 -07:00
Bruce Hill
5ee9bcb7fb Upgraded version to 3.5.5.6, corresponding to Object Oriented changes. 2018-08-28 15:34:45 -07:00
Bruce Hill
e44acbf338 Lots of overhaul, supporting a new Object Oriented approach (e.g.
%obj::action 1 2) and syntax.
2018-08-28 15:08:07 -07:00
Bruce Hill
930d522fbc Bunch of miscellaneous changes. Paved the way a little bit for having
different compiler domains.
2018-08-27 13:39:22 -07:00
Bruce Hill
c6a7b0be9e Added compatibility for 2.5.5.5 (file hash changes). 2018-07-30 19:39:32 -07:00
Bruce Hill
ab4ebdf175 Changed autoformatting rules to ensure tests get clumped together with
the thing below them.
2018-07-30 15:06:03 -07:00
Bruce Hill
7c488dd266 Fixed bitwise operators to work on Lua 5.2 and LuaJIT, and added tests.
This is the first case where precompiled code is now platform-dependent.
2018-07-30 14:26:55 -07:00
Bruce Hill
9a948874d0 Removed traceback function so debug library isn't needed. 2018-07-30 14:26:35 -07:00
Bruce Hill
43e8da1780 Simplifying. 2018-07-30 13:54:40 -07:00
Bruce Hill
0d48b5add8 Added parens for correctness and methods for accessing bytes and making
uppercase.
2018-07-30 13:52:40 -07:00
Bruce Hill
ed996ad1b6 Switching compile action to parse action for 3-way comparison. 2018-07-26 12:38:17 -07:00
Bruce Hill
a69555bc03 Updated version numbers. 2018-07-25 13:49:17 -07:00
Bruce Hill
723eb9e1f1 Added parens around lambdas (% -> %), and removed them from 'result %'
correspondingly.
2018-07-24 13:39:04 -07:00
Bruce Hill
470a6fe7f9 Fixed blocks starting with extra newline when they start with a comment. 2018-07-23 14:41:30 -07:00
Bruce Hill
4c1f0aca7a Moving all the rest of the tests over to inline versions. 2018-07-22 16:30:49 -07:00
Bruce Hill
04d7edefa3 Adding more inline tests. 2018-07-22 16:13:33 -07:00
Bruce Hill
addac10a47 Re-autoformatted everything. The main changes are: no longer adding a
newline after 1-line indented code inside blocks, and forcing files to
have a trailing newline. The trailing newline thing created a lot of
spurious changes.
2018-07-22 15:01:05 -07:00
Bruce Hill
dfd39f0b14 Shifting further towards having inline tests. Also added a helper
function for directly extracting source lines from a Source or AST.
2018-07-22 13:59:08 -07:00
Bruce Hill
ae4670bd8e Improvements working towards better inline tests. Improved handling of
file spoofing and adding -e command line flag for executing a string.
2018-07-21 14:44:26 -07:00
Bruce Hill
6728587dfc Auto-formatted and auto-upgraded everything! 2018-07-20 20:27:27 -07:00
Bruce Hill
24b8649c33 Tweaks to the API for text matching. 2018-07-20 17:56:15 -07:00
Bruce Hill
bf67a61013 Updating to version 2.4.4.3, with new syntax for multi-statement 'if'
and switch statements.
2018-07-18 17:56:15 -07:00
Bruce Hill
d5cfaa37be Upgrading to version 2.3 (main change: "=" instead of "<-" for
assignment)
2018-07-18 01:28:17 -07:00
Bruce Hill
c7c657d38f Prep work for next big upgrade, including adding a shorthand for
upgrading actions similarly to 'parse % as %'
2018-07-18 01:04:57 -07:00
Bruce Hill
ba639f2bd0 Upgraded core code to latest Nomsu verison. 2018-07-17 23:08:24 -07:00
Bruce Hill
0442c8dd21 Overhaul of comment handling, plus a few fixes (e.g. a fix for indented
text that begins with a nomsu comment)
2018-07-17 14:12:51 -07:00
Bruce Hill
be06fc096a Major changes to how versioning and parsing work. This should be a
better path going forward to handling upgrades. Old syntax files will
stick around for compatibility purposes. Old syntax can be parsed into
valid syntax trees via the old syntax (.peg) files, and then old syntax
trees should be valid and can be upgraded via the normal code path. This
change has lots of improvements to Nomsu codegen too.
2018-07-15 19:43:28 -07:00
Bruce Hill
c9ff0ff04b Fixed up some edge cases with parsing and comments. 2018-07-14 14:53:03 -07:00
Bruce Hill
01a4f36398 Minor changes. 2018-07-13 14:30:39 -07:00
Bruce Hill
295a25a3ed Fixed accidental change. 2018-07-12 21:43:12 -07:00
Bruce Hill
af62e3e8bf All tests passing. 2018-07-12 21:24:13 -07:00
Bruce Hill
ba2b83d566 Fixed nomsu codegen for indented text and improved text parsing. Also
moved some more tests inline.
2018-07-11 14:14:16 -07:00
Bruce Hill
3fd5687370 Fixed up line numbers for generated code. 2018-07-10 17:10:59 -07:00
Bruce Hill
fa72d7eeb1 Fixing up error reporting and ripping out LDT-specific code (now a
debugger can
be provided by a command line flag)
2018-07-10 15:00:35 -07:00
Bruce Hill
85ef9534e3 Added pattern matching for text, and comprehension versions of that and
file walking.
2018-07-09 17:14:05 -07:00
Bruce Hill
09d6bad6ac Minor fixes. 2018-06-27 10:23:02 -07:00
Bruce Hill
65dc1f2196 Cleaning up metaprogramming a bit and fixing/adding test for recursion
control flow.
2018-06-26 15:53:00 -07:00
Bruce Hill
ad342b63b7 Simplifications/streamlining the Make process, and cleaning up some of
how command line interaction and `use %` work.
2018-06-24 16:11:40 -07:00
Bruce Hill
9f08215dfb Moved console colors from core/ into lib/ 2018-06-23 18:04:23 -07:00
Bruce Hill
247e55059c Fixed incorrect version ordering (was: Syntax.Compiler.Core.Lib, but
should be: Syntax.Core.Compiler.Lib)
2018-06-23 17:29:25 -07:00
Bruce Hill
dbf3de3d8e Added versioning system. 2018-06-23 00:57:39 -07:00
Bruce Hill
86a3219e7f Cleanup of some metaprogramming stuff, as well as adding support for
"package.nomsupath" to search for files in different locations, and
prioritizing use of "luafilesystem" over system calls.
2018-06-21 19:13:47 -07:00
Bruce Hill
d73cbf0aa5 Cleanups. 2018-06-20 15:22:06 -07:00
Bruce Hill
7f98262dfa Minor cleanups 2018-06-18 18:39:25 -07:00
Bruce Hill
f83cc3ad8a More streamlining and cleanup. 2018-06-18 18:11:09 -07:00
Bruce Hill
16d127abb5 Initial working version. 2018-06-18 15:44:35 -07:00
Bruce Hill
5629b81f78 Updating tests. 2018-06-15 00:40:40 -07:00
Bruce Hill
b12744d831 Some cleanup and fixes. Simplifying a lot of code, and extending the
flexibility of scoping. Redesigned Object system too.
2018-06-14 23:25:34 -07:00
Bruce Hill
49f1eb3d08 Reshuffling some files. 2018-06-14 22:17:37 -07:00
Bruce Hill
82cfd3e54b More streamlining and cleanup. Especially for core/metaprogramming.nom 2018-06-14 21:59:43 -07:00
Bruce Hill
968b5da150 Fixed some bugs. 2018-06-12 20:15:56 -07:00
Bruce Hill
63a19db0dc Working version. 2018-06-12 20:06:37 -07:00
Bruce Hill
3c510e4ee5 Lots of optimizations and simplifications, especially towards getting
better performance on luajit.
2018-06-12 18:04:41 -07:00
Bruce Hill
b5fb8933af Removed dependency on 'immutable' library. This lets LuaJIT do more
aggressive optimizations and generally helps performance. Some safety is
lost, but I think the performance gains, reduced complexity, and reduced
dependencies are worth it.
2018-06-12 15:14:07 -07:00
Bruce Hill
0c9973ff03 Tidying up exceptions and error reporting. Also simplified the grammar a
tiny bit.
2018-06-12 13:56:35 -07:00
Bruce Hill
7cd512d15e Added alias: "% as number" 2018-06-06 14:19:54 -07:00
Bruce Hill
810ae220bc Added list/dict metatables to make comparison and string representations
simpler. Also deleted Counters.
2018-06-06 13:25:34 -07:00
Bruce Hill
83183122f1 Optimizations and cleanup. Build script now fails on first error and
uses the precompiled versions it has just compiled.
2018-06-04 20:44:58 -07:00
Bruce Hill
563e415e07 Switched from Node(Tuple(values...), source) to Node(source, values...),
thanks to support from immutable-tables for mixed tables.
2018-06-04 17:57:07 -07:00
Bruce Hill
e7bdc35aa8 Cleanups to try/catch logic and object logic. 2018-06-04 17:23:13 -07:00
Bruce Hill
b53516c47c Simplified and correctified lib/object (though the codegen still need
streamlining), added a .stub member to Action trees, and switched
Source's repr to be @filename[start:stop] instead of
"filename[start:stop]"
2018-05-30 17:21:19 -07:00
Bruce Hill
5637676bc4 Dead code cleanup 2018-05-30 14:29:15 -07:00
Bruce Hill
b3df63eb10 Added 'for (%k,%v) in ...' alias for 'for %k = %v in ...' 2018-05-30 14:08:30 -07:00
Bruce Hill
f9229c5e91 Better parse error reporting. 2018-05-30 13:07:15 -07:00
Bruce Hill
3573dfe995 Almost-working reimplementation of source code mapping. 2018-05-29 16:15:10 -07:00
Bruce Hill
2e15c0fd50 Some tweaks/cleanup on the nomsu code as well as adding variable
mangling to 'parse % as %' to make almost hygienic macros.
2018-05-27 18:29:23 -07:00
Bruce Hill
8cb2788e0d Re-added sources. 2018-05-26 15:04:38 -07:00
Bruce Hill
64294f5cd6 Removed the Word tree type and replaced it with raw strings, since
they're only used as part of Actions
2018-05-24 21:17:15 -07:00
Bruce Hill
446892d11e Consolidating code obj code and expunging all [[..]]-style lua strings. 2018-05-24 16:13:46 -07:00
Bruce Hill
2e345e271f Misc changes, fixed up Object lib and tests. 2018-05-24 14:57:35 -07:00
Bruce Hill
ad94ed3653 Moved all the tree->lua and tree->nomsu code back into single functions
in nomsu.moon, and cleaned up how Vars are treated, since they are not
atomic.
2018-05-16 19:08:59 -07:00
Bruce Hill
6f6c4377b2 Initial working version. 2018-05-16 18:13:02 -07:00
Bruce Hill
af9dc07025 Converted DictEntry to be an actual tree, instead of a pseudo-tree, made 'parse % as %'
generate lua code with already-substituted tree literals instead of reparsing and
substituting at parse time, and made some general optimizations.
2018-05-16 15:45:59 -07:00
Bruce Hill
3ffeaf1f5d Removed "for all"-style iteration and changed "for % from 1 to 10"-style
to "for % in 1 to 10" for consistency.
2018-05-15 20:33:07 -07:00
Bruce Hill
0a95a264e5 Cleaning up comments. 2018-05-15 18:56:00 -07:00
Bruce Hill
01aa199f7a Adding support for coroutines, and cleaning up comment syntax. 2018-05-15 16:36:38 -07:00
Bruce Hill
28cd9ae0b7 More API cleanup, and fixed a bug with optimized lua files generating
spurious circular import errors.
2018-05-15 15:22:03 -07:00
Bruce Hill
ae979c3718 Minor cleanups changes. 2018-05-15 14:53:42 -07:00
Bruce Hill
95ee15982b Switched to use inline nomsu generation for Nomsu tree lua
compilation and removed some dead code around Nomsu.debug
2018-05-11 13:54:24 -07:00
Bruce Hill
113782ebd1 Added scopes to core. 2018-05-10 22:51:14 -07:00
Bruce Hill
4126589afe Cleanup: removed "File" type trees (now just Block), overhauled
how_do_i.nom, added "result of %" macro, which allowed comprehensions to
be way more concisely defined. Moved len() operator into the nomsu
environment.
2018-05-10 22:47:18 -07:00
Bruce Hill
602aacf8d8 Renamed "export" to "external" 2018-05-09 20:35:40 -07:00
Bruce Hill
1a755ddee8 Added tentative support for luajit (depends on pure-lua LPEG
implementation).
2018-05-09 13:35:04 -07:00
Bruce Hill
126f51f955 Removing varargs from free var functions. 2018-05-04 13:49:20 -07:00
Bruce Hill
bf60ac28c5 Overhaul with smaller, more concise codebase around defining
actions/macros, and deleting some dead code.
2018-05-03 21:56:31 -07:00
Bruce Hill
36ead4d82b Cleanup of unnecessary parens in generated lua code for math operations. 2018-05-03 16:38:06 -07:00
Bruce Hill
85c5511fa5 Fixed compile_lib and cleaned up control_flow 2018-04-28 19:38:03 -07:00
Bruce Hill
b54829de36 Better text interpolation/handling of "\". Also added syntax support for
(statement; statement)
2018-04-27 16:45:35 -07:00