rl

package
v0.6.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 21, 2025 License: Apache-2.0 Imports: 3 Imported by: 1

Documentation

Index

Constants

View Source
const (
	// Node Kinds
	K_COMMENT                 = "comment"
	K_SOURCE_FILE             = "source_file"
	K_SHEBANG                 = "shebang"
	K_FILE_HEADER             = "file_header"
	K_ARG_BLOCK               = "arg_block"
	K_ASSIGN                  = "assign"
	K_EXPR                    = "expr"
	K_PRIMARY_EXPR            = "primary_expr"
	K_PARENTHESIZED_EXPR      = "parenthesized_expr"
	K_LITERAL                 = "literal"
	K_VAR_PATH                = "var_path"
	K_INT                     = "int"
	K_BOOL                    = "bool"
	K_FLOAT                   = "float"
	K_LIST                    = "list"
	K_NULL                    = "null"
	K_CALL                    = "call"
	K_OR_EXPR                 = "or_expr"
	K_AND_EXPR                = "and_expr"
	K_COMPARE_EXPR            = "compare_expr"
	K_ADD_EXPR                = "add_expr"
	K_MULT_EXPR               = "mult_expr"
	K_UNARY_EXPR              = "unary_expr"
	K_INDEXED_EXPR            = "indexed_expr"
	K_STRING                  = "string"
	K_STRING_CONTENT          = "string_content"
	K_BACKSLASH               = "\\"
	K_ESC_BACKSLASH           = "esc_backslash"
	K_ESC_SINGLE_QUOTE        = "esc_single_quote"
	K_ESC_DOUBLE_QUOTE        = "esc_double_quote"
	K_ESC_BACKTICK            = "esc_backtick"
	K_ESC_NEWLINE             = "esc_newline"
	K_ESC_TAB                 = "esc_tab"
	K_ESC_OPEN_BRACKET        = "esc_open_bracket"
	K_INTERPOLATION           = "interpolation"
	K_MAP                     = "map"
	K_IDENTIFIER              = "identifier"
	K_COMPOUND_ASSIGN         = "compound_assign"
	K_PLUS_EQUAL              = "+="
	K_MINUS_EQUAL             = "-="
	K_STAR_EQUAL              = "*="
	K_SLASH_EQUAL             = "/="
	K_PERCENT_EQUAL           = "%="
	K_PLUS                    = "+"
	K_MINUS                   = "-"
	K_NOT                     = "not"
	K_IF_STMT                 = "if_stmt"
	K_BREAK_STMT              = "break_stmt"
	K_CONTINUE_STMT           = "continue_stmt"
	K_FOR_LOOP                = "for_loop"
	K_WHILE_LOOP              = "while_loop"
	K_DEFER_BLOCK             = "defer_block"
	K_SLICE                   = "slice"
	K_SHELL_STMT              = "shell_stmt"
	K_CRITICAL_SHELL_CMD      = "critical_shell_cmd"
	K_FAIL                    = "fail"
	K_DEL_STMT                = "del_stmt"
	K_JSON_PATH               = "json_path"
	K_RAD_BLOCK               = "rad_block"
	K_RAD_FIELD_STMT          = "rad_field_stmt"
	K_RAD_SORT_STMT           = "rad_sort_stmt"
	K_RAD_SORT_SPECIFIER      = "rad_sort_specifier"
	K_ASC                     = "asc"
	K_DESC                    = "desc"
	K_RAD_FIELD_MODIFIER_STMT = "rad_field_modifier_stmt"
	K_RAD_FIELD_MOD_COLOR     = "rad_field_mod_color"
	K_RAD_FIELD_MOD_MAP       = "rad_field_mod_map"
	K_RAD_IF_STMT             = "rad_if_stmt"
	K_LIST_COMPREHENSION      = "list_comprehension"
	K_ERROR                   = "ERROR"
	K_INCR_DECR               = "incr_decr"
	K_PLUS_PLUS               = "++"
	K_MINUS_MINUS             = "--"
	K_TERNARY_EXPR            = "ternary_expr"
	K_SWITCH_STMT             = "switch_stmt"
	K_SWITCH_CASE_EXPR        = "switch_case_expr"
	K_SWITCH_CASE_BLOCK       = "switch_case_block"
	K_FN_LAMBDA               = "fn_lambda"
	K_PASS                    = "pass_stmt"
	K_FN_NAMED                = "fn_named"
	K_RETURN_STMT             = "return_stmt"
	K_YIELD_STMT              = "yield_stmt"
	K_STRING_TYPE             = "string_type"
	K_INT_TYPE                = "int_type"
	K_FLOAT_TYPE              = "float_type"
	K_BOOL_TYPE               = "bool_type"
	K_LIST_TYPE               = "list_type"
	K_ERROR_TYPE              = "error_type"
	K_ANY_TYPE                = "any_type"
	K_VOID_TYPE               = "void_type"
	K_FN_TYPE                 = "fn_type"
	K_MAP_TYPE                = "map_type"
	K_MAP_ENTRY_TYPE          = "map_entry_type"

	// Field names
	F_LEFT             = "left"
	F_LEFTS            = "lefts"
	F_RIGHT            = "right"
	F_ROOT             = "root"
	F_INDEXING         = "indexing"
	F_INDEX            = "index"
	F_LIST_ENTRY       = "list_entry"
	F_FUNC             = "func"
	F_ARG              = "arg"
	F_NAMED_ARG        = "named_arg"
	F_OP               = "op"
	F_CONTENTS         = "contents"
	F_EXPR             = "expr"
	F_FORMAT           = "format"
	F_ALIGNMENT        = "alignment"
	F_PADDING          = "padding"
	F_PRECISION        = "precision"
	F_MAP_ENTRY        = "map_entry"
	F_KEY              = "key"
	F_VALUE            = "value"
	F_ALT              = "alt"
	F_CONDITION        = "condition"
	F_STMT             = "stmt"
	F_KEYWORD          = "keyword"
	F_START            = "start"
	F_END              = "end"
	F_SHELL_CMD        = "shell_cmd"
	F_QUIET_MOD        = "quiet_mod"
	F_CONFIRM_MOD      = "confirm_mod"
	F_COMMAND          = "command"
	F_RESPONSE         = "response"
	F_SEGMENT          = "segment"
	F_SOURCE           = "source"
	F_RAD_TYPE         = "rad_type"
	F_IDENTIFIER       = "identifier"
	F_SPECIFIER        = "specifier"
	F_MOD_STMT         = "mod_stmt"
	F_COLOR            = "color"
	F_REGEX            = "regex"
	F_LAMBDA           = "lambda"
	F_TRUE_BRANCH      = "true_branch"
	F_FALSE_BRANCH     = "false_branch"
	F_NAME             = "name"
	F_FIRST            = "first"
	F_SECOND           = "second"
	F_DISCRIMINANT     = "discriminant"
	F_CASE             = "case"
	F_CASE_KEY         = "case_key"
	F_DEFAULT          = "default"
	F_YIELD_STMT       = "yield_stmt"
	F_RETURN_STMT      = "return_stmt"
	F_DELEGATE         = "delegate"
	F_PARAM            = "param"
	F_METADATA_ENTRY   = "metadata_entry"
	F_BLOCK_COLON      = "block_colon"
	F_CATCH            = "catch"
	F_TYPE             = "type"
	F_RETURN_TYPE      = "return_type"
	F_VARARG_MARKER    = "vararg_marker"
	F_OPTIONAL         = "optional"
	F_LEAF_TYPE        = "leaf_type"
	F_ANY              = "any"
	F_ENUM             = "enum"
	F_NAMED_ENTRY      = "named_entry"
	F_KEY_NAME         = "key_name"
	F_KEY_TYPE         = "key_type"
	F_VALUE_TYPE       = "value_type"
	F_LIST             = "list"
	F_NORMAL_PARAM     = "normal_param"
	F_NAMED_ONLY_PARAM = "named_only_param"
	F_VARARG_PARAM     = "vararg_param"

	// Keywords
	KEYWORD_ASC     = "asc"
	KEYWORD_DESC    = "desc"
	KEYWORD_RAD     = "rad"
	KEYWORD_REQUEST = "request"
	KEYWORD_DISPLAY = "display"

	// Types
	T_STR        = "str"
	T_STR_LIST   = "str[]"
	T_INT        = "int"
	T_INT_LIST   = "int[]"
	T_FLOAT      = "float"
	T_FLOAT_LIST = "float[]"
	T_BOOL       = "bool"
	T_BOOL_LIST  = "bool[]"
	T_ERROR      = "error"
	T_ANY        = "any"
	T_VOID       = "void"
	T_LIST       = "list"
	T_MAP        = "map"
)
View Source
const (
	// 1xxxx Syntax Errors
	ErrInvalidSyntax Error = "10001"

	// 2xxxx Runtime Errors
	ErrGenericRuntime       Error = "20000"
	ErrParseIntFailed       Error = "20001"
	ErrParseFloatFailed           = "20002"
	ErrFileRead                   = "20003"
	ErrFileNoPermission           = "20004"
	ErrFileNoExist                = "20005"
	ErrFileWrite                  = "20006"
	ErrAmbiguousEpoch             = "20007"
	ErrInvalidTimeUnit            = "20008"
	ErrInvalidTimeZone            = "20009"
	ErrUserInput                  = "20010"
	ErrParseJson                  = "20011"
	ErrBugTypeCheck               = "20012"
	ErrFileWalk                   = "20013"
	ErrMutualExclArgs             = "20014"
	ErrZipStrict                  = "20015"
	ErrCast                       = "20016"
	ErrNumInvalidRange            = "20017"
	ErrEmptyList                  = "20018"
	ErrArgsContradict             = "20019"
	ErrFid                        = "20020"
	ErrDecode                     = "20021"
	ErrNoStashId                  = "20022"
	ErrSleepStr                   = "20023"
	ErrInvalidRegex               = "20024"
	ErrColorizeValNotInEnum       = "20025"
)

note to reader: I am currently very inconsistently applying these errors. still debating if we should them, feel free to ignore if you're implementing something. Note: when adding here, updating the reference!! " docs/reference/errors.md "

Variables

This section is empty.

Functions

func GetChild

func GetChild(node *ts.Node, fieldName string) *ts.Node

func GetChildren

func GetChildren(node *ts.Node, fieldName string) []ts.Node

func GetSrc

func GetSrc(node *ts.Node, src string) string

Types

type Error

type Error string

func (Error) String

func (e Error) String() string

type MapNamedKey

type MapNamedKey struct {
	Name       *RadNode
	IsOptional bool
}

func NewMapNamedKey

func NewMapNamedKey(name *RadNode, isOptional bool) MapNamedKey

type RadNode

type RadNode struct {
	Node *ts.Node
	Src  string
}

func NewRadNode

func NewRadNode(node *ts.Node, src string) *RadNode

type RadType

type RadType int

Actual interpreter types

const (
	RadStrT RadType = iota
	RadIntT
	RadFloatT
	RadBoolT
	RadListT
	RadMapT
	RadFnT
	RadNullT
	RadErrorT
)

func (RadType) AsString

func (r RadType) AsString() string

type TypingAnyListT

type TypingAnyListT struct{} // var: list i.e. any[]

Collections

func NewAnyListType

func NewAnyListType() *TypingAnyListT

func (*TypingAnyListT) IsCompatibleWith

func (t *TypingAnyListT) IsCompatibleWith(val TypingCompatVal) bool

func (*TypingAnyListT) Name

func (t *TypingAnyListT) Name() string

type TypingAnyMapT

type TypingAnyMapT struct{} // var: map i.e. { any: any }

func NewAnyMapType

func NewAnyMapType() *TypingAnyMapT

func (*TypingAnyMapT) IsCompatibleWith

func (t *TypingAnyMapT) IsCompatibleWith(val TypingCompatVal) bool

func (*TypingAnyMapT) Name

func (t *TypingAnyMapT) Name() string

type TypingAnyT

type TypingAnyT struct{} // var: any

func NewAnyType

func NewAnyType() *TypingAnyT

func (*TypingAnyT) IsCompatibleWith

func (t *TypingAnyT) IsCompatibleWith(TypingCompatVal) bool

func (*TypingAnyT) Name

func (t *TypingAnyT) Name() string

type TypingBoolT

type TypingBoolT struct{} // var: bool

func NewBoolType

func NewBoolType() *TypingBoolT

func (*TypingBoolT) IsCompatibleWith

func (t *TypingBoolT) IsCompatibleWith(val TypingCompatVal) bool

func (*TypingBoolT) Name

func (t *TypingBoolT) Name() string

type TypingCompatVal

type TypingCompatVal struct {
	Val       interface{} // Specific int64, float64, string, bool, []interface{}, map[string]interface{}
	Type      *RadType
	Evaluator *func(*ts.Node, string) interface{}
}

first check Val, then Type

func NewBoolSubject

func NewBoolSubject(val bool) TypingCompatVal

func NewErrorSubject

func NewErrorSubject() TypingCompatVal

func NewFloatSubject

func NewFloatSubject(val float64) TypingCompatVal

func NewFnSubject

func NewFnSubject() TypingCompatVal

func NewIntSubject

func NewIntSubject(val int64) TypingCompatVal

func NewListSubject

func NewListSubject() TypingCompatVal

func NewMapSubject

func NewMapSubject() TypingCompatVal

func NewNullSubject

func NewNullSubject() TypingCompatVal

func NewStrSubject

func NewStrSubject(val string) TypingCompatVal

func NewSubject

func NewSubject(val interface{}) TypingCompatVal

func NewVoidSubject

func NewVoidSubject() TypingCompatVal

type TypingErrorT

type TypingErrorT struct{} // var: error

func NewErrorType

func NewErrorType() *TypingErrorT

func (*TypingErrorT) IsCompatibleWith

func (t *TypingErrorT) IsCompatibleWith(val TypingCompatVal) bool

func (*TypingErrorT) Name

func (t *TypingErrorT) Name() string

type TypingFloatT

type TypingFloatT struct{} // var: float

func NewFloatType

func NewFloatType() *TypingFloatT

func (*TypingFloatT) IsCompatibleWith

func (t *TypingFloatT) IsCompatibleWith(val TypingCompatVal) bool

func (*TypingFloatT) Name

func (t *TypingFloatT) Name() string

type TypingFnParam

type TypingFnParam struct {
	Name       string
	Type       *TypingT
	IsVariadic bool // vararg
	NamedOnly  bool // if true, can only be passed as a named arg
	IsOptional bool
	Default    *RadNode // if no default, this is nil
}

func (TypingFnParam) AnonymousOnly

func (t TypingFnParam) AnonymousOnly() bool

type TypingFnT

type TypingFnT struct {
	Name    string // empty if anonymous
	Params  []TypingFnParam
	ReturnT *TypingT
}

Complex / Unions / Misc

func NewTypingFnT

func NewTypingFnT(fnNode *ts.Node, src string) *TypingFnT

K_FN_NAMED expected as node

func (*TypingFnT) ByName

func (t *TypingFnT) ByName() map[string]TypingFnParam

type TypingIntT

type TypingIntT struct{} // var: int

func NewIntType

func NewIntType() *TypingIntT

func (*TypingIntT) IsCompatibleWith

func (t *TypingIntT) IsCompatibleWith(val TypingCompatVal) bool

func (*TypingIntT) Name

func (t *TypingIntT) Name() string

type TypingListT

type TypingListT struct {
	// contains filtered or unexported fields
}

func NewListType

func NewListType(elem TypingT) *TypingListT

func (*TypingListT) IsCompatibleWith

func (t *TypingListT) IsCompatibleWith(val TypingCompatVal) bool

func (*TypingListT) Name

func (t *TypingListT) Name() string

type TypingMapT

type TypingMapT struct {
	// contains filtered or unexported fields
}

func NewMapType

func NewMapType(key, val TypingT) *TypingMapT

func (*TypingMapT) IsCompatibleWith

func (t *TypingMapT) IsCompatibleWith(val TypingCompatVal) bool

func (*TypingMapT) Name

func (t *TypingMapT) Name() string

type TypingOptionalT

type TypingOptionalT struct {
	// contains filtered or unexported fields
}

func NewOptionalType

func NewOptionalType(t TypingT) *TypingOptionalT

func (*TypingOptionalT) IsCompatibleWith

func (t *TypingOptionalT) IsCompatibleWith(val TypingCompatVal) bool

func (*TypingOptionalT) Name

func (t *TypingOptionalT) Name() string

type TypingStrEnumT

type TypingStrEnumT struct {
	// contains filtered or unexported fields
}

func NewStrEnumType

func NewStrEnumType(stringNodes ...*RadNode) *TypingStrEnumT

func (*TypingStrEnumT) IsCompatibleWith

func (t *TypingStrEnumT) IsCompatibleWith(val TypingCompatVal) bool

func (*TypingStrEnumT) Name

func (t *TypingStrEnumT) Name() string

type TypingStrT

type TypingStrT struct{} // var: str

Primitives / Union Primitives

func NewStrType

func NewStrType() *TypingStrT

func (*TypingStrT) IsCompatibleWith

func (t *TypingStrT) IsCompatibleWith(val TypingCompatVal) bool

func (*TypingStrT) Name

func (t *TypingStrT) Name() string

type TypingStructT

type TypingStructT struct {
	// contains filtered or unexported fields
}

func NewStructType

func NewStructType(named map[MapNamedKey]TypingT) *TypingStructT

func (*TypingStructT) IsCompatibleWith

func (t *TypingStructT) IsCompatibleWith(val TypingCompatVal) bool

func (*TypingStructT) Name

func (t *TypingStructT) Name() string

type TypingT

type TypingT interface {
	Name() string
	IsCompatibleWith(val TypingCompatVal) bool
}

type TypingTupleT

type TypingTupleT struct {
	// contains filtered or unexported fields
}

func NewTupleType

func NewTupleType(types ...TypingT) *TypingTupleT

func (*TypingTupleT) IsCompatibleWith

func (t *TypingTupleT) IsCompatibleWith(val TypingCompatVal) bool

func (*TypingTupleT) Name

func (t *TypingTupleT) Name() string

type TypingUnionT

type TypingUnionT struct {
	// contains filtered or unexported fields
}

func NewUnionType

func NewUnionType(types ...TypingT) *TypingUnionT

func (*TypingUnionT) IsCompatibleWith

func (t *TypingUnionT) IsCompatibleWith(val TypingCompatVal) bool

func (*TypingUnionT) Name

func (t *TypingUnionT) Name() string

type TypingVarArgT

type TypingVarArgT struct {
	// contains filtered or unexported fields
}

Modifiers

func NewVarArgType

func NewVarArgType(t TypingT) *TypingVarArgT

func (*TypingVarArgT) IsCompatibleWith

func (t *TypingVarArgT) IsCompatibleWith(val TypingCompatVal) bool

func (*TypingVarArgT) Name

func (t *TypingVarArgT) Name() string

type TypingVoidT

type TypingVoidT struct{} // -> void

func NewVoidType

func NewVoidType() *TypingVoidT

func (*TypingVoidT) IsCompatibleWith

func (t *TypingVoidT) IsCompatibleWith(val TypingCompatVal) bool

func (*TypingVoidT) Name

func (t *TypingVoidT) Name() string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL