From 5dd971ff8f85b295887e0e0900f25905b36caad3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20Reuh=20Fildadut?= Date: Fri, 29 Dec 2023 18:41:06 +0100 Subject: [PATCH] Move anselme code into its own directory --- {ast => anselme/ast}/Anchor.lua | 4 +- {ast => anselme/ast}/ArgumentTuple.lua | 4 +- {ast => anselme/ast}/Assignment.lua | 4 +- {ast => anselme/ast}/Block.lua | 4 +- {ast => anselme/ast}/Boolean.lua | 2 +- {ast => anselme/ast}/Branched.lua | 2 +- {ast => anselme/ast}/Call.lua | 6 +- {ast => anselme/ast}/Choice.lua | 4 +- {ast => anselme/ast}/Closure.lua | 2 +- {ast => anselme/ast}/Definition.lua | 4 +- {ast => anselme/ast}/Environment.lua | 4 +- {ast => anselme/ast}/Flush.lua | 4 +- {ast => anselme/ast}/Function.lua | 4 +- {ast => anselme/ast}/FunctionParameter.lua | 4 +- {ast => anselme/ast}/Identifier.lua | 2 +- {ast => anselme/ast}/List.lua | 4 +- {ast => anselme/ast}/LuaFunction.lua | 7 ++- {ast => anselme/ast}/Nil.lua | 2 +- {ast => anselme/ast}/Number.lua | 2 +- {ast => anselme/ast}/Overload.lua | 2 +- {ast => anselme/ast}/Pair.lua | 4 +- {ast => anselme/ast}/ParameterTuple.lua | 4 +- {ast => anselme/ast}/PartialScope.lua | 7 ++- {ast => anselme/ast}/Quote.lua | 2 +- {ast => anselme/ast}/Return.lua | 4 +- {ast => anselme/ast}/ReturnBoundary.lua | 2 +- {ast => anselme/ast}/String.lua | 2 +- {ast => anselme/ast}/StringInterpolation.lua | 2 +- {ast => anselme/ast}/Struct.lua | 4 +- {ast => anselme/ast}/Symbol.lua | 4 +- {ast => anselme/ast}/Table.lua | 4 +- {ast => anselme/ast}/Text.lua | 2 +- {ast => anselme/ast}/TextInterpolation.lua | 4 +- {ast => anselme/ast}/Translatable.lua | 6 +- {ast => anselme/ast}/Tuple.lua | 4 +- {ast => anselme/ast}/Typed.lua | 4 +- {ast => anselme/ast}/abstract/AutoCall.lua | 2 +- {ast => anselme/ast}/abstract/Event.lua | 2 +- {ast => anselme/ast}/abstract/Node.lua | 14 ++--- .../ast}/abstract/Overloadable.lua | 2 +- {ast => anselme/ast}/abstract/Runtime.lua | 2 +- {ast => anselme/ast}/init.lua | 4 +- {common => anselme/common}/init.lua | 2 +- {common => anselme/common}/to_anselme.lua | 2 +- anselme.lua => anselme/init.lua | 20 +++---- {lib => anselme/lib}/ansicolors.lua | 0 {lib => anselme/lib}/binser.lua | 0 class.lua => anselme/lib/class.lua | 4 +- {parser => anselme/parser}/Source.lua | 2 +- {parser => anselme/parser}/code_to_tree.lua | 2 +- .../parser}/expression/comment.lua | 2 +- .../contextual/function_parameter.lua | 10 ++-- .../function_parameter_no_default.lua | 2 +- .../expression/contextual/parameter_tuple.lua | 8 +-- .../parser}/expression/primary/anchor.lua | 6 +- .../expression/primary/block_identifier.lua | 4 +- .../primary/function_definition.lua | 18 +++--- .../parser}/expression/primary/identifier.lua | 8 +-- .../parser}/expression/primary/init.lua | 2 +- .../parser}/expression/primary/number.lua | 4 +- .../expression/primary/parenthesis.lua | 6 +- .../parser/expression/primary/prefix/else.lua | 8 +++ .../expression/primary/prefix/function.lua | 12 ++-- .../expression/primary/prefix/mutable.lua | 9 +++ .../expression/primary/prefix/negation.lua | 9 +++ .../parser/expression/primary/prefix/not.lua | 9 +++ .../expression/primary/prefix/prefix.lua | 8 +-- .../primary/prefix/prefix_maybe_nil_right.lua | 8 +-- .../primary/prefix/prefix_quote_right.lua | 4 +- .../expression/primary/prefix/return.lua | 15 +++++ .../expression/primary/prefix/semicolon.lua | 4 +- .../primary/prefix/translatable.lua | 6 +- .../parser}/expression/primary/primary.lua | 2 +- .../parser}/expression/primary/string.lua | 8 +-- .../parser}/expression/primary/struct.lua | 6 +- .../parser}/expression/primary/symbol.lua | 8 +-- .../parser}/expression/primary/text.lua | 4 +- .../parser}/expression/primary/tuple.lua | 8 +-- .../expression/secondary/infix/addition.lua | 9 +++ .../parser/expression/secondary/infix/and.lua | 9 +++ .../expression/secondary/infix/assignment.lua | 8 +-- .../secondary/infix/assignment_call.lua | 8 +-- .../secondary/infix/assignment_with_infix.lua | 10 ++-- .../expression/secondary/infix/call.lua | 10 ++-- .../expression/secondary/infix/choice.lua | 6 +- .../expression/secondary/infix/definition.lua | 8 +-- .../expression/secondary/infix/different.lua | 9 +++ .../expression/secondary/infix/division.lua | 9 +++ .../expression/secondary/infix/equal.lua | 9 +++ .../expression/secondary/infix/exponent.lua | 9 +++ .../expression/secondary/infix/greater.lua | 9 +++ .../secondary/infix/greater_equal.lua | 9 +++ .../parser/expression/secondary/infix/if.lua | 9 +++ .../infix/implicit_multiplication.lua | 8 +-- .../expression/secondary/infix/index.lua | 6 +- .../expression/secondary/infix/infix.lua | 8 +-- .../secondary/infix/infix_or_suffix.lua | 6 +- .../secondary/infix/infix_quote_both.lua | 4 +- .../secondary/infix/infix_quote_right.lua | 4 +- .../secondary/infix/integer_division.lua | 9 +++ .../expression/secondary/infix/lower.lua | 9 +++ .../secondary/infix/lower_equal.lua | 9 +++ .../expression/secondary/infix/modulo.lua | 9 +++ .../secondary/infix/multiplication.lua | 9 +++ .../parser/expression/secondary/infix/or.lua | 9 +++ .../expression/secondary/infix/pair.lua | 9 +++ .../expression/secondary/infix/resume.lua | 9 +++ .../expression/secondary/infix/semicolon.lua | 9 +++ .../secondary/infix/substraction.lua | 9 +++ .../parser/expression/secondary/infix/tag.lua | 9 +++ .../expression/secondary/infix/translate.lua | 9 +++ .../expression/secondary/infix/tuple.lua | 10 ++-- .../expression/secondary/infix/type_check.lua | 9 +++ .../expression/secondary/infix/while.lua | 9 +++ .../parser}/expression/secondary/init.lua | 2 +- .../expression/secondary/secondary.lua | 2 +- .../expression/secondary/suffix/call.lua | 8 +-- .../secondary/suffix/exclamation_call.lua | 6 +- .../expression/secondary/suffix/semicolon.lua | 9 +++ .../expression/secondary/suffix/suffix.lua | 6 +- .../parser}/expression/to_ast.lua | 6 +- {parser => anselme/parser}/init.lua | 4 +- {parser => anselme/parser}/tree_to_ast.lua | 4 +- {state => anselme/state}/ScopeStack.lua | 15 ++--- {state => anselme/state}/State.lua | 20 +++---- {state => anselme/state}/event_manager.lua | 4 +- .../state}/persistent_manager.lua | 4 +- {state => anselme/state}/resume_manager.lua | 4 +- {state => anselme/state}/tag_manager.lua | 4 +- .../state}/translation_manager.lua | 4 +- {stdlib => anselme/stdlib}/base.lua | 2 +- {stdlib => anselme/stdlib}/boolean.lua | 2 +- .../stdlib/boot_script.lua | 2 + {stdlib => anselme/stdlib}/checkpoint.lua | 4 +- {stdlib => anselme/stdlib}/closure.lua | 2 +- {stdlib => anselme/stdlib}/conditionals.lua | 2 +- {stdlib => anselme/stdlib}/init.lua | 8 +-- {stdlib => anselme/stdlib}/number.lua | 2 +- {stdlib => anselme/stdlib}/persist.lua | 4 +- {stdlib => anselme/stdlib}/string.lua | 2 +- {stdlib => anselme/stdlib}/structures.lua | 2 +- {stdlib => anselme/stdlib}/tag.lua | 4 +- {stdlib => anselme/stdlib}/text.lua | 8 +-- {stdlib => anselme/stdlib}/type_check.lua | 2 +- doc/api.md | 57 +++++++++++-------- doc/api.md.template | 4 +- doc/gendocs.lua | 2 +- parser/expression/primary/prefix/else.lua | 8 --- parser/expression/primary/prefix/mutable.lua | 9 --- parser/expression/primary/prefix/negation.lua | 9 --- parser/expression/primary/prefix/not.lua | 9 --- parser/expression/primary/prefix/return.lua | 15 ----- .../expression/secondary/infix/addition.lua | 9 --- parser/expression/secondary/infix/and.lua | 9 --- .../expression/secondary/infix/different.lua | 9 --- .../expression/secondary/infix/division.lua | 9 --- parser/expression/secondary/infix/equal.lua | 9 --- .../expression/secondary/infix/exponent.lua | 9 --- parser/expression/secondary/infix/greater.lua | 9 --- .../secondary/infix/greater_equal.lua | 9 --- parser/expression/secondary/infix/if.lua | 9 --- .../secondary/infix/integer_division.lua | 9 --- parser/expression/secondary/infix/lower.lua | 9 --- .../secondary/infix/lower_equal.lua | 9 --- parser/expression/secondary/infix/modulo.lua | 9 --- .../secondary/infix/multiplication.lua | 9 --- parser/expression/secondary/infix/or.lua | 9 --- parser/expression/secondary/infix/pair.lua | 9 --- parser/expression/secondary/infix/resume.lua | 9 --- .../expression/secondary/infix/semicolon.lua | 9 --- .../secondary/infix/substraction.lua | 9 --- parser/expression/secondary/infix/tag.lua | 9 --- .../expression/secondary/infix/translate.lua | 9 --- .../expression/secondary/infix/type_check.lua | 9 --- parser/expression/secondary/infix/while.lua | 9 --- .../expression/secondary/suffix/semicolon.lua | 9 --- readme.md | 13 +++++ run tests.sh => run_tests.sh | 0 test/run.lua | 3 +- 179 files changed, 603 insertions(+), 579 deletions(-) rename {ast => anselme/ast}/Anchor.lua (85%) rename {ast => anselme/ast}/ArgumentTuple.lua (98%) rename {ast => anselme/ast}/Assignment.lua (86%) rename {ast => anselme/ast}/Block.lua (94%) rename {ast => anselme/ast}/Boolean.lua (92%) rename {ast => anselme/ast}/Branched.lua (97%) rename {ast => anselme/ast}/Call.lua (93%) rename {ast => anselme/ast}/Choice.lua (91%) rename {ast => anselme/ast}/Closure.lua (97%) rename {ast => anselme/ast}/Definition.lua (92%) rename {ast => anselme/ast}/Environment.lua (98%) rename {ast => anselme/ast}/Flush.lua (77%) rename {ast => anselme/ast}/Function.lua (95%) rename {ast => anselme/ast}/FunctionParameter.lua (92%) rename {ast => anselme/ast}/Identifier.lua (95%) rename {ast => anselme/ast}/List.lua (95%) rename {ast => anselme/ast}/LuaFunction.lua (88%) rename {ast => anselme/ast}/Nil.lua (89%) rename {ast => anselme/ast}/Number.lua (91%) rename {ast => anselme/ast}/Overload.lua (98%) rename {ast => anselme/ast}/Pair.lua (79%) rename {ast => anselme/ast}/ParameterTuple.lua (93%) rename {ast => anselme/ast}/PartialScope.lua (94%) rename {ast => anselme/ast}/Quote.lua (97%) rename {ast => anselme/ast}/Return.lua (83%) rename {ast => anselme/ast}/ReturnBoundary.lua (95%) rename {ast => anselme/ast}/String.lua (93%) rename {ast => anselme/ast}/StringInterpolation.lua (96%) rename {ast => anselme/ast}/Struct.lua (96%) rename {ast => anselme/ast}/Symbol.lua (94%) rename {ast => anselme/ast}/Table.lua (95%) rename {ast => anselme/ast}/Text.lua (95%) rename {ast => anselme/ast}/TextInterpolation.lua (92%) rename {ast => anselme/ast}/Translatable.lua (86%) rename {ast => anselme/ast}/Tuple.lua (92%) rename {ast => anselme/ast}/Typed.lua (90%) rename {ast => anselme/ast}/abstract/AutoCall.lua (80%) rename {ast => anselme/ast}/abstract/Event.lua (94%) rename {ast => anselme/ast}/abstract/Node.lua (97%) rename {ast => anselme/ast}/abstract/Overloadable.lua (95%) rename {ast => anselme/ast}/abstract/Runtime.lua (90%) rename {ast => anselme/ast}/init.lua (64%) rename {common => anselme/common}/init.lua (97%) rename {common => anselme/common}/to_anselme.lua (94%) rename anselme.lua => anselme/init.lua (74%) rename {lib => anselme/lib}/ansicolors.lua (100%) rename {lib => anselme/lib}/binser.lua (100%) rename class.lua => anselme/lib/class.lua (96%) rename {parser => anselme/parser}/Source.lua (95%) rename {parser => anselme/parser}/code_to_tree.lua (97%) rename {parser => anselme/parser}/expression/comment.lua (96%) rename {parser => anselme/parser}/expression/contextual/function_parameter.lua (75%) rename {parser => anselme/parser}/expression/contextual/function_parameter_no_default.lua (62%) rename {parser => anselme/parser}/expression/contextual/parameter_tuple.lua (80%) rename {parser => anselme/parser}/expression/primary/anchor.lua (70%) rename {parser => anselme/parser}/expression/primary/block_identifier.lua (78%) rename {parser => anselme/parser}/expression/primary/function_definition.lua (91%) rename {parser => anselme/parser}/expression/primary/identifier.lua (84%) rename {parser => anselme/parser}/expression/primary/init.lua (92%) rename {parser => anselme/parser}/expression/primary/number.lua (77%) rename {parser => anselme/parser}/expression/primary/parenthesis.lua (79%) create mode 100644 anselme/parser/expression/primary/prefix/else.lua rename {parser => anselme/parser}/expression/primary/prefix/function.lua (68%) create mode 100644 anselme/parser/expression/primary/prefix/mutable.lua create mode 100644 anselme/parser/expression/primary/prefix/negation.lua create mode 100644 anselme/parser/expression/primary/prefix/not.lua rename {parser => anselme/parser}/expression/primary/prefix/prefix.lua (80%) rename {parser => anselme/parser}/expression/primary/prefix/prefix_maybe_nil_right.lua (68%) rename {parser => anselme/parser}/expression/primary/prefix/prefix_quote_right.lua (70%) create mode 100644 anselme/parser/expression/primary/prefix/return.lua rename {parser => anselme/parser}/expression/primary/prefix/semicolon.lua (51%) rename {parser => anselme/parser}/expression/primary/prefix/translatable.lua (53%) rename {parser => anselme/parser}/expression/primary/primary.lua (94%) rename {parser => anselme/parser}/expression/primary/string.lua (92%) rename {parser => anselme/parser}/expression/primary/struct.lua (59%) rename {parser => anselme/parser}/expression/primary/symbol.lua (78%) rename {parser => anselme/parser}/expression/primary/text.lua (85%) rename {parser => anselme/parser}/expression/primary/tuple.lua (80%) create mode 100644 anselme/parser/expression/secondary/infix/addition.lua create mode 100644 anselme/parser/expression/secondary/infix/and.lua rename {parser => anselme/parser}/expression/secondary/infix/assignment.lua (66%) rename {parser => anselme/parser}/expression/secondary/infix/assignment_call.lua (67%) rename {parser => anselme/parser}/expression/secondary/infix/assignment_with_infix.lua (75%) rename {parser => anselme/parser}/expression/secondary/infix/call.lua (66%) rename {parser => anselme/parser}/expression/secondary/infix/choice.lua (70%) rename {parser => anselme/parser}/expression/secondary/infix/definition.lua (65%) create mode 100644 anselme/parser/expression/secondary/infix/different.lua create mode 100644 anselme/parser/expression/secondary/infix/division.lua create mode 100644 anselme/parser/expression/secondary/infix/equal.lua create mode 100644 anselme/parser/expression/secondary/infix/exponent.lua create mode 100644 anselme/parser/expression/secondary/infix/greater.lua create mode 100644 anselme/parser/expression/secondary/infix/greater_equal.lua create mode 100644 anselme/parser/expression/secondary/infix/if.lua rename {parser => anselme/parser}/expression/secondary/infix/implicit_multiplication.lua (72%) rename {parser => anselme/parser}/expression/secondary/infix/index.lua (67%) rename {parser => anselme/parser}/expression/secondary/infix/infix.lua (81%) rename {parser => anselme/parser}/expression/secondary/infix/infix_or_suffix.lua (84%) rename {parser => anselme/parser}/expression/secondary/infix/infix_quote_both.lua (73%) rename {parser => anselme/parser}/expression/secondary/infix/infix_quote_right.lua (71%) create mode 100644 anselme/parser/expression/secondary/infix/integer_division.lua create mode 100644 anselme/parser/expression/secondary/infix/lower.lua create mode 100644 anselme/parser/expression/secondary/infix/lower_equal.lua create mode 100644 anselme/parser/expression/secondary/infix/modulo.lua create mode 100644 anselme/parser/expression/secondary/infix/multiplication.lua create mode 100644 anselme/parser/expression/secondary/infix/or.lua create mode 100644 anselme/parser/expression/secondary/infix/pair.lua create mode 100644 anselme/parser/expression/secondary/infix/resume.lua create mode 100644 anselme/parser/expression/secondary/infix/semicolon.lua create mode 100644 anselme/parser/expression/secondary/infix/substraction.lua create mode 100644 anselme/parser/expression/secondary/infix/tag.lua create mode 100644 anselme/parser/expression/secondary/infix/translate.lua rename {parser => anselme/parser}/expression/secondary/infix/tuple.lua (74%) create mode 100644 anselme/parser/expression/secondary/infix/type_check.lua create mode 100644 anselme/parser/expression/secondary/infix/while.lua rename {parser => anselme/parser}/expression/secondary/init.lua (96%) rename {parser => anselme/parser}/expression/secondary/secondary.lua (96%) rename {parser => anselme/parser}/expression/secondary/suffix/call.lua (78%) rename {parser => anselme/parser}/expression/secondary/suffix/exclamation_call.lua (54%) create mode 100644 anselme/parser/expression/secondary/suffix/semicolon.lua rename {parser => anselme/parser}/expression/secondary/suffix/suffix.lua (83%) rename {parser => anselme/parser}/expression/to_ast.lua (93%) rename {parser => anselme/parser}/init.lua (70%) rename {parser => anselme/parser}/tree_to_ast.lua (92%) rename {state => anselme/state}/ScopeStack.lua (92%) rename {state => anselme/state}/State.lua (94%) rename {state => anselme/state}/event_manager.lua (97%) rename {state => anselme/state}/persistent_manager.lua (94%) rename {state => anselme/state}/resume_manager.lua (95%) rename {state => anselme/state}/tag_manager.lua (90%) rename {state => anselme/state}/translation_manager.lua (97%) rename {stdlib => anselme/stdlib}/base.lua (97%) rename {stdlib => anselme/stdlib}/boolean.lua (95%) rename stdlib/boot.ans => anselme/stdlib/boot_script.lua (80%) rename {stdlib => anselme/stdlib}/checkpoint.lua (80%) rename {stdlib => anselme/stdlib}/closure.lua (97%) rename {stdlib => anselme/stdlib}/conditionals.lua (97%) rename {stdlib => anselme/stdlib}/init.lua (71%) rename {stdlib => anselme/stdlib}/number.lua (98%) rename {stdlib => anselme/stdlib}/persist.lua (83%) rename {stdlib => anselme/stdlib}/string.lua (80%) rename {stdlib => anselme/stdlib}/structures.lua (97%) rename {stdlib => anselme/stdlib}/tag.lua (88%) rename {stdlib => anselme/stdlib}/text.lua (80%) rename {stdlib => anselme/stdlib}/type_check.lua (97%) delete mode 100644 parser/expression/primary/prefix/else.lua delete mode 100644 parser/expression/primary/prefix/mutable.lua delete mode 100644 parser/expression/primary/prefix/negation.lua delete mode 100644 parser/expression/primary/prefix/not.lua delete mode 100644 parser/expression/primary/prefix/return.lua delete mode 100644 parser/expression/secondary/infix/addition.lua delete mode 100644 parser/expression/secondary/infix/and.lua delete mode 100644 parser/expression/secondary/infix/different.lua delete mode 100644 parser/expression/secondary/infix/division.lua delete mode 100644 parser/expression/secondary/infix/equal.lua delete mode 100644 parser/expression/secondary/infix/exponent.lua delete mode 100644 parser/expression/secondary/infix/greater.lua delete mode 100644 parser/expression/secondary/infix/greater_equal.lua delete mode 100644 parser/expression/secondary/infix/if.lua delete mode 100644 parser/expression/secondary/infix/integer_division.lua delete mode 100644 parser/expression/secondary/infix/lower.lua delete mode 100644 parser/expression/secondary/infix/lower_equal.lua delete mode 100644 parser/expression/secondary/infix/modulo.lua delete mode 100644 parser/expression/secondary/infix/multiplication.lua delete mode 100644 parser/expression/secondary/infix/or.lua delete mode 100644 parser/expression/secondary/infix/pair.lua delete mode 100644 parser/expression/secondary/infix/resume.lua delete mode 100644 parser/expression/secondary/infix/semicolon.lua delete mode 100644 parser/expression/secondary/infix/substraction.lua delete mode 100644 parser/expression/secondary/infix/tag.lua delete mode 100644 parser/expression/secondary/infix/translate.lua delete mode 100644 parser/expression/secondary/infix/type_check.lua delete mode 100644 parser/expression/secondary/infix/while.lua delete mode 100644 parser/expression/secondary/suffix/semicolon.lua rename run tests.sh => run_tests.sh (100%) diff --git a/ast/Anchor.lua b/anselme/ast/Anchor.lua similarity index 85% rename from ast/Anchor.lua rename to anselme/ast/Anchor.lua index 72b53b6..08b422f 100644 --- a/ast/Anchor.lua +++ b/anselme/ast/Anchor.lua @@ -1,4 +1,4 @@ -local ast = require("ast") +local ast = require("anselme.ast") local resume_manager @@ -30,6 +30,6 @@ Anchor = ast.abstract.Node { } package.loaded[...] = Anchor -resume_manager = require("state.resume_manager") +resume_manager = require("anselme.state.resume_manager") return Anchor diff --git a/ast/ArgumentTuple.lua b/anselme/ast/ArgumentTuple.lua similarity index 98% rename from ast/ArgumentTuple.lua rename to anselme/ast/ArgumentTuple.lua index eff9dac..42d57bf 100644 --- a/ast/ArgumentTuple.lua +++ b/anselme/ast/ArgumentTuple.lua @@ -1,7 +1,7 @@ -local ast = require("ast") +local ast = require("anselme.ast") local Identifier, Number -local operator_priority = require("common").operator_priority +local operator_priority = require("anselme.common").operator_priority local ArgumentTuple ArgumentTuple = ast.abstract.Node { diff --git a/ast/Assignment.lua b/anselme/ast/Assignment.lua similarity index 86% rename from ast/Assignment.lua rename to anselme/ast/Assignment.lua index 0a6f23b..faeb5bf 100644 --- a/ast/Assignment.lua +++ b/anselme/ast/Assignment.lua @@ -1,7 +1,7 @@ -local ast = require("ast") +local ast = require("anselme.ast") local Nil -local operator_priority = require("common").operator_priority +local operator_priority = require("anselme.common").operator_priority local Assignment = ast.abstract.Node { type = "assignment", diff --git a/ast/Block.lua b/anselme/ast/Block.lua similarity index 94% rename from ast/Block.lua rename to anselme/ast/Block.lua index 670e1d5..6d451e2 100644 --- a/ast/Block.lua +++ b/anselme/ast/Block.lua @@ -1,7 +1,7 @@ -local ast = require("ast") +local ast = require("anselme.ast") local Nil, Return, AutoCall, ArgumentTuple, Flush -local resume_manager = require("state.resume_manager") +local resume_manager = require("anselme.state.resume_manager") local Block = ast.abstract.Node { type = "block", diff --git a/ast/Boolean.lua b/anselme/ast/Boolean.lua similarity index 92% rename from ast/Boolean.lua rename to anselme/ast/Boolean.lua index 25fa100..3e84814 100644 --- a/ast/Boolean.lua +++ b/anselme/ast/Boolean.lua @@ -1,4 +1,4 @@ -local ast = require("ast") +local ast = require("anselme.ast") return ast.abstract.Node { type = "boolean", diff --git a/ast/Branched.lua b/anselme/ast/Branched.lua similarity index 97% rename from ast/Branched.lua rename to anselme/ast/Branched.lua index 5aeb43f..b4d1857 100644 --- a/ast/Branched.lua +++ b/anselme/ast/Branched.lua @@ -2,7 +2,7 @@ -- used to handle mutability. probably the only mutable node you'll ever need! it's literally perfect! -- note: all values here are expected to be already evaluated -local ast = require("ast") +local ast = require("anselme.ast") local Branched = ast.abstract.Runtime { type = "branched", diff --git a/ast/Call.lua b/anselme/ast/Call.lua similarity index 93% rename from ast/Call.lua rename to anselme/ast/Call.lua index 54513a4..8b6f918 100644 --- a/ast/Call.lua +++ b/anselme/ast/Call.lua @@ -1,8 +1,8 @@ -local ast = require("ast") +local ast = require("anselme.ast") local Identifier -local regular_operators = require("common").regular_operators -local operator_priority = require("common").operator_priority +local regular_operators = require("anselme.common").regular_operators +local operator_priority = require("anselme.common").operator_priority local function reverse(t, fmt) for _, v in ipairs(t) do t[fmt:format(v[1])] = v[2] end diff --git a/ast/Choice.lua b/anselme/ast/Choice.lua similarity index 91% rename from ast/Choice.lua rename to anselme/ast/Choice.lua index 5bb8f22..73e6eb1 100644 --- a/ast/Choice.lua +++ b/anselme/ast/Choice.lua @@ -1,7 +1,7 @@ -local ast = require("ast") +local ast = require("anselme.ast") local ArgumentTuple -local operator_priority = require("common").operator_priority +local operator_priority = require("anselme.common").operator_priority local Choice Choice = ast.abstract.Runtime { diff --git a/ast/Closure.lua b/anselme/ast/Closure.lua similarity index 97% rename from ast/Closure.lua rename to anselme/ast/Closure.lua index 05acc68..a0c7e90 100644 --- a/ast/Closure.lua +++ b/anselme/ast/Closure.lua @@ -1,6 +1,6 @@ -- note: functions only appear in non-evaluated nodes! once evaluated, they always become closures -local ast = require("ast") +local ast = require("anselme.ast") local Overloadable, Runtime = ast.abstract.Overloadable, ast.abstract.Runtime local Definition diff --git a/ast/Definition.lua b/anselme/ast/Definition.lua similarity index 92% rename from ast/Definition.lua rename to anselme/ast/Definition.lua index c3de2f6..abd0dc9 100644 --- a/ast/Definition.lua +++ b/anselme/ast/Definition.lua @@ -1,7 +1,7 @@ -local ast = require("ast") +local ast = require("anselme.ast") local Nil, Overloadable -local operator_priority = require("common").operator_priority +local operator_priority = require("anselme.common").operator_priority local Definition = ast.abstract.Node { type = "definition", diff --git a/ast/Environment.lua b/anselme/ast/Environment.lua similarity index 98% rename from ast/Environment.lua rename to anselme/ast/Environment.lua index 3bbe460..cf8b36f 100644 --- a/ast/Environment.lua +++ b/anselme/ast/Environment.lua @@ -1,6 +1,6 @@ -local ast = require("ast") +local ast = require("anselme.ast") -local operator_priority = require("common").operator_priority +local operator_priority = require("anselme.common").operator_priority local Branched, ArgumentTuple, Overload, Overloadable, Table diff --git a/ast/Flush.lua b/anselme/ast/Flush.lua similarity index 77% rename from ast/Flush.lua rename to anselme/ast/Flush.lua index 5fefa04..f8e47b5 100644 --- a/ast/Flush.lua +++ b/anselme/ast/Flush.lua @@ -1,7 +1,7 @@ -local ast = require("ast") +local ast = require("anselme.ast") local Nil -local event_manager = require("state.event_manager") +local event_manager = require("anselme.state.event_manager") local Flush = ast.abstract.Node { type = "flush", diff --git a/ast/Function.lua b/anselme/ast/Function.lua similarity index 95% rename from ast/Function.lua rename to anselme/ast/Function.lua index d6f6b02..6d66bbb 100644 --- a/ast/Function.lua +++ b/anselme/ast/Function.lua @@ -1,10 +1,10 @@ -- note: functions only appear in non-evaluated nodes! once evaluated, they always become closures -local ast = require("ast") +local ast = require("anselme.ast") local Overloadable = ast.abstract.Overloadable local Closure, ReturnBoundary -local operator_priority = require("common").operator_priority +local operator_priority = require("anselme.common").operator_priority local Function Function = Overloadable { diff --git a/ast/FunctionParameter.lua b/anselme/ast/FunctionParameter.lua similarity index 92% rename from ast/FunctionParameter.lua rename to anselme/ast/FunctionParameter.lua index c5244bb..b71977c 100644 --- a/ast/FunctionParameter.lua +++ b/anselme/ast/FunctionParameter.lua @@ -1,5 +1,5 @@ -local ast = require("ast") -local operator_priority = require("common").operator_priority +local ast = require("anselme.ast") +local operator_priority = require("anselme.common").operator_priority local FunctionParameter FunctionParameter = ast.abstract.Node { diff --git a/ast/Identifier.lua b/anselme/ast/Identifier.lua similarity index 95% rename from ast/Identifier.lua rename to anselme/ast/Identifier.lua index 22bd505..5161a0b 100644 --- a/ast/Identifier.lua +++ b/anselme/ast/Identifier.lua @@ -1,4 +1,4 @@ -local ast = require("ast") +local ast = require("anselme.ast") local Symbol, String local Identifier diff --git a/ast/List.lua b/anselme/ast/List.lua similarity index 95% rename from ast/List.lua rename to anselme/ast/List.lua index 00925a4..6c232a0 100644 --- a/ast/List.lua +++ b/anselme/ast/List.lua @@ -1,7 +1,7 @@ -local ast = require("ast") +local ast = require("anselme.ast") local Branched, Tuple -local operator_priority = require("common").operator_priority +local operator_priority = require("anselme.common").operator_priority local List List = ast.abstract.Runtime { diff --git a/ast/LuaFunction.lua b/anselme/ast/LuaFunction.lua similarity index 88% rename from ast/LuaFunction.lua rename to anselme/ast/LuaFunction.lua index 719e26b..870b00f 100644 --- a/ast/LuaFunction.lua +++ b/anselme/ast/LuaFunction.lua @@ -1,7 +1,8 @@ -local ast = require("ast") +local ast = require("anselme.ast") local Overloadable = ast.abstract.Overloadable -local operator_priority = require("common").operator_priority +local operator_priority = require("anselme.common").operator_priority +local unpack = table.unpack or unpack local LuaFunction LuaFunction = ast.abstract.Runtime(Overloadable) { @@ -46,7 +47,7 @@ LuaFunction = ast.abstract.Runtime(Overloadable) { state.scope:pop() - local r = self.func(table.unpack(lua_args)) + local r = self.func(unpack(lua_args)) assert(r, "lua function returned no value") return r end, diff --git a/ast/Nil.lua b/anselme/ast/Nil.lua similarity index 89% rename from ast/Nil.lua rename to anselme/ast/Nil.lua index ef447d2..984c8e3 100644 --- a/ast/Nil.lua +++ b/anselme/ast/Nil.lua @@ -1,4 +1,4 @@ -local ast = require("ast") +local ast = require("anselme.ast") return ast.abstract.Node { type = "nil", diff --git a/ast/Number.lua b/anselme/ast/Number.lua similarity index 91% rename from ast/Number.lua rename to anselme/ast/Number.lua index 902f065..3bdc280 100644 --- a/ast/Number.lua +++ b/anselme/ast/Number.lua @@ -1,4 +1,4 @@ -local ast = require("ast") +local ast = require("anselme.ast") local Number Number = ast.abstract.Node { diff --git a/ast/Overload.lua b/anselme/ast/Overload.lua similarity index 98% rename from ast/Overload.lua rename to anselme/ast/Overload.lua index 547f6db..3ca509e 100644 --- a/ast/Overload.lua +++ b/anselme/ast/Overload.lua @@ -1,4 +1,4 @@ -local ast = require("ast") +local ast = require("anselme.ast") local Overload Overload = ast.abstract.Node { diff --git a/ast/Pair.lua b/anselme/ast/Pair.lua similarity index 79% rename from ast/Pair.lua rename to anselme/ast/Pair.lua index ed8e1ce..ee87477 100644 --- a/ast/Pair.lua +++ b/anselme/ast/Pair.lua @@ -1,6 +1,6 @@ -local ast = require("ast") +local ast = require("anselme.ast") -local operator_priority = require("common").operator_priority +local operator_priority = require("anselme.common").operator_priority return ast.abstract.Runtime { type = "pair", diff --git a/ast/ParameterTuple.lua b/anselme/ast/ParameterTuple.lua similarity index 93% rename from ast/ParameterTuple.lua rename to anselme/ast/ParameterTuple.lua index be6a749..258859b 100644 --- a/ast/ParameterTuple.lua +++ b/anselme/ast/ParameterTuple.lua @@ -1,6 +1,6 @@ -local ast = require("ast") +local ast = require("anselme.ast") -local operator_priority = require("common").operator_priority +local operator_priority = require("anselme.common").operator_priority local ParameterTuple ParameterTuple = ast.abstract.Node { diff --git a/ast/PartialScope.lua b/anselme/ast/PartialScope.lua similarity index 94% rename from ast/PartialScope.lua rename to anselme/ast/PartialScope.lua index 179c19c..a412dc1 100644 --- a/ast/PartialScope.lua +++ b/anselme/ast/PartialScope.lua @@ -1,9 +1,10 @@ -- create a partial layer to define temporary variables -local ast = require("ast") +local ast = require("anselme.ast") local Identifier, Quote local attached_block_identifier, attached_block_symbol +local unpack = table.unpack or unpack local PartialScope PartialScope = ast.abstract.Node { @@ -45,7 +46,7 @@ PartialScope = ast.abstract.Node { end, _eval = function(self, state) - state.scope:push_partial(table.unpack(self._identifiers)) + state.scope:push_partial(unpack(self._identifiers)) for sym, val in pairs(self.definitions) do state.scope:define(sym, val) end local exp = self.expression:eval(state) state.scope:pop() @@ -54,7 +55,7 @@ PartialScope = ast.abstract.Node { end, _prepare = function(self, state) - state.scope:push_partial(table.unpack(self._identifiers)) + state.scope:push_partial(unpack(self._identifiers)) for sym, val in pairs(self.definitions) do state.scope:define(sym, val) end self.expression:prepare(state) state.scope:pop() diff --git a/ast/Quote.lua b/anselme/ast/Quote.lua similarity index 97% rename from ast/Quote.lua rename to anselme/ast/Quote.lua index 7646e39..7d1bb9e 100644 --- a/ast/Quote.lua +++ b/anselme/ast/Quote.lua @@ -5,7 +5,7 @@ -- -- used for infix operators where the evaluation of the right term depends of the left one (lazy boolean operators, conditionals, etc.) -local ast = require("ast") +local ast = require("anselme.ast") local Quote Quote = ast.abstract.Node { diff --git a/ast/Return.lua b/anselme/ast/Return.lua similarity index 83% rename from ast/Return.lua rename to anselme/ast/Return.lua index b3a29af..7d41cd0 100644 --- a/ast/Return.lua +++ b/anselme/ast/Return.lua @@ -1,6 +1,6 @@ -local ast = require("ast") +local ast = require("anselme.ast") -local operator_priority = require("common").operator_priority +local operator_priority = require("anselme.common").operator_priority local Return Return = ast.abstract.Node { diff --git a/ast/ReturnBoundary.lua b/anselme/ast/ReturnBoundary.lua similarity index 95% rename from ast/ReturnBoundary.lua rename to anselme/ast/ReturnBoundary.lua index 0c338ca..5bd5ba5 100644 --- a/ast/ReturnBoundary.lua +++ b/anselme/ast/ReturnBoundary.lua @@ -1,6 +1,6 @@ -- used stop propagating Return when leaving functions -local ast = require("ast") +local ast = require("anselme.ast") local Return local ReturnBoundary = ast.abstract.Node { diff --git a/ast/String.lua b/anselme/ast/String.lua similarity index 93% rename from ast/String.lua rename to anselme/ast/String.lua index db1287f..c195438 100644 --- a/ast/String.lua +++ b/anselme/ast/String.lua @@ -1,4 +1,4 @@ -local ast = require("ast") +local ast = require("anselme.ast") local Identifier local String = ast.abstract.Node { diff --git a/ast/StringInterpolation.lua b/anselme/ast/StringInterpolation.lua similarity index 96% rename from ast/StringInterpolation.lua rename to anselme/ast/StringInterpolation.lua index fb5c20f..d9db8fc 100644 --- a/ast/StringInterpolation.lua +++ b/anselme/ast/StringInterpolation.lua @@ -1,4 +1,4 @@ -local ast = require("ast") +local ast = require("anselme.ast") local String local StringInterpolation = ast.abstract.Node { diff --git a/ast/Struct.lua b/anselme/ast/Struct.lua similarity index 96% rename from ast/Struct.lua rename to anselme/ast/Struct.lua index 2bbbbe5..a94fcc9 100644 --- a/ast/Struct.lua +++ b/anselme/ast/Struct.lua @@ -1,7 +1,7 @@ -local ast = require("ast") +local ast = require("anselme.ast") local Pair, Number, Nil -local operator_priority = require("common").operator_priority +local operator_priority = require("anselme.common").operator_priority local Struct diff --git a/ast/Symbol.lua b/anselme/ast/Symbol.lua similarity index 94% rename from ast/Symbol.lua rename to anselme/ast/Symbol.lua index 0b0706f..cbde7e6 100644 --- a/ast/Symbol.lua +++ b/anselme/ast/Symbol.lua @@ -1,7 +1,7 @@ -local ast = require("ast") +local ast = require("anselme.ast") local Identifier, String -local operator_priority = require("common").operator_priority +local operator_priority = require("anselme.common").operator_priority local Symbol Symbol = ast.abstract.Node { diff --git a/ast/Table.lua b/anselme/ast/Table.lua similarity index 95% rename from ast/Table.lua rename to anselme/ast/Table.lua index 89b3ecd..4bbfceb 100644 --- a/ast/Table.lua +++ b/anselme/ast/Table.lua @@ -1,7 +1,7 @@ -local ast = require("ast") +local ast = require("anselme.ast") local Branched, Struct, Nil = ast.Branched, ast.Struct, ast.Nil -local operator_priority = require("common").operator_priority +local operator_priority = require("anselme.common").operator_priority local Table Table = ast.abstract.Runtime { diff --git a/ast/Text.lua b/anselme/ast/Text.lua similarity index 95% rename from ast/Text.lua rename to anselme/ast/Text.lua index 4495e64..27a25c3 100644 --- a/ast/Text.lua +++ b/anselme/ast/Text.lua @@ -1,4 +1,4 @@ -local ast = require("ast") +local ast = require("anselme.ast") local AutoCall, Event, Runtime = ast.abstract.AutoCall, ast.abstract.Event, ast.abstract.Runtime return Runtime(AutoCall, Event) { diff --git a/ast/TextInterpolation.lua b/anselme/ast/TextInterpolation.lua similarity index 92% rename from ast/TextInterpolation.lua rename to anselme/ast/TextInterpolation.lua index a3fe062..5a297b6 100644 --- a/ast/TextInterpolation.lua +++ b/anselme/ast/TextInterpolation.lua @@ -1,7 +1,7 @@ -local ast = require("ast") +local ast = require("anselme.ast") local Text, String -local tag_manager = require("state.tag_manager") +local tag_manager = require("anselme.state.tag_manager") local TextInterpolation = ast.abstract.Node { type = "text interpolation", diff --git a/ast/Translatable.lua b/anselme/ast/Translatable.lua similarity index 86% rename from ast/Translatable.lua rename to anselme/ast/Translatable.lua index 7116936..3794ab9 100644 --- a/ast/Translatable.lua +++ b/anselme/ast/Translatable.lua @@ -1,7 +1,7 @@ -local ast = require("ast") +local ast = require("anselme.ast") local TextInterpolation, String -local operator_priority = require("common").operator_priority +local operator_priority = require("anselme.common").operator_priority local translation_manager @@ -44,6 +44,6 @@ local Translatable = ast.abstract.Node { package.loaded[...] = Translatable TextInterpolation, String = ast.TextInterpolation, ast.String -translation_manager = require("state.translation_manager") +translation_manager = require("anselme.state.translation_manager") return Translatable diff --git a/ast/Tuple.lua b/anselme/ast/Tuple.lua similarity index 92% rename from ast/Tuple.lua rename to anselme/ast/Tuple.lua index 1afc80d..ebe486b 100644 --- a/ast/Tuple.lua +++ b/anselme/ast/Tuple.lua @@ -1,6 +1,6 @@ -local ast = require("ast") +local ast = require("anselme.ast") -local operator_priority = require("common").operator_priority +local operator_priority = require("anselme.common").operator_priority local Tuple Tuple = ast.abstract.Node { diff --git a/ast/Typed.lua b/anselme/ast/Typed.lua similarity index 90% rename from ast/Typed.lua rename to anselme/ast/Typed.lua index d06f563..20074a8 100644 --- a/ast/Typed.lua +++ b/anselme/ast/Typed.lua @@ -1,6 +1,6 @@ -local ast = require("ast") +local ast = require("anselme.ast") -local operator_priority = require("common").operator_priority +local operator_priority = require("anselme.common").operator_priority local format_identifier diff --git a/ast/abstract/AutoCall.lua b/anselme/ast/abstract/AutoCall.lua similarity index 80% rename from ast/abstract/AutoCall.lua rename to anselme/ast/abstract/AutoCall.lua index a9c824a..d27ec89 100644 --- a/ast/abstract/AutoCall.lua +++ b/anselme/ast/abstract/AutoCall.lua @@ -1,6 +1,6 @@ -- called automatically when returned by one of the expression in a block -local ast = require("ast") +local ast = require("anselme.ast") return ast.abstract.Node { type = "auto call", diff --git a/ast/abstract/Event.lua b/anselme/ast/abstract/Event.lua similarity index 94% rename from ast/abstract/Event.lua rename to anselme/ast/abstract/Event.lua index fe2778c..d837ff6 100644 --- a/ast/abstract/Event.lua +++ b/anselme/ast/abstract/Event.lua @@ -1,6 +1,6 @@ -- for nodes that can be written to the event buffer -local ast = require("ast") +local ast = require("anselme.ast") return ast.abstract.Node { type = "event", diff --git a/ast/abstract/Node.lua b/anselme/ast/abstract/Node.lua similarity index 97% rename from ast/abstract/Node.lua rename to anselme/ast/abstract/Node.lua index 989fd7b..8ed7113 100644 --- a/ast/abstract/Node.lua +++ b/anselme/ast/abstract/Node.lua @@ -1,6 +1,6 @@ -local class = require("class") -local fmt = require("common").fmt -local binser = require("lib.binser") +local class = require("anselme.lib.class") +local fmt = require("anselme.common").fmt +local binser = require("anselme.lib.binser") local utf8 = utf8 or require("lua-utf8") -- NODES SHOULD BE IMMUTABLE AFTER CREATION IF POSSIBLE! @@ -11,7 +11,7 @@ local utf8 = utf8 or require("lua-utf8") -- reminder: when requiring AST nodes somewhere, try to do it at the end of the file. and if you need to require something in this file, do it in the :_i_hate_cycles method. -- i've had enough headaches with cyclics references and nodes required several times... -local uuid = require("common").uuid +local uuid = require("anselme.common").uuid local State, Runtime, Call, Identifier, ArgumentTuple local resume_manager @@ -320,12 +320,12 @@ Node = class { -- The worst thing with this kind of require loop combined with our existing cycle band-aids is that Lua won't error, it will just execute the first node to subclass from Node twice. Which is annoying since now we have several, technically distinct classes representing the same node frolicking around. -- Thus, any require here that may require other Nodes shall be done here. This method is called in anselme.lua after everything else is required. _i_hate_cycles = function(self) - local ast = require("ast") + local ast = require("anselme.ast") Runtime, Call, Identifier, ArgumentTuple = ast.abstract.Runtime, ast.Call, ast.Identifier, ast.ArgumentTuple custom_call_identifier = Identifier:new("_!") - State = require("state.State") - resume_manager = require("state.resume_manager") + State = require("anselme.state.State") + resume_manager = require("anselme.state.resume_manager") end, _debug_traverse = function(self, level) diff --git a/ast/abstract/Overloadable.lua b/anselme/ast/abstract/Overloadable.lua similarity index 95% rename from ast/abstract/Overloadable.lua rename to anselme/ast/abstract/Overloadable.lua index d8891c7..cf58199 100644 --- a/ast/abstract/Overloadable.lua +++ b/anselme/ast/abstract/Overloadable.lua @@ -1,6 +1,6 @@ -- for nodes that can be put in an Overload -local ast = require("ast") +local ast = require("anselme.ast") return ast.abstract.Node { type = "overloadable", diff --git a/ast/abstract/Runtime.lua b/anselme/ast/abstract/Runtime.lua similarity index 90% rename from ast/abstract/Runtime.lua rename to anselme/ast/abstract/Runtime.lua index a4823cd..7e7ae37 100644 --- a/ast/abstract/Runtime.lua +++ b/anselme/ast/abstract/Runtime.lua @@ -1,7 +1,7 @@ -- indicate a Runtime node: it should not exist in the AST generated by the parser but only as a result of an evaluation or call -- is assumed to be already evaluated and prepared (will actually error on prepare) -local ast = require("ast") +local ast = require("anselme.ast") return ast.abstract.Node { type = "runtime", diff --git a/ast/init.lua b/anselme/ast/init.lua similarity index 64% rename from ast/init.lua rename to anselme/ast/init.lua index cb07dab..755c1f7 100644 --- a/ast/init.lua +++ b/anselme/ast/init.lua @@ -1,13 +1,13 @@ return setmetatable({ abstract = setmetatable({}, { __index = function(self, key) - self[key] = require("ast.abstract."..key) + self[key] = require("anselme.ast.abstract."..key) return self[key] end }) }, { __index = function(self, key) - self[key] = require("ast."..key) + self[key] = require("anselme.ast."..key) return self[key] end }) diff --git a/common/init.lua b/anselme/common/init.lua similarity index 97% rename from common/init.lua rename to anselme/common/init.lua index 1634a74..2590212 100644 --- a/common/init.lua +++ b/anselme/common/init.lua @@ -1,5 +1,5 @@ local escape_cache = {} -local ansicolors = require("lib.ansicolors") +local ansicolors = require("anselme.lib.ansicolors") local common = { -- escape text to be used as an exact pattern diff --git a/common/to_anselme.lua b/anselme/common/to_anselme.lua similarity index 94% rename from common/to_anselme.lua rename to anselme/common/to_anselme.lua index c941cb8..a275099 100644 --- a/common/to_anselme.lua +++ b/anselme/common/to_anselme.lua @@ -1,4 +1,4 @@ -local ast = require("ast") +local ast = require("anselme.ast") local Number, Struct, String, Nil, Boolean local function to_anselme(val) diff --git a/anselme.lua b/anselme/init.lua similarity index 74% rename from anselme.lua rename to anselme/init.lua index 5c99c82..de44ba4 100644 --- a/anselme.lua +++ b/anselme/init.lua @@ -42,13 +42,13 @@ -- end -- end -- ``` - --- LuaJIT compatibility --- TODO: too heavyhanded -if _VERSION == "Lua 5.1" then - package.path = "./?/init.lua;" .. package.path - table.unpack = unpack -end +-- +-- If `require("anselme")` fails with an error similar to `module 'anselme' not found`, you might need to redefine `package.path` before the require: +-- ```lua +-- package.path = "path/?/init.lua;path/?.lua;" .. package.path -- where path is the directory where anselme is located +-- require("anselme") +-- ``` +-- Anselme expects that `require("anselme.module")` will try loading both `anselme/module/init.lua` and `anselme/module.lua`, which may not be the case without the above code as `package.path`'s default value is system dependent, i.e. not my problem. local parser, State @@ -86,8 +86,8 @@ local anselme = { package.loaded[...] = anselme -parser = require("parser") -State = require("state.State") -require("ast.abstract.Node"):_i_hate_cycles() +parser = require("anselme.parser") +State = require("anselme.state.State") +require("anselme.ast.abstract.Node"):_i_hate_cycles() return anselme diff --git a/lib/ansicolors.lua b/anselme/lib/ansicolors.lua similarity index 100% rename from lib/ansicolors.lua rename to anselme/lib/ansicolors.lua diff --git a/lib/binser.lua b/anselme/lib/binser.lua similarity index 100% rename from lib/binser.lua rename to anselme/lib/binser.lua diff --git a/class.lua b/anselme/lib/class.lua similarity index 96% rename from class.lua rename to anselme/lib/class.lua index 5b26418..80ff0e3 100644 --- a/class.lua +++ b/anselme/lib/class.lua @@ -3,7 +3,7 @@ -- -- usage: -- --- local class = require("class") +-- local class = require("anselme.lib.class") -- local Vehicle = class { -- type = "vehicle", -- class name, optional -- @@ -28,7 +28,7 @@ -- local car = Car:new("red") -- instancing -- print(car:is_stable(), car.color) -- true, "red" -- --- the default class returned by require("class") contains a few other default methods that will be inherited by all subclasses +-- the default class returned by require("anselme.lib.class") contains a few other default methods that will be inherited by all subclasses -- see line 99 and further for details & documentation -- -- design philosophy: diff --git a/parser/Source.lua b/anselme/parser/Source.lua similarity index 95% rename from parser/Source.lua rename to anselme/parser/Source.lua index 2b397d1..78aee7b 100644 --- a/parser/Source.lua +++ b/anselme/parser/Source.lua @@ -1,4 +1,4 @@ -local class = require("class") +local class = require("anselme.lib.class") local utf8 = utf8 or require("lua-utf8") local Source diff --git a/parser/code_to_tree.lua b/anselme/parser/code_to_tree.lua similarity index 97% rename from parser/code_to_tree.lua rename to anselme/parser/code_to_tree.lua index 32db680..edc9e36 100644 --- a/parser/code_to_tree.lua +++ b/anselme/parser/code_to_tree.lua @@ -2,7 +2,7 @@ local utf8 = utf8 or require("lua-utf8") -local Source = require("parser.Source") +local Source = require("anselme.parser.Source") local function indented_to_tree(indented) local tree = {} diff --git a/parser/expression/comment.lua b/anselme/parser/expression/comment.lua similarity index 96% rename from parser/expression/comment.lua rename to anselme/parser/expression/comment.lua index 3d22115..55ce64d 100644 --- a/parser/expression/comment.lua +++ b/anselme/parser/expression/comment.lua @@ -1,4 +1,4 @@ -local primary = require("parser.expression.primary.primary") +local primary = require("anselme.parser.expression.primary.primary") local comment comment = primary { diff --git a/parser/expression/contextual/function_parameter.lua b/anselme/parser/expression/contextual/function_parameter.lua similarity index 75% rename from parser/expression/contextual/function_parameter.lua rename to anselme/parser/expression/contextual/function_parameter.lua index 0394a7a..28df941 100644 --- a/parser/expression/contextual/function_parameter.lua +++ b/anselme/parser/expression/contextual/function_parameter.lua @@ -1,11 +1,11 @@ -local primary = require("parser.expression.primary.primary") -local identifier = require("parser.expression.primary.identifier") -local expression_to_ast = require("parser.expression.to_ast") +local primary = require("anselme.parser.expression.primary.primary") +local identifier = require("anselme.parser.expression.primary.identifier") +local expression_to_ast = require("anselme.parser.expression.to_ast") -local ast = require("ast") +local ast = require("anselme.ast") local FunctionParameter = ast.FunctionParameter -local operator_priority = require("common").operator_priority +local operator_priority = require("anselme.common").operator_priority local assignment_priority = operator_priority["_=_"] local type_check_priority = operator_priority["_::_"] diff --git a/parser/expression/contextual/function_parameter_no_default.lua b/anselme/parser/expression/contextual/function_parameter_no_default.lua similarity index 62% rename from parser/expression/contextual/function_parameter_no_default.lua rename to anselme/parser/expression/contextual/function_parameter_no_default.lua index 8651fef..381da8f 100644 --- a/parser/expression/contextual/function_parameter_no_default.lua +++ b/anselme/parser/expression/contextual/function_parameter_no_default.lua @@ -1,4 +1,4 @@ -local function_parameter = require("parser.expression.contextual.function_parameter") +local function_parameter = require("anselme.parser.expression.contextual.function_parameter") return function_parameter { parse = function(self, source, str, limit_pattern) diff --git a/parser/expression/contextual/parameter_tuple.lua b/anselme/parser/expression/contextual/parameter_tuple.lua similarity index 80% rename from parser/expression/contextual/parameter_tuple.lua rename to anselme/parser/expression/contextual/parameter_tuple.lua index e2cd824..0878aaa 100644 --- a/parser/expression/contextual/parameter_tuple.lua +++ b/anselme/parser/expression/contextual/parameter_tuple.lua @@ -1,8 +1,8 @@ -local primary = require("parser.expression.primary.primary") -local function_parameter = require("parser.expression.contextual.function_parameter") -local function_parameter_no_default = require("parser.expression.contextual.function_parameter_no_default") +local primary = require("anselme.parser.expression.primary.primary") +local function_parameter = require("anselme.parser.expression.contextual.function_parameter") +local function_parameter_no_default = require("anselme.parser.expression.contextual.function_parameter_no_default") -local ast = require("ast") +local ast = require("anselme.ast") local ParameterTuple = ast.ParameterTuple return primary { diff --git a/parser/expression/primary/anchor.lua b/anselme/parser/expression/primary/anchor.lua similarity index 70% rename from parser/expression/primary/anchor.lua rename to anselme/parser/expression/primary/anchor.lua index 9247762..0bd3d9b 100644 --- a/parser/expression/primary/anchor.lua +++ b/anselme/parser/expression/primary/anchor.lua @@ -1,8 +1,8 @@ -local primary = require("parser.expression.primary.primary") +local primary = require("anselme.parser.expression.primary.primary") -local identifier = require("parser.expression.primary.identifier") +local identifier = require("anselme.parser.expression.primary.identifier") -local ast = require("ast") +local ast = require("anselme.ast") local Anchor = ast.Anchor return primary { diff --git a/parser/expression/primary/block_identifier.lua b/anselme/parser/expression/primary/block_identifier.lua similarity index 78% rename from parser/expression/primary/block_identifier.lua rename to anselme/parser/expression/primary/block_identifier.lua index 6986b0a..0252fb5 100644 --- a/parser/expression/primary/block_identifier.lua +++ b/anselme/parser/expression/primary/block_identifier.lua @@ -1,6 +1,6 @@ -local primary = require("parser.expression.primary.primary") +local primary = require("anselme.parser.expression.primary.primary") -local ast = require("ast") +local ast = require("anselme.ast") local Identifier, Call, ArgumentTuple = ast.Identifier, ast.Call, ast.ArgumentTuple return primary { diff --git a/parser/expression/primary/function_definition.lua b/anselme/parser/expression/primary/function_definition.lua similarity index 91% rename from parser/expression/primary/function_definition.lua rename to anselme/parser/expression/primary/function_definition.lua index cd3105b..987a469 100644 --- a/parser/expression/primary/function_definition.lua +++ b/anselme/parser/expression/primary/function_definition.lua @@ -1,20 +1,20 @@ -local primary = require("parser.expression.primary.primary") -local function_parameter_no_default = require("parser.expression.contextual.function_parameter_no_default") -local parameter_tuple = require("parser.expression.contextual.parameter_tuple") -local identifier = require("parser.expression.primary.identifier") +local primary = require("anselme.parser.expression.primary.primary") +local function_parameter_no_default = require("anselme.parser.expression.contextual.function_parameter_no_default") +local parameter_tuple = require("anselme.parser.expression.contextual.parameter_tuple") +local identifier = require("anselme.parser.expression.primary.identifier") -local expression_to_ast = require("parser.expression.to_ast") -local escape = require("common").escape +local expression_to_ast = require("anselme.parser.expression.to_ast") +local escape = require("anselme.common").escape -local ast = require("ast") +local ast = require("anselme.ast") local Symbol, Definition, Function, ParameterTuple = ast.Symbol, ast.Definition, ast.Function, ast.ParameterTuple -local regular_operators = require("common").regular_operators +local regular_operators = require("anselme.common").regular_operators local prefixes = regular_operators.prefixes local suffixes = regular_operators.suffixes local infixes = regular_operators.infixes -local operator_priority = require("common").operator_priority +local operator_priority = require("anselme.common").operator_priority -- same as function_parameter_no_default, but allow wrapping in (evenetual) parentheses -- in order to solve some priotity issues (_._ has higher priority than _::_, leading to not being possible to overload it with type filtering without parentheses) diff --git a/parser/expression/primary/identifier.lua b/anselme/parser/expression/primary/identifier.lua similarity index 84% rename from parser/expression/primary/identifier.lua rename to anselme/parser/expression/primary/identifier.lua index feff777..cdd3c60 100644 --- a/parser/expression/primary/identifier.lua +++ b/anselme/parser/expression/primary/identifier.lua @@ -1,15 +1,15 @@ -local primary = require("parser.expression.primary.primary") +local primary = require("anselme.parser.expression.primary.primary") -local Identifier = require("ast.Identifier") +local Identifier = require("anselme.ast.Identifier") local disallowed_set = (".~`^+-=<>/[]*{}|\\_!?,;:()\"@&$#%"):gsub("[^%w]", "%%%1") local identifier_pattern = "%s*[^0-9%s'"..disallowed_set.."][^"..disallowed_set.."]*" -local common = require("common") +local common = require("anselme.common") local trim, escape = common.trim, common.escape -- for operator identifiers -local regular_operators = require("common").regular_operators +local regular_operators = require("anselme.common").regular_operators local operators = {} for _, prefix in ipairs(regular_operators.prefixes) do table.insert(operators, prefix[1].."_") end for _, infix in ipairs(regular_operators.infixes) do table.insert(operators, "_"..infix[1].."_") end diff --git a/parser/expression/primary/init.lua b/anselme/parser/expression/primary/init.lua similarity index 92% rename from parser/expression/primary/init.lua rename to anselme/parser/expression/primary/init.lua index 7c40663..fcc53d0 100644 --- a/parser/expression/primary/init.lua +++ b/anselme/parser/expression/primary/init.lua @@ -1,7 +1,7 @@ --- try to parse a primary expression local function r(name) - return require("parser.expression.primary."..name), nil + return require("anselme.parser.expression.primary."..name), nil end local primaries = { diff --git a/parser/expression/primary/number.lua b/anselme/parser/expression/primary/number.lua similarity index 77% rename from parser/expression/primary/number.lua rename to anselme/parser/expression/primary/number.lua index 2cbf94e..b9da59d 100644 --- a/parser/expression/primary/number.lua +++ b/anselme/parser/expression/primary/number.lua @@ -1,6 +1,6 @@ -local primary = require("parser.expression.primary.primary") +local primary = require("anselme.parser.expression.primary.primary") -local Number = require("ast.Number") +local Number = require("anselme.ast.Number") return primary { match = function(self, str) diff --git a/parser/expression/primary/parenthesis.lua b/anselme/parser/expression/primary/parenthesis.lua similarity index 79% rename from parser/expression/primary/parenthesis.lua rename to anselme/parser/expression/primary/parenthesis.lua index 36b6ec3..a6fe048 100644 --- a/parser/expression/primary/parenthesis.lua +++ b/anselme/parser/expression/primary/parenthesis.lua @@ -1,11 +1,11 @@ -- either parentheses or nil () -local primary = require("parser.expression.primary.primary") +local primary = require("anselme.parser.expression.primary.primary") -local ast = require("ast") +local ast = require("anselme.ast") local Nil = ast.Nil -local expression_to_ast = require("parser.expression.to_ast") +local expression_to_ast = require("anselme.parser.expression.to_ast") return primary { match = function(self, str) diff --git a/anselme/parser/expression/primary/prefix/else.lua b/anselme/parser/expression/primary/prefix/else.lua new file mode 100644 index 0000000..6da0d46 --- /dev/null +++ b/anselme/parser/expression/primary/prefix/else.lua @@ -0,0 +1,8 @@ +local prefix_quote_right = require("anselme.parser.expression.primary.prefix.prefix_quote_right") +local operator_priority = require("anselme.common").operator_priority + +return prefix_quote_right { + operator = "~", + identifier = "~_", + priority = operator_priority["~_"] +} diff --git a/parser/expression/primary/prefix/function.lua b/anselme/parser/expression/primary/prefix/function.lua similarity index 68% rename from parser/expression/primary/prefix/function.lua rename to anselme/parser/expression/primary/prefix/function.lua index a9a41e0..a6eaa05 100644 --- a/parser/expression/primary/prefix/function.lua +++ b/anselme/parser/expression/primary/prefix/function.lua @@ -1,12 +1,12 @@ -local prefix = require("parser.expression.primary.prefix.prefix") -local parameter_tuple = require("parser.expression.contextual.parameter_tuple") -local escape = require("common").escape -local expression_to_ast = require("parser.expression.to_ast") +local prefix = require("anselme.parser.expression.primary.prefix.prefix") +local parameter_tuple = require("anselme.parser.expression.contextual.parameter_tuple") +local escape = require("anselme.common").escape +local expression_to_ast = require("anselme.parser.expression.to_ast") -local ast = require("ast") +local ast = require("anselme.ast") local Function, ParameterTuple = ast.Function, ast.ParameterTuple -local operator_priority = require("common").operator_priority +local operator_priority = require("anselme.common").operator_priority return prefix { operator = "$", diff --git a/anselme/parser/expression/primary/prefix/mutable.lua b/anselme/parser/expression/primary/prefix/mutable.lua new file mode 100644 index 0000000..5ed33b6 --- /dev/null +++ b/anselme/parser/expression/primary/prefix/mutable.lua @@ -0,0 +1,9 @@ +local prefix = require("anselme.parser.expression.primary.prefix.prefix") + +local operator_priority = require("anselme.common").operator_priority + +return prefix { + operator = "*", + identifier = "*_", + priority = operator_priority["*_"] +} diff --git a/anselme/parser/expression/primary/prefix/negation.lua b/anselme/parser/expression/primary/prefix/negation.lua new file mode 100644 index 0000000..d0e9f15 --- /dev/null +++ b/anselme/parser/expression/primary/prefix/negation.lua @@ -0,0 +1,9 @@ +local prefix = require("anselme.parser.expression.primary.prefix.prefix") + +local operator_priority = require("anselme.common").operator_priority + +return prefix { + operator = "-", + identifier = "-_", + priority = operator_priority["-_"] +} diff --git a/anselme/parser/expression/primary/prefix/not.lua b/anselme/parser/expression/primary/prefix/not.lua new file mode 100644 index 0000000..f3a1ff8 --- /dev/null +++ b/anselme/parser/expression/primary/prefix/not.lua @@ -0,0 +1,9 @@ +local prefix = require("anselme.parser.expression.primary.prefix.prefix") + +local operator_priority = require("anselme.common").operator_priority + +return prefix { + operator = "!", + identifier = "!_", + priority = operator_priority["!_"] +} diff --git a/parser/expression/primary/prefix/prefix.lua b/anselme/parser/expression/primary/prefix/prefix.lua similarity index 80% rename from parser/expression/primary/prefix/prefix.lua rename to anselme/parser/expression/primary/prefix/prefix.lua index 69bfbd4..1a4212c 100644 --- a/parser/expression/primary/prefix/prefix.lua +++ b/anselme/parser/expression/primary/prefix/prefix.lua @@ -1,10 +1,10 @@ -- unary prefix operators, for example: the - in -5 -local primary = require("parser.expression.primary.primary") -local escape = require("common").escape -local expression_to_ast = require("parser.expression.to_ast") +local primary = require("anselme.parser.expression.primary.primary") +local escape = require("anselme.common").escape +local expression_to_ast = require("anselme.parser.expression.to_ast") -local ast = require("ast") +local ast = require("anselme.ast") local Call, Identifier, ArgumentTuple = ast.Call, ast.Identifier, ast.ArgumentTuple return primary { diff --git a/parser/expression/primary/prefix/prefix_maybe_nil_right.lua b/anselme/parser/expression/primary/prefix/prefix_maybe_nil_right.lua similarity index 68% rename from parser/expression/primary/prefix/prefix_maybe_nil_right.lua rename to anselme/parser/expression/primary/prefix/prefix_maybe_nil_right.lua index df95b33..e4d907d 100644 --- a/parser/expression/primary/prefix/prefix_maybe_nil_right.lua +++ b/anselme/parser/expression/primary/prefix/prefix_maybe_nil_right.lua @@ -1,8 +1,8 @@ -local prefix = require("parser.expression.primary.prefix.prefix") -local escape = require("common").escape -local expression_to_ast = require("parser.expression.to_ast") +local prefix = require("anselme.parser.expression.primary.prefix.prefix") +local escape = require("anselme.common").escape +local expression_to_ast = require("anselme.parser.expression.to_ast") -local ast = require("ast") +local ast = require("anselme.ast") local Nil = ast.Nil return prefix { diff --git a/parser/expression/primary/prefix/prefix_quote_right.lua b/anselme/parser/expression/primary/prefix/prefix_quote_right.lua similarity index 70% rename from parser/expression/primary/prefix/prefix_quote_right.lua rename to anselme/parser/expression/primary/prefix/prefix_quote_right.lua index 4792108..2e4db6b 100644 --- a/parser/expression/primary/prefix/prefix_quote_right.lua +++ b/anselme/parser/expression/primary/prefix/prefix_quote_right.lua @@ -1,6 +1,6 @@ -local prefix = require("parser.expression.primary.prefix.prefix") +local prefix = require("anselme.parser.expression.primary.prefix.prefix") -local ast = require("ast") +local ast = require("anselme.ast") local Call, Identifier, ArgumentTuple, Quote = ast.Call, ast.Identifier, ast.ArgumentTuple, ast.Quote return prefix { diff --git a/anselme/parser/expression/primary/prefix/return.lua b/anselme/parser/expression/primary/prefix/return.lua new file mode 100644 index 0000000..c3b8764 --- /dev/null +++ b/anselme/parser/expression/primary/prefix/return.lua @@ -0,0 +1,15 @@ +local prefix_maybe_nil_right = require("anselme.parser.expression.primary.prefix.prefix_maybe_nil_right") + +local ast = require("anselme.ast") +local Return = ast.Return + +local operator_priority = require("anselme.common").operator_priority + +return prefix_maybe_nil_right { + operator = "@", + priority = operator_priority["@_"], + + build_ast = function(self, right) + return Return:new(right) + end +} diff --git a/parser/expression/primary/prefix/semicolon.lua b/anselme/parser/expression/primary/prefix/semicolon.lua similarity index 51% rename from parser/expression/primary/prefix/semicolon.lua rename to anselme/parser/expression/primary/prefix/semicolon.lua index fe73a5e..fa0228c 100644 --- a/parser/expression/primary/prefix/semicolon.lua +++ b/anselme/parser/expression/primary/prefix/semicolon.lua @@ -1,6 +1,6 @@ -local prefix = require("parser.expression.primary.prefix.prefix") +local prefix = require("anselme.parser.expression.primary.prefix.prefix") -local operator_priority = require("common").operator_priority +local operator_priority = require("anselme.common").operator_priority return prefix { operator = ";", diff --git a/parser/expression/primary/prefix/translatable.lua b/anselme/parser/expression/primary/prefix/translatable.lua similarity index 53% rename from parser/expression/primary/prefix/translatable.lua rename to anselme/parser/expression/primary/prefix/translatable.lua index 7c96a70..dc4238c 100644 --- a/parser/expression/primary/prefix/translatable.lua +++ b/anselme/parser/expression/primary/prefix/translatable.lua @@ -1,9 +1,9 @@ -local prefix = require("parser.expression.primary.prefix.prefix") +local prefix = require("anselme.parser.expression.primary.prefix.prefix") -local ast = require("ast") +local ast = require("anselme.ast") local Translatable = ast.Translatable -local operator_priority = require("common").operator_priority +local operator_priority = require("anselme.common").operator_priority return prefix { operator = "%", diff --git a/parser/expression/primary/primary.lua b/anselme/parser/expression/primary/primary.lua similarity index 94% rename from parser/expression/primary/primary.lua rename to anselme/parser/expression/primary/primary.lua index a8502f3..016f128 100644 --- a/parser/expression/primary/primary.lua +++ b/anselme/parser/expression/primary/primary.lua @@ -1,4 +1,4 @@ -local class = require("class") +local class = require("anselme.lib.class") return class { new = false, -- static class diff --git a/parser/expression/primary/string.lua b/anselme/parser/expression/primary/string.lua similarity index 92% rename from parser/expression/primary/string.lua rename to anselme/parser/expression/primary/string.lua index 4b095c6..63f3756 100644 --- a/parser/expression/primary/string.lua +++ b/anselme/parser/expression/primary/string.lua @@ -1,13 +1,13 @@ -- note: this is reused in primary.text, hence all the configurable fields -local primary = require("parser.expression.primary.primary") +local primary = require("anselme.parser.expression.primary.primary") -local ast = require("ast") +local ast = require("anselme.ast") local String, StringInterpolation = ast.String, ast.StringInterpolation -local expression_to_ast = require("parser.expression.to_ast") +local expression_to_ast = require("anselme.parser.expression.to_ast") -local escape = require("common").escape +local escape = require("anselme.common").escape local escape_code = { ["n"] = "\n", diff --git a/parser/expression/primary/struct.lua b/anselme/parser/expression/primary/struct.lua similarity index 59% rename from parser/expression/primary/struct.lua rename to anselme/parser/expression/primary/struct.lua index 1bc6371..5d3e59b 100644 --- a/parser/expression/primary/struct.lua +++ b/anselme/parser/expression/primary/struct.lua @@ -1,7 +1,7 @@ -local primary = require("parser.expression.primary.primary") -local tuple = require("parser.expression.primary.tuple") +local primary = require("anselme.parser.expression.primary.primary") +local tuple = require("anselme.parser.expression.primary.tuple") -local ast = require("ast") +local ast = require("anselme.ast") local Struct = ast.Struct return primary { diff --git a/parser/expression/primary/symbol.lua b/anselme/parser/expression/primary/symbol.lua similarity index 78% rename from parser/expression/primary/symbol.lua rename to anselme/parser/expression/primary/symbol.lua index 967160c..d78fe23 100644 --- a/parser/expression/primary/symbol.lua +++ b/anselme/parser/expression/primary/symbol.lua @@ -1,9 +1,9 @@ -local primary = require("parser.expression.primary.primary") -local type_check = require("parser.expression.secondary.infix.type_check") +local primary = require("anselme.parser.expression.primary.primary") +local type_check = require("anselme.parser.expression.secondary.infix.type_check") -local identifier = require("parser.expression.primary.identifier") +local identifier = require("anselme.parser.expression.primary.identifier") -local ast = require("ast") +local ast = require("anselme.ast") local Nil = ast.Nil return primary { diff --git a/parser/expression/primary/text.lua b/anselme/parser/expression/primary/text.lua similarity index 85% rename from parser/expression/primary/text.lua rename to anselme/parser/expression/primary/text.lua index b9e6195..c6baffe 100644 --- a/parser/expression/primary/text.lua +++ b/anselme/parser/expression/primary/text.lua @@ -1,6 +1,6 @@ -local string = require("parser.expression.primary.string") +local string = require("anselme.parser.expression.primary.string") -local ast = require("ast") +local ast = require("anselme.ast") local TextInterpolation, Translatable = ast.TextInterpolation, ast.Translatable return string { diff --git a/parser/expression/primary/tuple.lua b/anselme/parser/expression/primary/tuple.lua similarity index 80% rename from parser/expression/primary/tuple.lua rename to anselme/parser/expression/primary/tuple.lua index 7ff0159..9c2735f 100644 --- a/parser/expression/primary/tuple.lua +++ b/anselme/parser/expression/primary/tuple.lua @@ -1,11 +1,11 @@ -local primary = require("parser.expression.primary.primary") +local primary = require("anselme.parser.expression.primary.primary") -local ast = require("ast") +local ast = require("anselme.ast") local Tuple = ast.Tuple -local expression_to_ast = require("parser.expression.to_ast") +local expression_to_ast = require("anselme.parser.expression.to_ast") -local escape = require("common").escape +local escape = require("anselme.common").escape return primary { match = function(self, str) diff --git a/anselme/parser/expression/secondary/infix/addition.lua b/anselme/parser/expression/secondary/infix/addition.lua new file mode 100644 index 0000000..8581b56 --- /dev/null +++ b/anselme/parser/expression/secondary/infix/addition.lua @@ -0,0 +1,9 @@ +local infix = require("anselme.parser.expression.secondary.infix.infix") + +local operator_priority = require("anselme.common").operator_priority + +return infix { + operator = "+", + identifier = "_+_", + priority = operator_priority["_+_"] +} diff --git a/anselme/parser/expression/secondary/infix/and.lua b/anselme/parser/expression/secondary/infix/and.lua new file mode 100644 index 0000000..ba31e1e --- /dev/null +++ b/anselme/parser/expression/secondary/infix/and.lua @@ -0,0 +1,9 @@ +local infix_quote_right = require("anselme.parser.expression.secondary.infix.infix_quote_right") + +local operator_priority = require("anselme.common").operator_priority + +return infix_quote_right { + operator = "&", + identifier = "_&_", + priority = operator_priority["_&_"] +} diff --git a/parser/expression/secondary/infix/assignment.lua b/anselme/parser/expression/secondary/infix/assignment.lua similarity index 66% rename from parser/expression/secondary/infix/assignment.lua rename to anselme/parser/expression/secondary/infix/assignment.lua index 5b01467..e4f6c8c 100644 --- a/parser/expression/secondary/infix/assignment.lua +++ b/anselme/parser/expression/secondary/infix/assignment.lua @@ -1,9 +1,9 @@ -local infix = require("parser.expression.secondary.infix.infix") -local escape = require("common").escape +local infix = require("anselme.parser.expression.secondary.infix.infix") +local escape = require("anselme.common").escape -local operator_priority = require("common").operator_priority +local operator_priority = require("anselme.common").operator_priority -local ast = require("ast") +local ast = require("anselme.ast") local Identifier, Assignment = ast.Identifier, ast.Assignment return infix { diff --git a/parser/expression/secondary/infix/assignment_call.lua b/anselme/parser/expression/secondary/infix/assignment_call.lua similarity index 67% rename from parser/expression/secondary/infix/assignment_call.lua rename to anselme/parser/expression/secondary/infix/assignment_call.lua index 1dabbbd..a815726 100644 --- a/parser/expression/secondary/infix/assignment_call.lua +++ b/anselme/parser/expression/secondary/infix/assignment_call.lua @@ -1,9 +1,9 @@ -local infix = require("parser.expression.secondary.infix.infix") -local escape = require("common").escape +local infix = require("anselme.parser.expression.secondary.infix.infix") +local escape = require("anselme.common").escape -local operator_priority = require("common").operator_priority +local operator_priority = require("anselme.common").operator_priority -local ast = require("ast") +local ast = require("anselme.ast") local Call = ast.Call return infix { diff --git a/parser/expression/secondary/infix/assignment_with_infix.lua b/anselme/parser/expression/secondary/infix/assignment_with_infix.lua similarity index 75% rename from parser/expression/secondary/infix/assignment_with_infix.lua rename to anselme/parser/expression/secondary/infix/assignment_with_infix.lua index e11a0f6..4302329 100644 --- a/parser/expression/secondary/infix/assignment_with_infix.lua +++ b/anselme/parser/expression/secondary/infix/assignment_with_infix.lua @@ -1,11 +1,11 @@ -local ast = require("ast") +local ast = require("anselme.ast") local Call, Identifier, ArgumentTuple = ast.Call, ast.Identifier, ast.ArgumentTuple -local assignment = require("parser.expression.secondary.infix.assignment") -local assignment_call = require("parser.expression.secondary.infix.assignment_call") +local assignment = require("anselme.parser.expression.secondary.infix.assignment") +local assignment_call = require("anselme.parser.expression.secondary.infix.assignment_call") -local infixes = require("common").regular_operators.infixes -local operator_priority = require("common").operator_priority +local infixes = require("anselme.common").regular_operators.infixes +local operator_priority = require("anselme.common").operator_priority local generated = {} diff --git a/parser/expression/secondary/infix/call.lua b/anselme/parser/expression/secondary/infix/call.lua similarity index 66% rename from parser/expression/secondary/infix/call.lua rename to anselme/parser/expression/secondary/infix/call.lua index 5b330db..4edb139 100644 --- a/parser/expression/secondary/infix/call.lua +++ b/anselme/parser/expression/secondary/infix/call.lua @@ -1,10 +1,10 @@ -local infix = require("parser.expression.secondary.infix.infix") -local escape = require("common").escape -local identifier = require("parser.expression.primary.identifier") +local infix = require("anselme.parser.expression.secondary.infix.infix") +local escape = require("anselme.common").escape +local identifier = require("anselme.parser.expression.primary.identifier") -local operator_priority = require("common").operator_priority +local operator_priority = require("anselme.common").operator_priority -local ast = require("ast") +local ast = require("anselme.ast") local Call, ArgumentTuple = ast.Call, ast.ArgumentTuple return infix { diff --git a/parser/expression/secondary/infix/choice.lua b/anselme/parser/expression/secondary/infix/choice.lua similarity index 70% rename from parser/expression/secondary/infix/choice.lua rename to anselme/parser/expression/secondary/infix/choice.lua index af3394e..d2bf01b 100644 --- a/parser/expression/secondary/infix/choice.lua +++ b/anselme/parser/expression/secondary/infix/choice.lua @@ -1,8 +1,8 @@ -local infix = require("parser.expression.secondary.infix.infix") +local infix = require("anselme.parser.expression.secondary.infix.infix") -local operator_priority = require("common").operator_priority +local operator_priority = require("anselme.common").operator_priority -local ast = require("ast") +local ast = require("anselme.ast") local Call, Identifier, ArgumentTuple, ParameterTuple, Function = ast.Call, ast.Identifier, ast.ArgumentTuple, ast.ParameterTuple, ast.Function return infix { diff --git a/parser/expression/secondary/infix/definition.lua b/anselme/parser/expression/secondary/infix/definition.lua similarity index 65% rename from parser/expression/secondary/infix/definition.lua rename to anselme/parser/expression/secondary/infix/definition.lua index 3d89334..1d223f3 100644 --- a/parser/expression/secondary/infix/definition.lua +++ b/anselme/parser/expression/secondary/infix/definition.lua @@ -1,9 +1,9 @@ -local infix = require("parser.expression.secondary.infix.infix") -local escape = require("common").escape +local infix = require("anselme.parser.expression.secondary.infix.infix") +local escape = require("anselme.common").escape -local operator_priority = require("common").operator_priority +local operator_priority = require("anselme.common").operator_priority -local ast = require("ast") +local ast = require("anselme.ast") local Definition, Symbol = ast.Definition, ast.Symbol return infix { diff --git a/anselme/parser/expression/secondary/infix/different.lua b/anselme/parser/expression/secondary/infix/different.lua new file mode 100644 index 0000000..77a12ff --- /dev/null +++ b/anselme/parser/expression/secondary/infix/different.lua @@ -0,0 +1,9 @@ +local infix = require("anselme.parser.expression.secondary.infix.infix") + +local operator_priority = require("anselme.common").operator_priority + +return infix { + operator = "!=", + identifier = "_!=_", + priority = operator_priority["_!=_"] +} diff --git a/anselme/parser/expression/secondary/infix/division.lua b/anselme/parser/expression/secondary/infix/division.lua new file mode 100644 index 0000000..d2038ba --- /dev/null +++ b/anselme/parser/expression/secondary/infix/division.lua @@ -0,0 +1,9 @@ +local infix = require("anselme.parser.expression.secondary.infix.infix") + +local operator_priority = require("anselme.common").operator_priority + +return infix { + operator = "/", + identifier = "_/_", + priority = operator_priority["_/_"] +} diff --git a/anselme/parser/expression/secondary/infix/equal.lua b/anselme/parser/expression/secondary/infix/equal.lua new file mode 100644 index 0000000..7ed8620 --- /dev/null +++ b/anselme/parser/expression/secondary/infix/equal.lua @@ -0,0 +1,9 @@ +local infix = require("anselme.parser.expression.secondary.infix.infix") + +local operator_priority = require("anselme.common").operator_priority + +return infix { + operator = "==", + identifier = "_==_", + priority = operator_priority["_==_"] +} diff --git a/anselme/parser/expression/secondary/infix/exponent.lua b/anselme/parser/expression/secondary/infix/exponent.lua new file mode 100644 index 0000000..b964a37 --- /dev/null +++ b/anselme/parser/expression/secondary/infix/exponent.lua @@ -0,0 +1,9 @@ +local infix = require("anselme.parser.expression.secondary.infix.infix") + +local operator_priority = require("anselme.common").operator_priority + +return infix { + operator = "^", + identifier = "_^_", + priority = operator_priority["_^_"] +} diff --git a/anselme/parser/expression/secondary/infix/greater.lua b/anselme/parser/expression/secondary/infix/greater.lua new file mode 100644 index 0000000..c7e94b6 --- /dev/null +++ b/anselme/parser/expression/secondary/infix/greater.lua @@ -0,0 +1,9 @@ +local infix = require("anselme.parser.expression.secondary.infix.infix") + +local operator_priority = require("anselme.common").operator_priority + +return infix { + operator = ">", + identifier = "_>_", + priority = operator_priority["_>_"] +} diff --git a/anselme/parser/expression/secondary/infix/greater_equal.lua b/anselme/parser/expression/secondary/infix/greater_equal.lua new file mode 100644 index 0000000..758d5d5 --- /dev/null +++ b/anselme/parser/expression/secondary/infix/greater_equal.lua @@ -0,0 +1,9 @@ +local infix = require("anselme.parser.expression.secondary.infix.infix") + +local operator_priority = require("anselme.common").operator_priority + +return infix { + operator = ">=", + identifier = "_>=_", + priority = operator_priority["_>=_"] +} diff --git a/anselme/parser/expression/secondary/infix/if.lua b/anselme/parser/expression/secondary/infix/if.lua new file mode 100644 index 0000000..fc7c7ab --- /dev/null +++ b/anselme/parser/expression/secondary/infix/if.lua @@ -0,0 +1,9 @@ +local infix_quote_right = require("anselme.parser.expression.secondary.infix.infix_quote_right") + +local operator_priority = require("anselme.common").operator_priority + +return infix_quote_right { + operator = "~", + identifier = "_~_", + priority = operator_priority["_~_"] +} diff --git a/parser/expression/secondary/infix/implicit_multiplication.lua b/anselme/parser/expression/secondary/infix/implicit_multiplication.lua similarity index 72% rename from parser/expression/secondary/infix/implicit_multiplication.lua rename to anselme/parser/expression/secondary/infix/implicit_multiplication.lua index d0f20f1..ad5a9c7 100644 --- a/parser/expression/secondary/infix/implicit_multiplication.lua +++ b/anselme/parser/expression/secondary/infix/implicit_multiplication.lua @@ -1,9 +1,9 @@ -local infix = require("parser.expression.secondary.infix.infix") -local identifier = require("parser.expression.primary.identifier") +local infix = require("anselme.parser.expression.secondary.infix.infix") +local identifier = require("anselme.parser.expression.primary.identifier") -local operator_priority = require("common").operator_priority +local operator_priority = require("anselme.common").operator_priority -local ast = require("ast") +local ast = require("anselme.ast") local Call, Identifier, ArgumentTuple = ast.Call, ast.Identifier, ast.ArgumentTuple return infix { diff --git a/parser/expression/secondary/infix/index.lua b/anselme/parser/expression/secondary/infix/index.lua similarity index 67% rename from parser/expression/secondary/infix/index.lua rename to anselme/parser/expression/secondary/infix/index.lua index 2f484e4..738f3a6 100644 --- a/parser/expression/secondary/infix/index.lua +++ b/anselme/parser/expression/secondary/infix/index.lua @@ -1,8 +1,8 @@ -local infix = require("parser.expression.secondary.infix.infix") +local infix = require("anselme.parser.expression.secondary.infix.infix") -local operator_priority = require("common").operator_priority +local operator_priority = require("anselme.common").operator_priority -local ast = require("ast") +local ast = require("anselme.ast") local Call, Identifier, ArgumentTuple = ast.Call, ast.Identifier, ast.ArgumentTuple return infix { diff --git a/parser/expression/secondary/infix/infix.lua b/anselme/parser/expression/secondary/infix/infix.lua similarity index 81% rename from parser/expression/secondary/infix/infix.lua rename to anselme/parser/expression/secondary/infix/infix.lua index 8734aa1..18ca2bf 100644 --- a/parser/expression/secondary/infix/infix.lua +++ b/anselme/parser/expression/secondary/infix/infix.lua @@ -1,8 +1,8 @@ -local secondary = require("parser.expression.secondary.secondary") -local escape = require("common").escape -local expression_to_ast = require("parser.expression.to_ast") +local secondary = require("anselme.parser.expression.secondary.secondary") +local escape = require("anselme.common").escape +local expression_to_ast = require("anselme.parser.expression.to_ast") -local ast = require("ast") +local ast = require("anselme.ast") local Call, Identifier, ArgumentTuple = ast.Call, ast.Identifier, ast.ArgumentTuple return secondary { diff --git a/parser/expression/secondary/infix/infix_or_suffix.lua b/anselme/parser/expression/secondary/infix/infix_or_suffix.lua similarity index 84% rename from parser/expression/secondary/infix/infix_or_suffix.lua rename to anselme/parser/expression/secondary/infix/infix_or_suffix.lua index de6246a..20967d2 100644 --- a/parser/expression/secondary/infix/infix_or_suffix.lua +++ b/anselme/parser/expression/secondary/infix/infix_or_suffix.lua @@ -1,9 +1,9 @@ -- same as infix, but skip if no valid expression after the operator instead of erroring -- useful for operators that are both valid as infix and as suffix -local infix = require("parser.expression.secondary.infix.infix") -local escape = require("common").escape -local expression_to_ast = require("parser.expression.to_ast") +local infix = require("anselme.parser.expression.secondary.infix.infix") +local escape = require("anselme.common").escape +local expression_to_ast = require("anselme.parser.expression.to_ast") return infix { -- returns exp, rem if expression found diff --git a/parser/expression/secondary/infix/infix_quote_both.lua b/anselme/parser/expression/secondary/infix/infix_quote_both.lua similarity index 73% rename from parser/expression/secondary/infix/infix_quote_both.lua rename to anselme/parser/expression/secondary/infix/infix_quote_both.lua index 2a97e66..236c7f1 100644 --- a/parser/expression/secondary/infix/infix_quote_both.lua +++ b/anselme/parser/expression/secondary/infix/infix_quote_both.lua @@ -1,6 +1,6 @@ -local infix = require("parser.expression.secondary.infix.infix") +local infix = require("anselme.parser.expression.secondary.infix.infix") -local ast = require("ast") +local ast = require("anselme.ast") local Call, Identifier, ArgumentTuple, Quote = ast.Call, ast.Identifier, ast.ArgumentTuple, ast.Quote return infix { diff --git a/parser/expression/secondary/infix/infix_quote_right.lua b/anselme/parser/expression/secondary/infix/infix_quote_right.lua similarity index 71% rename from parser/expression/secondary/infix/infix_quote_right.lua rename to anselme/parser/expression/secondary/infix/infix_quote_right.lua index c743547..6399d0a 100644 --- a/parser/expression/secondary/infix/infix_quote_right.lua +++ b/anselme/parser/expression/secondary/infix/infix_quote_right.lua @@ -1,6 +1,6 @@ -local infix = require("parser.expression.secondary.infix.infix") +local infix = require("anselme.parser.expression.secondary.infix.infix") -local ast = require("ast") +local ast = require("anselme.ast") local Call, Identifier, ArgumentTuple, Quote = ast.Call, ast.Identifier, ast.ArgumentTuple, ast.Quote return infix { diff --git a/anselme/parser/expression/secondary/infix/integer_division.lua b/anselme/parser/expression/secondary/infix/integer_division.lua new file mode 100644 index 0000000..e7dc538 --- /dev/null +++ b/anselme/parser/expression/secondary/infix/integer_division.lua @@ -0,0 +1,9 @@ +local infix = require("anselme.parser.expression.secondary.infix.infix") + +local operator_priority = require("anselme.common").operator_priority + +return infix { + operator = "//", + identifier = "_//_", + priority = operator_priority["_//_"] +} diff --git a/anselme/parser/expression/secondary/infix/lower.lua b/anselme/parser/expression/secondary/infix/lower.lua new file mode 100644 index 0000000..1368100 --- /dev/null +++ b/anselme/parser/expression/secondary/infix/lower.lua @@ -0,0 +1,9 @@ +local infix = require("anselme.parser.expression.secondary.infix.infix") + +local operator_priority = require("anselme.common").operator_priority + +return infix { + operator = "<", + identifier = "_<_", + priority = operator_priority["_<_"] +} diff --git a/anselme/parser/expression/secondary/infix/lower_equal.lua b/anselme/parser/expression/secondary/infix/lower_equal.lua new file mode 100644 index 0000000..79c64c6 --- /dev/null +++ b/anselme/parser/expression/secondary/infix/lower_equal.lua @@ -0,0 +1,9 @@ +local infix = require("anselme.parser.expression.secondary.infix.infix") + +local operator_priority = require("anselme.common").operator_priority + +return infix { + operator = "<=", + identifier = "_<=_", + priority = operator_priority["_<=_"] +} diff --git a/anselme/parser/expression/secondary/infix/modulo.lua b/anselme/parser/expression/secondary/infix/modulo.lua new file mode 100644 index 0000000..786fb3f --- /dev/null +++ b/anselme/parser/expression/secondary/infix/modulo.lua @@ -0,0 +1,9 @@ +local infix = require("anselme.parser.expression.secondary.infix.infix") + +local operator_priority = require("anselme.common").operator_priority + +return infix { + operator = "%", + identifier = "_%_", + priority = operator_priority["_%_"] +} diff --git a/anselme/parser/expression/secondary/infix/multiplication.lua b/anselme/parser/expression/secondary/infix/multiplication.lua new file mode 100644 index 0000000..f542a02 --- /dev/null +++ b/anselme/parser/expression/secondary/infix/multiplication.lua @@ -0,0 +1,9 @@ +local infix = require("anselme.parser.expression.secondary.infix.infix") + +local operator_priority = require("anselme.common").operator_priority + +return infix { + operator = "*", + identifier = "_*_", + priority = operator_priority["_*_"] +} diff --git a/anselme/parser/expression/secondary/infix/or.lua b/anselme/parser/expression/secondary/infix/or.lua new file mode 100644 index 0000000..610f48e --- /dev/null +++ b/anselme/parser/expression/secondary/infix/or.lua @@ -0,0 +1,9 @@ +local infix_quote_right = require("anselme.parser.expression.secondary.infix.infix_quote_right") + +local operator_priority = require("anselme.common").operator_priority + +return infix_quote_right { + operator = "|", + identifier = "_|_", + priority = operator_priority["_|_"] +} diff --git a/anselme/parser/expression/secondary/infix/pair.lua b/anselme/parser/expression/secondary/infix/pair.lua new file mode 100644 index 0000000..60b547c --- /dev/null +++ b/anselme/parser/expression/secondary/infix/pair.lua @@ -0,0 +1,9 @@ +local infix = require("anselme.parser.expression.secondary.infix.infix") + +local operator_priority = require("anselme.common").operator_priority + +return infix { + operator = ":", + identifier = "_:_", + priority = operator_priority["_:_"] +} diff --git a/anselme/parser/expression/secondary/infix/resume.lua b/anselme/parser/expression/secondary/infix/resume.lua new file mode 100644 index 0000000..593622a --- /dev/null +++ b/anselme/parser/expression/secondary/infix/resume.lua @@ -0,0 +1,9 @@ +local infix_quote_right = require("anselme.parser.expression.secondary.infix.infix_quote_right") + +local operator_priority = require("anselme.common").operator_priority + +return infix_quote_right { + operator = "~>", + identifier = "_~>_", + priority = operator_priority["_~>_"] +} diff --git a/anselme/parser/expression/secondary/infix/semicolon.lua b/anselme/parser/expression/secondary/infix/semicolon.lua new file mode 100644 index 0000000..17c0d5e --- /dev/null +++ b/anselme/parser/expression/secondary/infix/semicolon.lua @@ -0,0 +1,9 @@ +local infix_or_suffix = require("anselme.parser.expression.secondary.infix.infix_or_suffix") + +local operator_priority = require("anselme.common").operator_priority + +return infix_or_suffix { + operator = ";", + identifier = "_;_", + priority = operator_priority["_;_"] +} diff --git a/anselme/parser/expression/secondary/infix/substraction.lua b/anselme/parser/expression/secondary/infix/substraction.lua new file mode 100644 index 0000000..2d900fa --- /dev/null +++ b/anselme/parser/expression/secondary/infix/substraction.lua @@ -0,0 +1,9 @@ +local infix = require("anselme.parser.expression.secondary.infix.infix") + +local operator_priority = require("anselme.common").operator_priority + +return infix { + operator = "-", + identifier = "_-_", + priority = operator_priority["_-_"] +} diff --git a/anselme/parser/expression/secondary/infix/tag.lua b/anselme/parser/expression/secondary/infix/tag.lua new file mode 100644 index 0000000..77aa48d --- /dev/null +++ b/anselme/parser/expression/secondary/infix/tag.lua @@ -0,0 +1,9 @@ +local infix_quote_right = require("anselme.parser.expression.secondary.infix.infix_quote_right") + +local operator_priority = require("anselme.common").operator_priority + +return infix_quote_right { + operator = "#", + identifier = "_#_", + priority = operator_priority["_#_"] +} diff --git a/anselme/parser/expression/secondary/infix/translate.lua b/anselme/parser/expression/secondary/infix/translate.lua new file mode 100644 index 0000000..f44c8d3 --- /dev/null +++ b/anselme/parser/expression/secondary/infix/translate.lua @@ -0,0 +1,9 @@ +local infix_quote_both = require("anselme.parser.expression.secondary.infix.infix_quote_both") + +local operator_priority = require("anselme.common").operator_priority + +return infix_quote_both { + operator = "->", + identifier = "_->_", + priority = operator_priority["_->_"] +} diff --git a/parser/expression/secondary/infix/tuple.lua b/anselme/parser/expression/secondary/infix/tuple.lua similarity index 74% rename from parser/expression/secondary/infix/tuple.lua rename to anselme/parser/expression/secondary/infix/tuple.lua index 9f9c564..831d4e2 100644 --- a/parser/expression/secondary/infix/tuple.lua +++ b/anselme/parser/expression/secondary/infix/tuple.lua @@ -1,10 +1,10 @@ -local infix = require("parser.expression.secondary.infix.infix") -local escape = require("common").escape -local expression_to_ast = require("parser.expression.to_ast") +local infix = require("anselme.parser.expression.secondary.infix.infix") +local escape = require("anselme.common").escape +local expression_to_ast = require("anselme.parser.expression.to_ast") -local operator_priority = require("common").operator_priority +local operator_priority = require("anselme.common").operator_priority -local ast = require("ast") +local ast = require("anselme.ast") local Tuple = ast.Tuple return infix { diff --git a/anselme/parser/expression/secondary/infix/type_check.lua b/anselme/parser/expression/secondary/infix/type_check.lua new file mode 100644 index 0000000..22a9706 --- /dev/null +++ b/anselme/parser/expression/secondary/infix/type_check.lua @@ -0,0 +1,9 @@ +local infix = require("anselme.parser.expression.secondary.infix.infix") + +local operator_priority = require("anselme.common").operator_priority + +return infix { + operator = "::", + identifier = "_::_", + priority = operator_priority["_::_"] +} diff --git a/anselme/parser/expression/secondary/infix/while.lua b/anselme/parser/expression/secondary/infix/while.lua new file mode 100644 index 0000000..464dbb2 --- /dev/null +++ b/anselme/parser/expression/secondary/infix/while.lua @@ -0,0 +1,9 @@ +local infix_quote_both = require("anselme.parser.expression.secondary.infix.infix_quote_both") + +local operator_priority = require("anselme.common").operator_priority + +return infix_quote_both { + operator = "~?", + identifier = "_~?_", + priority = operator_priority["_~?_"] +} diff --git a/parser/expression/secondary/init.lua b/anselme/parser/expression/secondary/init.lua similarity index 96% rename from parser/expression/secondary/init.lua rename to anselme/parser/expression/secondary/init.lua index a249870..65327cd 100644 --- a/parser/expression/secondary/init.lua +++ b/anselme/parser/expression/secondary/init.lua @@ -1,7 +1,7 @@ --- try to parse a secondary expression local function r(name) - return require("parser.expression.secondary."..name), nil + return require("anselme.parser.expression.secondary."..name), nil end local secondaries = { diff --git a/parser/expression/secondary/secondary.lua b/anselme/parser/expression/secondary/secondary.lua similarity index 96% rename from parser/expression/secondary/secondary.lua rename to anselme/parser/expression/secondary/secondary.lua index c058cb2..d811f7a 100644 --- a/parser/expression/secondary/secondary.lua +++ b/anselme/parser/expression/secondary/secondary.lua @@ -1,4 +1,4 @@ -local class = require("class") +local class = require("anselme.lib.class") return class { new = false, -- static class diff --git a/parser/expression/secondary/suffix/call.lua b/anselme/parser/expression/secondary/suffix/call.lua similarity index 78% rename from parser/expression/secondary/suffix/call.lua rename to anselme/parser/expression/secondary/suffix/call.lua index a751401..7f634c7 100644 --- a/parser/expression/secondary/suffix/call.lua +++ b/anselme/parser/expression/secondary/suffix/call.lua @@ -1,11 +1,11 @@ -- index/call -local secondary = require("parser.expression.secondary.secondary") -local parenthesis = require("parser.expression.primary.parenthesis") +local secondary = require("anselme.parser.expression.secondary.secondary") +local parenthesis = require("anselme.parser.expression.primary.parenthesis") -local operator_priority = require("common").operator_priority +local operator_priority = require("anselme.common").operator_priority -local ast = require("ast") +local ast = require("anselme.ast") local Call, ArgumentTuple, Tuple, Assignment, Nil = ast.Call, ast.ArgumentTuple, ast.Tuple, ast.Assignment, ast.Nil return secondary { diff --git a/parser/expression/secondary/suffix/exclamation_call.lua b/anselme/parser/expression/secondary/suffix/exclamation_call.lua similarity index 54% rename from parser/expression/secondary/suffix/exclamation_call.lua rename to anselme/parser/expression/secondary/suffix/exclamation_call.lua index 377426f..959cf8d 100644 --- a/parser/expression/secondary/suffix/exclamation_call.lua +++ b/anselme/parser/expression/secondary/suffix/exclamation_call.lua @@ -1,8 +1,8 @@ -local suffix = require("parser.expression.secondary.suffix.suffix") +local suffix = require("anselme.parser.expression.secondary.suffix.suffix") -local operator_priority = require("common").operator_priority +local operator_priority = require("anselme.common").operator_priority -local ast = require("ast") +local ast = require("anselme.ast") local Call, ArgumentTuple = ast.Call, ast.ArgumentTuple return suffix { diff --git a/anselme/parser/expression/secondary/suffix/semicolon.lua b/anselme/parser/expression/secondary/suffix/semicolon.lua new file mode 100644 index 0000000..823b1eb --- /dev/null +++ b/anselme/parser/expression/secondary/suffix/semicolon.lua @@ -0,0 +1,9 @@ +local suffix = require("anselme.parser.expression.secondary.suffix.suffix") + +local operator_priority = require("anselme.common").operator_priority + +return suffix { + operator = ";", + identifier = "_;", + priority = operator_priority["_;"] +} diff --git a/parser/expression/secondary/suffix/suffix.lua b/anselme/parser/expression/secondary/suffix/suffix.lua similarity index 83% rename from parser/expression/secondary/suffix/suffix.lua rename to anselme/parser/expression/secondary/suffix/suffix.lua index 9bb67e6..e8d8e00 100644 --- a/parser/expression/secondary/suffix/suffix.lua +++ b/anselme/parser/expression/secondary/suffix/suffix.lua @@ -1,9 +1,9 @@ -- unary suffix operators, for example the ! in func! -local secondary = require("parser.expression.secondary.secondary") -local escape = require("common").escape +local secondary = require("anselme.parser.expression.secondary.secondary") +local escape = require("anselme.common").escape -local ast = require("ast") +local ast = require("anselme.ast") local Call, Identifier, ArgumentTuple = ast.Call, ast.Identifier, ast.ArgumentTuple return secondary { diff --git a/parser/expression/to_ast.lua b/anselme/parser/expression/to_ast.lua similarity index 93% rename from parser/expression/to_ast.lua rename to anselme/parser/expression/to_ast.lua index f3d0a9f..bf5804d 100644 --- a/parser/expression/to_ast.lua +++ b/anselme/parser/expression/to_ast.lua @@ -2,7 +2,7 @@ local primary, secondary -local comment = require("parser.expression.comment") +local comment = require("anselme.parser.expression.comment") -- parse an expression, starting from a secondary element operating on operating_on_primary -- returns expr, remaining @@ -40,8 +40,8 @@ end package.loaded[...] = expression_to_ast -primary = require("parser.expression.primary") -secondary = require("parser.expression.secondary") +primary = require("anselme.parser.expression.primary") +secondary = require("anselme.parser.expression.secondary") -- return expr, remaining return function(source, s, limit_pattern, current_priority, operating_on_primary, fallback_exp) diff --git a/parser/init.lua b/anselme/parser/init.lua similarity index 70% rename from parser/init.lua rename to anselme/parser/init.lua index 2938087..4787d26 100644 --- a/parser/init.lua +++ b/anselme/parser/init.lua @@ -1,5 +1,5 @@ -local code_to_tree = require("parser.code_to_tree") -local tree_to_ast = require("parser.tree_to_ast") +local code_to_tree = require("anselme.parser.code_to_tree") +local tree_to_ast = require("anselme.parser.tree_to_ast") -- parse code (string) with the associated source (Source) -- the returned AST tree is stateless and can be stored/evaluated/etc as you please diff --git a/parser/tree_to_ast.lua b/anselme/parser/tree_to_ast.lua similarity index 92% rename from parser/tree_to_ast.lua rename to anselme/parser/tree_to_ast.lua index 0d4e86a..9e20077 100644 --- a/parser/tree_to_ast.lua +++ b/anselme/parser/tree_to_ast.lua @@ -2,10 +2,10 @@ local tree_to_block -local ast = require("ast") +local ast = require("anselme.ast") local Block, Flush, PartialScope -local expression_to_ast = require("parser.expression.to_ast") +local expression_to_ast = require("anselme.parser.expression.to_ast") -- wrapper for expression_to_ast to check that there is no crap remaining after the expression has been parsed -- return AST diff --git a/state/ScopeStack.lua b/anselme/state/ScopeStack.lua similarity index 92% rename from state/ScopeStack.lua rename to anselme/state/ScopeStack.lua index 8883cdd..bee26cd 100644 --- a/state/ScopeStack.lua +++ b/anselme/state/ScopeStack.lua @@ -1,14 +1,15 @@ -- The current scope stack. One scope stack per State branch. -- Only the scope currently on top of the stack will be used by the running script. -local class = require("class") -local ast = require("ast") -local to_anselme = require("common.to_anselme") +local class = require("anselme.lib.class") +local ast = require("anselme.ast") +local to_anselme = require("anselme.common.to_anselme") +local unpack = table.unpack or unpack local LuaFunction, Environment, Node -local parameter_tuple = require("parser.expression.contextual.parameter_tuple") -local symbol = require("parser.expression.primary.symbol") +local parameter_tuple = require("anselme.parser.expression.contextual.parameter_tuple") +local symbol = require("anselme.parser.expression.primary.symbol") local ScopeStack = class { state = nil, @@ -49,7 +50,7 @@ local ScopeStack = class { -- if `raw_mode` is true, no anselme-to/from-lua conversion will be performed in the function -- the function will receive the state followed by AST nodes as arguments, and is expected to return an AST node define_lua = function(self, name, value, func, raw_mode) - local source = require("parser.Source"):new() + local source = require("anselme.parser.Source"):new() local sym = symbol:parse(source, (":%s"):format(name)) if func then local parameters = parameter_tuple:parse(source, value) @@ -60,7 +61,7 @@ local ScopeStack = class { for _, arg in ipairs{...} do table.insert(lua_args, arg:to_lua(state)) end - return to_anselme(original_func(table.unpack(lua_args))) + return to_anselme(original_func(unpack(lua_args))) end end self:define_overloadable(sym, LuaFunction:new(parameters, func):eval(self.state)) diff --git a/state/State.lua b/anselme/state/State.lua similarity index 94% rename from state/State.lua rename to anselme/state/State.lua index 53dacf6..fb127f3 100644 --- a/state/State.lua +++ b/anselme/state/State.lua @@ -1,15 +1,15 @@ --- Contains all state relative to an Anselme interpreter. Each State is fully independant from each other. -- Each State can run a single script at a time, and variable changes are isolated between each State (see [branching](#branching-and-merging)). -local class = require("class") -local ScopeStack = require("state.ScopeStack") -local tag_manager = require("state.tag_manager") -local event_manager = require("state.event_manager") -local translation_manager = require("state.translation_manager") -local persistent_manager = require("state.persistent_manager") -local uuid = require("common").uuid -local parser = require("parser") -local binser = require("lib.binser") +local class = require("anselme.lib.class") +local ScopeStack = require("anselme.state.ScopeStack") +local tag_manager = require("anselme.state.tag_manager") +local event_manager = require("anselme.state.event_manager") +local translation_manager = require("anselme.state.translation_manager") +local persistent_manager = require("anselme.state.persistent_manager") +local uuid = require("anselme.common").uuid +local parser = require("anselme.parser") +local binser = require("anselme.lib.binser") local anselme -- same as assert, but do not add position information @@ -48,7 +48,7 @@ State = class { --- Load standard library. -- You will probably want to call this on every State right after creation. load_stdlib = function(self) - require("stdlib")(self) + require("anselme.stdlib")(self) end, ---## Branching and merging diff --git a/state/event_manager.lua b/anselme/state/event_manager.lua similarity index 97% rename from state/event_manager.lua rename to anselme/state/event_manager.lua index 9646c84..7b828b5 100644 --- a/state/event_manager.lua +++ b/anselme/state/event_manager.lua @@ -1,6 +1,6 @@ -local class = require("class") +local class = require("anselme.lib.class") -local ast = require("ast") +local ast = require("anselme.ast") local Nil, String, List, Identifier, Boolean = ast.Nil, ast.String, ast.List, ast.Identifier, ast.Boolean -- list of event data diff --git a/state/persistent_manager.lua b/anselme/state/persistent_manager.lua similarity index 94% rename from state/persistent_manager.lua rename to anselme/state/persistent_manager.lua index c43182d..c936c67 100644 --- a/state/persistent_manager.lua +++ b/anselme/state/persistent_manager.lua @@ -1,6 +1,6 @@ -local class = require("class") +local class = require("anselme.lib.class") -local ast = require("ast") +local ast = require("anselme.ast") local Table, Identifier local persistent_identifier, persistent_symbol diff --git a/state/resume_manager.lua b/anselme/state/resume_manager.lua similarity index 95% rename from state/resume_manager.lua rename to anselme/state/resume_manager.lua index 259cd73..a03e5af 100644 --- a/state/resume_manager.lua +++ b/anselme/state/resume_manager.lua @@ -1,6 +1,6 @@ -local class = require("class") +local class = require("anselme.lib.class") -local ast = require("ast") +local ast = require("anselme.ast") local Nil, Identifier, Anchor -- stack of resumable contexts diff --git a/state/tag_manager.lua b/anselme/state/tag_manager.lua similarity index 90% rename from state/tag_manager.lua rename to anselme/state/tag_manager.lua index a5988ef..bb9c9a6 100644 --- a/state/tag_manager.lua +++ b/anselme/state/tag_manager.lua @@ -1,6 +1,6 @@ -local class = require("class") +local class = require("anselme.lib.class") -local ast = require("ast") +local ast = require("anselme.ast") local Struct, Identifier local tag_identifier, tag_symbol diff --git a/state/translation_manager.lua b/anselme/state/translation_manager.lua similarity index 97% rename from state/translation_manager.lua rename to anselme/state/translation_manager.lua index a1e8b57..751f3cf 100644 --- a/state/translation_manager.lua +++ b/anselme/state/translation_manager.lua @@ -1,6 +1,6 @@ -local class = require("class") +local class = require("anselme.lib.class") -local ast = require("ast") +local ast = require("anselme.ast") local Table, Identifier local translations_identifier, translations_symbol diff --git a/stdlib/base.lua b/anselme/stdlib/base.lua similarity index 97% rename from stdlib/base.lua rename to anselme/stdlib/base.lua index db181b2..29b0329 100644 --- a/stdlib/base.lua +++ b/anselme/stdlib/base.lua @@ -1,4 +1,4 @@ -local ast = require("ast") +local ast = require("anselme.ast") local Pair, ArgumentTuple, Nil, String, Typed, Boolean = ast.Pair, ast.ArgumentTuple, ast.Nil, ast.String, ast.Typed, ast.Boolean return { diff --git a/stdlib/boolean.lua b/anselme/stdlib/boolean.lua similarity index 95% rename from stdlib/boolean.lua rename to anselme/stdlib/boolean.lua index 9500f4e..b797716 100644 --- a/stdlib/boolean.lua +++ b/anselme/stdlib/boolean.lua @@ -1,4 +1,4 @@ -local ast = require("ast") +local ast = require("anselme.ast") local Boolean, ArgumentTuple = ast.Boolean, ast.ArgumentTuple return { diff --git a/stdlib/boot.ans b/anselme/stdlib/boot_script.lua similarity index 80% rename from stdlib/boot.ans rename to anselme/stdlib/boot_script.lua index 4115747..a771ad1 100644 --- a/stdlib/boot.ans +++ b/anselme/stdlib/boot_script.lua @@ -1,2 +1,4 @@ +return [[ :@$is(t) $(x) x!type == t :@$equal(x) $(y) x == y +]] \ No newline at end of file diff --git a/stdlib/checkpoint.lua b/anselme/stdlib/checkpoint.lua similarity index 80% rename from stdlib/checkpoint.lua rename to anselme/stdlib/checkpoint.lua index bca3b43..a57af8f 100644 --- a/stdlib/checkpoint.lua +++ b/anselme/stdlib/checkpoint.lua @@ -1,7 +1,7 @@ -local ast = require("ast") +local ast = require("anselme.ast") local ArgumentTuple = ast.ArgumentTuple -local resume_manager = require("state.resume_manager") +local resume_manager = require("anselme.state.resume_manager") return { { diff --git a/stdlib/closure.lua b/anselme/stdlib/closure.lua similarity index 97% rename from stdlib/closure.lua rename to anselme/stdlib/closure.lua index 97b1662..e6aab2f 100644 --- a/stdlib/closure.lua +++ b/anselme/stdlib/closure.lua @@ -1,4 +1,4 @@ -local ast = require("ast") +local ast = require("anselme.ast") local Nil, Boolean, Definition = ast.Nil, ast.Boolean, ast.Definition return { diff --git a/stdlib/conditionals.lua b/anselme/stdlib/conditionals.lua similarity index 97% rename from stdlib/conditionals.lua rename to anselme/stdlib/conditionals.lua index 6600210..d3a673a 100644 --- a/stdlib/conditionals.lua +++ b/anselme/stdlib/conditionals.lua @@ -1,4 +1,4 @@ -local ast = require("ast") +local ast = require("anselme.ast") local ArgumentTuple, Nil, Boolean, Identifier, Return = ast.ArgumentTuple, ast.Nil, ast.Boolean, ast.Identifier, ast.Return local if_identifier = Identifier:new("_if_status") diff --git a/stdlib/init.lua b/anselme/stdlib/init.lua similarity index 71% rename from stdlib/init.lua rename to anselme/stdlib/init.lua index f423579..4efbac9 100644 --- a/stdlib/init.lua +++ b/anselme/stdlib/init.lua @@ -1,4 +1,4 @@ -local parser = require("parser") +local parser = require("anselme.parser") local function define_lua(state, list) for _, fn in ipairs(list) do @@ -7,7 +7,7 @@ local function define_lua(state, list) end local function load(state, l) for _, m in ipairs(l) do - define_lua(state, require("stdlib."..m)) + define_lua(state, require("anselme.stdlib."..m)) end end @@ -20,9 +20,7 @@ return function(main_state) "type_check" }) - local f = assert(io.open("stdlib/boot.ans")) - local boot = parser(f:read("*a"), "boot.ans") - f:close() + local boot = parser(require("anselme.stdlib.boot_script"), "boot.ans") boot:eval(main_state) load(main_state, { diff --git a/stdlib/number.lua b/anselme/stdlib/number.lua similarity index 98% rename from stdlib/number.lua rename to anselme/stdlib/number.lua index 7e79b1d..5325ebf 100644 --- a/stdlib/number.lua +++ b/anselme/stdlib/number.lua @@ -1,4 +1,4 @@ -local ast = require("ast") +local ast = require("anselme.ast") local Boolean, Number = ast.Boolean, ast.Number return { diff --git a/stdlib/persist.lua b/anselme/stdlib/persist.lua similarity index 83% rename from stdlib/persist.lua rename to anselme/stdlib/persist.lua index ce2c885..8582a8a 100644 --- a/stdlib/persist.lua +++ b/anselme/stdlib/persist.lua @@ -1,6 +1,6 @@ -local ast = require("ast") +local ast = require("anselme.ast") -local persistent_manager = require("state.persistent_manager") +local persistent_manager = require("anselme.state.persistent_manager") return { { diff --git a/stdlib/string.lua b/anselme/stdlib/string.lua similarity index 80% rename from stdlib/string.lua rename to anselme/stdlib/string.lua index 6855146..1759355 100644 --- a/stdlib/string.lua +++ b/anselme/stdlib/string.lua @@ -1,4 +1,4 @@ -local ast = require("ast") +local ast = require("anselme.ast") local String = ast.String return { diff --git a/stdlib/structures.lua b/anselme/stdlib/structures.lua similarity index 97% rename from stdlib/structures.lua rename to anselme/stdlib/structures.lua index f0d4c6b..507bba3 100644 --- a/stdlib/structures.lua +++ b/anselme/stdlib/structures.lua @@ -1,4 +1,4 @@ -local ast = require("ast") +local ast = require("anselme.ast") local Nil, List, Table, Number = ast.Nil, ast.List, ast.Table, ast.Number return { diff --git a/stdlib/tag.lua b/anselme/stdlib/tag.lua similarity index 88% rename from stdlib/tag.lua rename to anselme/stdlib/tag.lua index ae400cb..c8a62e6 100644 --- a/stdlib/tag.lua +++ b/anselme/stdlib/tag.lua @@ -1,7 +1,7 @@ -local ast = require("ast") +local ast = require("anselme.ast") local Tuple, Table, Struct, ArgumentTuple, Nil = ast.Tuple, ast.Table, ast.Struct, ast.ArgumentTuple, ast.Nil -local tag_manager = require("state.tag_manager") +local tag_manager = require("anselme.state.tag_manager") return { { diff --git a/stdlib/text.lua b/anselme/stdlib/text.lua similarity index 80% rename from stdlib/text.lua rename to anselme/stdlib/text.lua index 4b892b9..fd2ea75 100644 --- a/stdlib/text.lua +++ b/anselme/stdlib/text.lua @@ -1,9 +1,9 @@ -local ast = require("ast") +local ast = require("anselme.ast") local Nil, Choice, PartialScope, ArgumentTuple = ast.Nil, ast.Choice, ast.PartialScope, ast.ArgumentTuple -local event_manager = require("state.event_manager") -local translation_manager = require("state.translation_manager") -local tag_manager = require("state.tag_manager") +local event_manager = require("anselme.state.event_manager") +local translation_manager = require("anselme.state.translation_manager") +local tag_manager = require("anselme.state.tag_manager") return { -- text diff --git a/stdlib/type_check.lua b/anselme/stdlib/type_check.lua similarity index 97% rename from stdlib/type_check.lua rename to anselme/stdlib/type_check.lua index faad07e..0ff79bd 100644 --- a/stdlib/type_check.lua +++ b/anselme/stdlib/type_check.lua @@ -1,4 +1,4 @@ -local ast = require("ast") +local ast = require("anselme.ast") local Boolean = ast.Boolean return { diff --git a/doc/api.md b/doc/api.md index c9c0617..dafa8f2 100644 --- a/doc/api.md +++ b/doc/api.md @@ -45,35 +45,42 @@ while run_state:active() do end ``` +If `require("anselme")` fails with an error similar to `module 'anselme' not found`, you might need to redefine `package.path` before the require: +```lua +package.path = "path/?/init.lua;path/?.lua;" .. package.path -- where path is the directory where anselme is located +require("anselme") +``` +Anselme expects that `require("anselme.module")` will try loading both `anselme/module/init.lua` and `anselme/module.lua`, which may not be the case without the above code as `package.path`'s default value is system dependent, i.e. not my problem. + ### .version Global version string. Follow semver. -_defined at line 57 of [anselme.lua](../anselme.lua):_ `version = "2.0.0-alpha",` +_defined at line 57 of [anselme/init.lua](../anselme/init.lua):_ `version = "2.0.0-alpha",` ### .versions Table containing per-category version numbers. Incremented by one for any change that may break compatibility. -_defined at line 60 of [anselme.lua](../anselme.lua):_ `versions = {` +_defined at line 60 of [anselme/init.lua](../anselme/init.lua):_ `versions = {` #### .language Version number for languages and standard library changes. -_defined at line 62 of [anselme.lua](../anselme.lua):_ `language = 27,` +_defined at line 62 of [anselme/init.lua](../anselme/init.lua):_ `language = 27,` #### .save Version number for save/AST format changes. -_defined at line 64 of [anselme.lua](../anselme.lua):_ `save = 4,` +_defined at line 64 of [anselme/init.lua](../anselme/init.lua):_ `save = 4,` #### .api Version number for Lua API changes. -_defined at line 66 of [anselme.lua](../anselme.lua):_ `api = 8` +_defined at line 66 of [anselme/init.lua](../anselme/init.lua):_ `api = 8` ### .parse (code, source) @@ -87,17 +94,17 @@ local ast = anselme.parse("1 + 2", "test") ast:eval() ``` -_defined at line 78 of [anselme.lua](../anselme.lua):_ `parse = function(code, source)` +_defined at line 78 of [anselme/init.lua](../anselme/init.lua):_ `parse = function(code, source)` ### .new () Return a new [State](#state). -_defined at line 82 of [anselme.lua](../anselme.lua):_ `new = function()` +_defined at line 82 of [anselme/init.lua](../anselme/init.lua):_ `new = function()` --- -_file generated at 2023-12-28T16:41:42Z_ +_file generated at 2023-12-29T17:36:31Z_ # State @@ -109,7 +116,7 @@ Each State can run a single script at a time, and variable changes are isolated Load standard library. You will probably want to call this on every State right after creation. -_defined at line 41 of [state/State.lua](../state/State.lua):_ `load_stdlib = function(self)` +_defined at line 50 of [anselme/state/State.lua](../anselme/state/State.lua):_ `load_stdlib = function(self)` ## Branching and merging @@ -117,13 +124,13 @@ _defined at line 41 of [state/State.lua](../state/State.lua):_ `load_stdlib = fu Name of the branch associated to this State. -_defined at line 48 of [state/State.lua](../state/State.lua):_ `branch_id = "main",` +_defined at line 57 of [anselme/state/State.lua](../anselme/state/State.lua):_ `branch_id = "main",` ### .source_branch_id Name of the branch this State was branched from. -_defined at line 50 of [state/State.lua](../state/State.lua):_ `source_branch_id = "main",` +_defined at line 59 of [anselme/state/State.lua](../anselme/state/State.lua):_ `source_branch_id = "main",` ### :branch () @@ -132,7 +139,7 @@ Return a new branch of this State. Branches act as indepent copies of this State where any change will not be reflected in the source State until it is merged back into the source branch. Note: probably makes the most sense to create branches from the main State only. -_defined at line 56 of [state/State.lua](../state/State.lua):_ `branch = function(self)` +_defined at line 65 of [anselme/state/State.lua](../anselme/state/State.lua):_ `branch = function(self)` ### :merge () @@ -142,7 +149,7 @@ Recommendation: only merge if you know that the state of the variables is consis If your script errored or was interrupted at an unknown point in the script, you might be in the middle of a calculation and variables won't contain values you want to merge. -_defined at line 65 of [state/State.lua](../state/State.lua):_ `merge = function(self)` +_defined at line 74 of [anselme/state/State.lua](../anselme/state/State.lua):_ `merge = function(self)` ## Variable definition @@ -159,13 +166,13 @@ Define a value in the global scope, converting it from Lua to Anselme if needed. If `raw_mode` is true, no anselme-to/from-lua conversion will be performed in the function. The function will receive the state followed by AST nodes as arguments, and is expected to return an AST node. -_defined at line 83 of [state/State.lua](../state/State.lua):_ `define = function(self, name, value, func, raw_mode)` +_defined at line 92 of [anselme/state/State.lua](../anselme/state/State.lua):_ `define = function(self, name, value, func, raw_mode)` ### :define_local (name, value, func, raw_mode) Same as `:define`, but define the expression in the current scope. -_defined at line 89 of [state/State.lua](../state/State.lua):_ `define_local = function(self, name, value, func, raw_mode)` +_defined at line 98 of [anselme/state/State.lua](../anselme/state/State.lua):_ `define_local = function(self, name, value, func, raw_mode)` For anything more advanced, you can directly access the current scope stack stored in `state.scope`. See [state/ScopeStack.lua](../state/ScopeStack.lua) for details; the documentation is not as polished as this file but you should still be able to find your way around. @@ -178,7 +185,7 @@ Return a serialized (string) representation of all persistent variables in this This can be loaded back later using `:load`. -_defined at line 101 of [state/State.lua](../state/State.lua):_ `save = function(self)` +_defined at line 110 of [anselme/state/State.lua](../anselme/state/State.lua):_ `save = function(self)` ### :load (save) @@ -186,7 +193,7 @@ Load a string generated by `:save`. Variables that already exist will be overwritten with the loaded data. -_defined at line 108 of [state/State.lua](../state/State.lua):_ `load = function(self, save)` +_defined at line 117 of [anselme/state/State.lua](../anselme/state/State.lua):_ `load = function(self, save)` ## Current script state @@ -194,7 +201,7 @@ _defined at line 108 of [state/State.lua](../state/State.lua):_ `load = function Indicate if a script is currently loaded in this branch. -_defined at line 122 of [state/State.lua](../state/State.lua):_ `active = function(self)` +_defined at line 131 of [anselme/state/State.lua](../anselme/state/State.lua):_ `active = function(self)` ### :state () @@ -204,7 +211,7 @@ Returns `"active"` if a script is loaded but not currently running (i.e. the scr Returns `"inactive"` if no script is loaded. -_defined at line 130 of [state/State.lua](../state/State.lua):_ `state = function(self)` +_defined at line 139 of [anselme/state/State.lua](../anselme/state/State.lua):_ `state = function(self)` ### :run (code, source) @@ -214,7 +221,7 @@ Load a script in this branch. It will become the active script. Note that this will only load the script; execution will only start by using the `:step` method. Will error if a script is already active in this State. -_defined at line 142 of [state/State.lua](../state/State.lua):_ `run = function(self, code, source)` +_defined at line 151 of [anselme/state/State.lua](../anselme/state/State.lua):_ `run = function(self, code, source)` ### :step () @@ -224,7 +231,7 @@ Will error if no script is active. Returns `event type string, event data`. -_defined at line 155 of [state/State.lua](../state/State.lua):_ `step = function(self)` +_defined at line 164 of [anselme/state/State.lua](../anselme/state/State.lua):_ `step = function(self)` ### :interrupt (code, source) @@ -235,7 +242,7 @@ Will error if no script is active. If `code` is given, the script will not be disabled but instead will be immediately replaced with this new script. The new script will then be started on the next `:step` and will preserve the current scope. This can be used to trigger an exit function or similar in the active script. -_defined at line 173 of [state/State.lua](../state/State.lua):_ `interrupt = function(self, code, source)` +_defined at line 182 of [anselme/state/State.lua](../anselme/state/State.lua):_ `interrupt = function(self, code, source)` ### :eval (code, source) @@ -246,13 +253,13 @@ This can be called from outside a running script, but an error will be triggered * returns AST in case of success. Run `:to_lua(state)` on it to convert to a Lua value. * returns `nil, error message` in case of error. -_defined at line 194 of [state/State.lua](../state/State.lua):_ `eval = function(self, code, source)` +_defined at line 203 of [anselme/state/State.lua](../anselme/state/State.lua):_ `eval = function(self, code, source)` ### :eval_local (code, source) Same as `:eval`, but evaluate the expression in the current scope. -_defined at line 201 of [state/State.lua](../state/State.lua):_ `eval_local = function(self, code, source)` +_defined at line 210 of [anselme/state/State.lua](../anselme/state/State.lua):_ `eval_local = function(self, code, source)` If you want to perform more advanced manipulation of the resulting AST nodes, look at the `ast` modules. In particular, every Node inherits the methods from [ast.abstract.Node](../ast/abstract/Node.lua). @@ -260,4 +267,4 @@ Otherwise, each Node has its own module file defined in the [ast/](../ast) direc --- -_file generated at 2023-12-28T16:41:42Z_ +_file generated at 2023-12-29T17:36:31Z_ diff --git a/doc/api.md.template b/doc/api.md.template index 6624c80..e5bea15 100644 --- a/doc/api.md.template +++ b/doc/api.md.template @@ -5,8 +5,8 @@ If you need more advanced control on Anselme, feel free to look into the other s # anselme -{{anselme.lua}} +{{anselme/init.lua}} # State -{{state/State.lua}} +{{anselme/state/State.lua}} diff --git a/doc/gendocs.lua b/doc/gendocs.lua index dc6ad22..a92a9bc 100644 --- a/doc/gendocs.lua +++ b/doc/gendocs.lua @@ -1,6 +1,6 @@ -- LDoc doesn't like me so I don't like LDoc. -- Behold! A documentation generator that doesn't try to be smart! --- Call this from the root anselme directory: `lua doc/gendocs.lua` +-- Call this from the root anselme repository directory: `lua doc/gendocs.lua` local utf8 = utf8 or require("lua-utf8") diff --git a/parser/expression/primary/prefix/else.lua b/parser/expression/primary/prefix/else.lua deleted file mode 100644 index 3f0fc74..0000000 --- a/parser/expression/primary/prefix/else.lua +++ /dev/null @@ -1,8 +0,0 @@ -local prefix_quote_right = require("parser.expression.primary.prefix.prefix_quote_right") -local operator_priority = require("common").operator_priority - -return prefix_quote_right { - operator = "~", - identifier = "~_", - priority = operator_priority["~_"] -} diff --git a/parser/expression/primary/prefix/mutable.lua b/parser/expression/primary/prefix/mutable.lua deleted file mode 100644 index 03b84e1..0000000 --- a/parser/expression/primary/prefix/mutable.lua +++ /dev/null @@ -1,9 +0,0 @@ -local prefix = require("parser.expression.primary.prefix.prefix") - -local operator_priority = require("common").operator_priority - -return prefix { - operator = "*", - identifier = "*_", - priority = operator_priority["*_"] -} diff --git a/parser/expression/primary/prefix/negation.lua b/parser/expression/primary/prefix/negation.lua deleted file mode 100644 index 5cccd74..0000000 --- a/parser/expression/primary/prefix/negation.lua +++ /dev/null @@ -1,9 +0,0 @@ -local prefix = require("parser.expression.primary.prefix.prefix") - -local operator_priority = require("common").operator_priority - -return prefix { - operator = "-", - identifier = "-_", - priority = operator_priority["-_"] -} diff --git a/parser/expression/primary/prefix/not.lua b/parser/expression/primary/prefix/not.lua deleted file mode 100644 index f7ba921..0000000 --- a/parser/expression/primary/prefix/not.lua +++ /dev/null @@ -1,9 +0,0 @@ -local prefix = require("parser.expression.primary.prefix.prefix") - -local operator_priority = require("common").operator_priority - -return prefix { - operator = "!", - identifier = "!_", - priority = operator_priority["!_"] -} diff --git a/parser/expression/primary/prefix/return.lua b/parser/expression/primary/prefix/return.lua deleted file mode 100644 index cbb98fe..0000000 --- a/parser/expression/primary/prefix/return.lua +++ /dev/null @@ -1,15 +0,0 @@ -local prefix_maybe_nil_right = require("parser.expression.primary.prefix.prefix_maybe_nil_right") - -local ast = require("ast") -local Return = ast.Return - -local operator_priority = require("common").operator_priority - -return prefix_maybe_nil_right { - operator = "@", - priority = operator_priority["@_"], - - build_ast = function(self, right) - return Return:new(right) - end -} diff --git a/parser/expression/secondary/infix/addition.lua b/parser/expression/secondary/infix/addition.lua deleted file mode 100644 index 54c1b62..0000000 --- a/parser/expression/secondary/infix/addition.lua +++ /dev/null @@ -1,9 +0,0 @@ -local infix = require("parser.expression.secondary.infix.infix") - -local operator_priority = require("common").operator_priority - -return infix { - operator = "+", - identifier = "_+_", - priority = operator_priority["_+_"] -} diff --git a/parser/expression/secondary/infix/and.lua b/parser/expression/secondary/infix/and.lua deleted file mode 100644 index 4baf657..0000000 --- a/parser/expression/secondary/infix/and.lua +++ /dev/null @@ -1,9 +0,0 @@ -local infix_quote_right = require("parser.expression.secondary.infix.infix_quote_right") - -local operator_priority = require("common").operator_priority - -return infix_quote_right { - operator = "&", - identifier = "_&_", - priority = operator_priority["_&_"] -} diff --git a/parser/expression/secondary/infix/different.lua b/parser/expression/secondary/infix/different.lua deleted file mode 100644 index cd837a0..0000000 --- a/parser/expression/secondary/infix/different.lua +++ /dev/null @@ -1,9 +0,0 @@ -local infix = require("parser.expression.secondary.infix.infix") - -local operator_priority = require("common").operator_priority - -return infix { - operator = "!=", - identifier = "_!=_", - priority = operator_priority["_!=_"] -} diff --git a/parser/expression/secondary/infix/division.lua b/parser/expression/secondary/infix/division.lua deleted file mode 100644 index 777401b..0000000 --- a/parser/expression/secondary/infix/division.lua +++ /dev/null @@ -1,9 +0,0 @@ -local infix = require("parser.expression.secondary.infix.infix") - -local operator_priority = require("common").operator_priority - -return infix { - operator = "/", - identifier = "_/_", - priority = operator_priority["_/_"] -} diff --git a/parser/expression/secondary/infix/equal.lua b/parser/expression/secondary/infix/equal.lua deleted file mode 100644 index 969a75f..0000000 --- a/parser/expression/secondary/infix/equal.lua +++ /dev/null @@ -1,9 +0,0 @@ -local infix = require("parser.expression.secondary.infix.infix") - -local operator_priority = require("common").operator_priority - -return infix { - operator = "==", - identifier = "_==_", - priority = operator_priority["_==_"] -} diff --git a/parser/expression/secondary/infix/exponent.lua b/parser/expression/secondary/infix/exponent.lua deleted file mode 100644 index bbc1606..0000000 --- a/parser/expression/secondary/infix/exponent.lua +++ /dev/null @@ -1,9 +0,0 @@ -local infix = require("parser.expression.secondary.infix.infix") - -local operator_priority = require("common").operator_priority - -return infix { - operator = "^", - identifier = "_^_", - priority = operator_priority["_^_"] -} diff --git a/parser/expression/secondary/infix/greater.lua b/parser/expression/secondary/infix/greater.lua deleted file mode 100644 index 8bafc4e..0000000 --- a/parser/expression/secondary/infix/greater.lua +++ /dev/null @@ -1,9 +0,0 @@ -local infix = require("parser.expression.secondary.infix.infix") - -local operator_priority = require("common").operator_priority - -return infix { - operator = ">", - identifier = "_>_", - priority = operator_priority["_>_"] -} diff --git a/parser/expression/secondary/infix/greater_equal.lua b/parser/expression/secondary/infix/greater_equal.lua deleted file mode 100644 index cee293d..0000000 --- a/parser/expression/secondary/infix/greater_equal.lua +++ /dev/null @@ -1,9 +0,0 @@ -local infix = require("parser.expression.secondary.infix.infix") - -local operator_priority = require("common").operator_priority - -return infix { - operator = ">=", - identifier = "_>=_", - priority = operator_priority["_>=_"] -} diff --git a/parser/expression/secondary/infix/if.lua b/parser/expression/secondary/infix/if.lua deleted file mode 100644 index d9e9934..0000000 --- a/parser/expression/secondary/infix/if.lua +++ /dev/null @@ -1,9 +0,0 @@ -local infix_quote_right = require("parser.expression.secondary.infix.infix_quote_right") - -local operator_priority = require("common").operator_priority - -return infix_quote_right { - operator = "~", - identifier = "_~_", - priority = operator_priority["_~_"] -} diff --git a/parser/expression/secondary/infix/integer_division.lua b/parser/expression/secondary/infix/integer_division.lua deleted file mode 100644 index 426814b..0000000 --- a/parser/expression/secondary/infix/integer_division.lua +++ /dev/null @@ -1,9 +0,0 @@ -local infix = require("parser.expression.secondary.infix.infix") - -local operator_priority = require("common").operator_priority - -return infix { - operator = "//", - identifier = "_//_", - priority = operator_priority["_//_"] -} diff --git a/parser/expression/secondary/infix/lower.lua b/parser/expression/secondary/infix/lower.lua deleted file mode 100644 index a9d323c..0000000 --- a/parser/expression/secondary/infix/lower.lua +++ /dev/null @@ -1,9 +0,0 @@ -local infix = require("parser.expression.secondary.infix.infix") - -local operator_priority = require("common").operator_priority - -return infix { - operator = "<", - identifier = "_<_", - priority = operator_priority["_<_"] -} diff --git a/parser/expression/secondary/infix/lower_equal.lua b/parser/expression/secondary/infix/lower_equal.lua deleted file mode 100644 index c951236..0000000 --- a/parser/expression/secondary/infix/lower_equal.lua +++ /dev/null @@ -1,9 +0,0 @@ -local infix = require("parser.expression.secondary.infix.infix") - -local operator_priority = require("common").operator_priority - -return infix { - operator = "<=", - identifier = "_<=_", - priority = operator_priority["_<=_"] -} diff --git a/parser/expression/secondary/infix/modulo.lua b/parser/expression/secondary/infix/modulo.lua deleted file mode 100644 index 26bafbc..0000000 --- a/parser/expression/secondary/infix/modulo.lua +++ /dev/null @@ -1,9 +0,0 @@ -local infix = require("parser.expression.secondary.infix.infix") - -local operator_priority = require("common").operator_priority - -return infix { - operator = "%", - identifier = "_%_", - priority = operator_priority["_%_"] -} diff --git a/parser/expression/secondary/infix/multiplication.lua b/parser/expression/secondary/infix/multiplication.lua deleted file mode 100644 index d71b4ec..0000000 --- a/parser/expression/secondary/infix/multiplication.lua +++ /dev/null @@ -1,9 +0,0 @@ -local infix = require("parser.expression.secondary.infix.infix") - -local operator_priority = require("common").operator_priority - -return infix { - operator = "*", - identifier = "_*_", - priority = operator_priority["_*_"] -} diff --git a/parser/expression/secondary/infix/or.lua b/parser/expression/secondary/infix/or.lua deleted file mode 100644 index c113eed..0000000 --- a/parser/expression/secondary/infix/or.lua +++ /dev/null @@ -1,9 +0,0 @@ -local infix_quote_right = require("parser.expression.secondary.infix.infix_quote_right") - -local operator_priority = require("common").operator_priority - -return infix_quote_right { - operator = "|", - identifier = "_|_", - priority = operator_priority["_|_"] -} diff --git a/parser/expression/secondary/infix/pair.lua b/parser/expression/secondary/infix/pair.lua deleted file mode 100644 index 64b63dc..0000000 --- a/parser/expression/secondary/infix/pair.lua +++ /dev/null @@ -1,9 +0,0 @@ -local infix = require("parser.expression.secondary.infix.infix") - -local operator_priority = require("common").operator_priority - -return infix { - operator = ":", - identifier = "_:_", - priority = operator_priority["_:_"] -} diff --git a/parser/expression/secondary/infix/resume.lua b/parser/expression/secondary/infix/resume.lua deleted file mode 100644 index 8d077a2..0000000 --- a/parser/expression/secondary/infix/resume.lua +++ /dev/null @@ -1,9 +0,0 @@ -local infix_quote_right = require("parser.expression.secondary.infix.infix_quote_right") - -local operator_priority = require("common").operator_priority - -return infix_quote_right { - operator = "~>", - identifier = "_~>_", - priority = operator_priority["_~>_"] -} diff --git a/parser/expression/secondary/infix/semicolon.lua b/parser/expression/secondary/infix/semicolon.lua deleted file mode 100644 index 05cb73c..0000000 --- a/parser/expression/secondary/infix/semicolon.lua +++ /dev/null @@ -1,9 +0,0 @@ -local infix_or_suffix = require("parser.expression.secondary.infix.infix_or_suffix") - -local operator_priority = require("common").operator_priority - -return infix_or_suffix { - operator = ";", - identifier = "_;_", - priority = operator_priority["_;_"] -} diff --git a/parser/expression/secondary/infix/substraction.lua b/parser/expression/secondary/infix/substraction.lua deleted file mode 100644 index 374e2cd..0000000 --- a/parser/expression/secondary/infix/substraction.lua +++ /dev/null @@ -1,9 +0,0 @@ -local infix = require("parser.expression.secondary.infix.infix") - -local operator_priority = require("common").operator_priority - -return infix { - operator = "-", - identifier = "_-_", - priority = operator_priority["_-_"] -} diff --git a/parser/expression/secondary/infix/tag.lua b/parser/expression/secondary/infix/tag.lua deleted file mode 100644 index bb2a822..0000000 --- a/parser/expression/secondary/infix/tag.lua +++ /dev/null @@ -1,9 +0,0 @@ -local infix_quote_right = require("parser.expression.secondary.infix.infix_quote_right") - -local operator_priority = require("common").operator_priority - -return infix_quote_right { - operator = "#", - identifier = "_#_", - priority = operator_priority["_#_"] -} diff --git a/parser/expression/secondary/infix/translate.lua b/parser/expression/secondary/infix/translate.lua deleted file mode 100644 index ea6a8a7..0000000 --- a/parser/expression/secondary/infix/translate.lua +++ /dev/null @@ -1,9 +0,0 @@ -local infix_quote_both = require("parser.expression.secondary.infix.infix_quote_both") - -local operator_priority = require("common").operator_priority - -return infix_quote_both { - operator = "->", - identifier = "_->_", - priority = operator_priority["_->_"] -} diff --git a/parser/expression/secondary/infix/type_check.lua b/parser/expression/secondary/infix/type_check.lua deleted file mode 100644 index 965045a..0000000 --- a/parser/expression/secondary/infix/type_check.lua +++ /dev/null @@ -1,9 +0,0 @@ -local infix = require("parser.expression.secondary.infix.infix") - -local operator_priority = require("common").operator_priority - -return infix { - operator = "::", - identifier = "_::_", - priority = operator_priority["_::_"] -} diff --git a/parser/expression/secondary/infix/while.lua b/parser/expression/secondary/infix/while.lua deleted file mode 100644 index 748008f..0000000 --- a/parser/expression/secondary/infix/while.lua +++ /dev/null @@ -1,9 +0,0 @@ -local infix_quote_both = require("parser.expression.secondary.infix.infix_quote_both") - -local operator_priority = require("common").operator_priority - -return infix_quote_both { - operator = "~?", - identifier = "_~?_", - priority = operator_priority["_~?_"] -} diff --git a/parser/expression/secondary/suffix/semicolon.lua b/parser/expression/secondary/suffix/semicolon.lua deleted file mode 100644 index c962687..0000000 --- a/parser/expression/secondary/suffix/semicolon.lua +++ /dev/null @@ -1,9 +0,0 @@ -local suffix = require("parser.expression.secondary.suffix.suffix") - -local operator_priority = require("common").operator_priority - -return suffix { - operator = ";", - identifier = "_;", - priority = operator_priority["_;"] -} diff --git a/readme.md b/readme.md index a261d70..12ab0e8 100644 --- a/readme.md +++ b/readme.md @@ -5,3 +5,16 @@ The overengineered dialog scripting system in pure Lua. This is version 2, a full rewrite. Currently not stable. Supported: Lua 5.4, Lua 5.3, LuaJIT (LuaJIT requires the utf8 module: `luarocks --lua-version=5.1 install luautf8`). +Otherwise all needed files are included in the `anselme` directory. + +Documentation: + +* [Lua API documentation](doc/api.md) +* [Language reference](doc/language.md) +* [Tutorial](doc/tutorial.md) + +Development: + +* Generate documentation: `lua doc/gendocs.lua` +* Run test for the current Lua version: `lua test/run.lua` +* Run test for every supported Lua version: `./run_tests.sh` diff --git a/run tests.sh b/run_tests.sh similarity index 100% rename from run tests.sh rename to run_tests.sh diff --git a/test/run.lua b/test/run.lua index ba7437b..f8daf60 100644 --- a/test/run.lua +++ b/test/run.lua @@ -2,8 +2,9 @@ local lfs = require("lfs") +package.path = "./?/init.lua;./?.lua;" .. package.path local anselme = require("anselme") -local persistent_manager = require("state.persistent_manager") +local persistent_manager = require("anselme.state.persistent_manager") -- simple random to get the same result across lua versions local prev = 0