1
0
Fork 0
mirror of https://github.com/Reuh/anselme.git synced 2025-10-28 17:19:31 +00:00
Commit graph

60 commits

Author SHA1 Message Date
809613ef8b LuaJIT compatibility
Spoiler alert: Anselme run ~1.5x slower in LuaJIT than Lua 5.3/5.4. I didn't expected LuaJIT to be able to optimize anything with my super performant and cache friendly AST walker interpreter, but being this much slower is kinda impressive.
2023-12-28 17:37:57 +01:00
fe351b5ca4 Anselme v2.0.0-alpha rewrite
Woke up and felt like changing a couple things. It's actually been worked on for a while, little at a time...

The goal was to make the language and implementation much simpler. Well I don't know if it really ended up being simpler but it sure is more robust.

Main changes:
* proper first class functions and closures supports! proper scoping rules! no more namespace shenanigans!
* everything is an expression, no more statements! make the implementation both simpler and more complex, but it's much more consistent now! the syntax has massively changed as a result though.
* much more organized and easy to modify codebase: one file for each AST node, no more random fields or behavior set by some random node exceptionally, everything should now follow the same API defined in ast.abstract.Node

Every foundational feature should be implemented right now. The vast majority of things that were possible in v2 are possible now; some things aren't, but that's usually because v2 is a bit more sane.
The main missing things before a proper release are tests and documentation. There's a few other things that might be implemented later, see the ideas.md file.
2023-12-22 13:25:28 +01:00
2ff494d108 Clean implementation of 👁️ and no longer increment 🏁 on checkpoint execution (redundant with 👁️) 2023-03-02 15:49:15 +09:00
f37fbb7594 Bump version 2022-09-28 18:44:06 +09:00
5e441886c0 Add anonymous functions 2022-09-28 14:56:31 +09:00
2c6d66c222 Variable must now be explicitly marked as persistent 2022-09-27 19:27:23 +09:00
e9606cdee0 Add text buffer syntax 2022-09-27 17:05:06 +09:00
e017a391ec Separate function and class injections 2022-09-16 21:55:06 +09:00
fe897688d6 Bump version 2022-09-16 16:40:13 +09:00
d1f49d1894 Preprend every definition line type with a colon, remove function decorator, add immediately ran definition line 2022-09-14 15:28:58 +09:00
7b756ad092 Update README, bump version 2022-09-13 19:34:34 +09:00
95683a0ffd Add constants 2022-09-08 22:09:11 +09:00
3e658e4780 Add variable constraints, rename type annotation checks to constraints, rename custom type to annotation 2022-09-08 21:28:27 +09:00
47f95fc04a Add object type, dot operator can return function references 2022-06-09 17:07:58 +09:00
69b9e17020 Updated documentation; added Lua API documentation 2022-01-20 01:49:52 +01:00
933e8fb0ee Add "function return" and "scoped function return" injections, allow children for return lines 2022-01-16 15:32:59 +01:00
eb3a1d3f2c Fix functions defined in code injection conflict due to reference reuse 2022-01-16 02:33:53 +01:00
311ff83d59 Change config.ans variables for games (add global directory, start expression, remove start script) 2022-01-16 00:18:20 +01:00
428042c5d9 Add scoped function injections 2022-01-16 00:17:23 +01:00
6a5595ca04 Define injections from a game config.ans 2022-01-15 02:48:53 +01:00
fdcea38e5e Update documentation 2022-01-14 23:43:20 +01:00
dfe838a769 Add custom code inject at function/checkpoint start/end 2022-01-14 23:27:21 +01:00
4214fafc68 Fix default tags 2022-01-14 21:31:56 +01:00
a952f971cd Unneeded since vm:eval now merge state on success 2021-12-23 18:26:40 +01:00
ec8a928272 Update doc 2021-12-12 15:52:23 +01:00
bb45cc8fdd Fix scoping with mutable variables 2021-12-12 15:38:27 +01:00
fef498b3d7 Add scoped functions 2021-12-11 01:05:01 +01:00
3d32f35d67 Omit function variables from merge 2021-12-10 21:25:05 +01:00
40c1616cce Rewrite next, random using references 2021-12-09 17:23:54 +01:00
acb8945dec Add variable reference and use them in alias(ref, id) 2021-12-09 14:34:21 +01:00
037654ebcf Bump version, update doc 2021-12-06 18:48:32 +01:00
04c6683de8 Proper checkpointing of mutable values 2021-12-06 18:34:58 +01:00
6e5cbf9e7e Add function references 2021-12-04 18:20:32 +01:00
0f89307d5f Cache read values in local state, handle mutable variables properly 2021-12-02 23:57:25 +01:00
607313d5ce Merge state on vm:eval, new aliases need to be merged 2021-12-02 19:24:48 +01:00
721464218c Add eventbuffer type 2021-12-02 18:39:43 +01:00
f2e74c94c9 Changed a few things
* Integrated # and ~ decorators into the expression system. Created associated operators.
* # and ~ decorators only affect their current line. That's more useful...
* Fix our priority system to evaluate left-to-right instead of right-to-left (if there was a reason why I did it this way initially, I don't remember it so ¯\_(ツ)_/¯)
* a lotta internal changes

Various other small adjustments, see the diff of REFERENCE.md for details.
2021-11-28 01:43:54 +01:00
b9b59547ff More configurable handling of whitespace before decorators 2021-11-27 14:29:29 +01:00
7105b445ef Handle events in text interpolation; capture text events in choice lines; improve test script 2021-11-26 21:26:41 +01:00
633f7b2d61 Prevent from restarting interpreter after return or error 2021-06-05 22:38:02 +02:00
0e755ea841 Add anselme version check in game config, rename version to "game version" 2021-06-05 17:26:15 +02:00
d42c35facd Change versioning to separate language/API/save; allow executing blocks directly; add version to game config 2021-06-05 17:19:42 +02:00
9388a22a0f Move default variables alias from game config to language file 2021-06-05 14:01:54 +02:00
61e3143e9e Add alias() to define alias after definition; add frFR language file 2021-06-05 01:30:40 +02:00
64bc85741a Changed a few things
- Bumped to 0.15.0
- Add boot script
- Change variable definition syntax, using a = to distinguish more cleary between identifier and value
- Variables initial values are evaluated on first use instead of at parsing time
- Error on variable redefinition. Means you should make sure to load saves after your scripts.
- Improve string parsing, support for escape codes
- Remove support for number literals with empty decimal part (42. for 42.0) as there's no distinction in Anselme and it conflicts with .function call suffix
- Changed priority of : pair operator
- Add type type, and type annotations to variables and function parameters
- Change Lua function system to use regular Anselme functions
  - Defining a function from Lua is now way simpler and require providing a full Anselme function signature
- Change Anselme function system
  - Dynamic dispatch, based on arity, type annotation and parameter names. Will select the most specific function at runtime.
  - Define way to overload most operators
  - Allow custom type to text formatters
  - Allow assignment to custom functions
  - Index operator ( renamed to ()
  - Functions with parameters each have their own private namespace (scoping ersatz)
  - Internal: "custom"-mode operators now have their own expression AST type instead of cluttering the function system
- Remove static type checker as it is barely useful with new function system. May or may not rewrite one in the future.
- Improve error messages here and there
- Internal: cleaning
2021-06-03 15:29:25 +02:00
151c70ed26 Add default and named arguments, rename equality operator to ==, shortcut for string pairs 2021-04-25 18:40:45 +02:00
17751c5c59 Rename checkpoint variable, add reached variable for checkpoints 2021-04-23 17:39:51 +02:00
6f564ea0e2 Improve naming consistency
expression/conditions -> conditions
paragraphs/checkpoints -> checkpoints
merge/flush/commit -> merge
2021-04-23 02:27:06 +02:00
b7f38a16fd Commit on script end 2021-04-14 00:48:07 +02:00
5c3e9d2c5d Preserve tags in choices children 2021-04-12 01:58:10 +02:00