1
0
Fork 0
mirror of https://github.com/Reuh/anselme.git synced 2025-10-27 08:39:30 +00:00

Move anselme code into its own directory

This commit is contained in:
Étienne Fildadut 2023-12-29 18:41:06 +01:00
parent 404e7dd56e
commit 5dd971ff8f
179 changed files with 603 additions and 579 deletions

View file

@ -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

View file

@ -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 {

View file

@ -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",

View file

@ -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",

View file

@ -1,4 +1,4 @@
local ast = require("ast")
local ast = require("anselme.ast")
return ast.abstract.Node {
type = "boolean",

View file

@ -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",

View file

@ -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

View file

@ -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 {

View file

@ -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

View file

@ -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",

View file

@ -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

View file

@ -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",

View file

@ -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 {

View file

@ -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 {

View file

@ -1,4 +1,4 @@
local ast = require("ast")
local ast = require("anselme.ast")
local Symbol, String
local Identifier

View file

@ -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 {

View file

@ -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,

View file

@ -1,4 +1,4 @@
local ast = require("ast")
local ast = require("anselme.ast")
return ast.abstract.Node {
type = "nil",

View file

@ -1,4 +1,4 @@
local ast = require("ast")
local ast = require("anselme.ast")
local Number
Number = ast.abstract.Node {

View file

@ -1,4 +1,4 @@
local ast = require("ast")
local ast = require("anselme.ast")
local Overload
Overload = ast.abstract.Node {

View file

@ -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",

View file

@ -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 {

View file

@ -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()

View file

@ -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 {

View file

@ -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 {

View file

@ -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 {

View file

@ -1,4 +1,4 @@
local ast = require("ast")
local ast = require("anselme.ast")
local Identifier
local String = ast.abstract.Node {

View file

@ -1,4 +1,4 @@
local ast = require("ast")
local ast = require("anselme.ast")
local String
local StringInterpolation = ast.abstract.Node {

View file

@ -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

View file

@ -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 {

View file

@ -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 {

View file

@ -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) {

View file

@ -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",

View file

@ -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

View file

@ -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 {

View file

@ -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

View file

@ -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",

View file

@ -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",

View file

@ -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)

View file

@ -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",

View file

@ -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",

View file

@ -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
})

View file

@ -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

View file

@ -1,4 +1,4 @@
local ast = require("ast")
local ast = require("anselme.ast")
local Number, Struct, String, Nil, Boolean
local function to_anselme(val)

View file

@ -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

View file

@ -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:

View file

@ -1,4 +1,4 @@
local class = require("class")
local class = require("anselme.lib.class")
local utf8 = utf8 or require("lua-utf8")
local Source

View file

@ -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 = {}

View file

@ -1,4 +1,4 @@
local primary = require("parser.expression.primary.primary")
local primary = require("anselme.parser.expression.primary.primary")
local comment
comment = primary {

View file

@ -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["_::_"]

View file

@ -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)

View file

@ -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 {

View file

@ -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 {

View file

@ -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 {

View file

@ -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)

View file

@ -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

View file

@ -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 = {

View file

@ -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)

View file

@ -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)

View file

@ -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["~_"]
}

View file

@ -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 = "$",

View file

@ -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["*_"]
}

View file

@ -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["-_"]
}

View file

@ -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["!_"]
}

View file

@ -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 {

View file

@ -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 {

View file

@ -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 {

View file

@ -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
}

View file

@ -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 = ";",

View file

@ -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 = "%",

View file

@ -1,4 +1,4 @@
local class = require("class")
local class = require("anselme.lib.class")
return class {
new = false, -- static class

View file

@ -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",

View file

@ -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 {

View file

@ -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 {

View file

@ -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 {

View file

@ -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)

View file

@ -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["_+_"]
}

View file

@ -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["_&_"]
}

View file

@ -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 {

View file

@ -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 {

View file

@ -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 = {}

View file

@ -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 {

View file

@ -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 {

View file

@ -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 {

View file

@ -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["_!=_"]
}

View file

@ -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["_/_"]
}

View file

@ -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["_==_"]
}

View file

@ -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["_^_"]
}

View file

@ -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["_>_"]
}

View file

@ -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["_>=_"]
}

View file

@ -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["_~_"]
}

View file

@ -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 {

View file

@ -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 {

View file

@ -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 {

View file

@ -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

View file

@ -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 {

View file

@ -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 {

View file

@ -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["_//_"]
}

Some files were not shown because too many files have changed in this diff Show more