package rl

//goland:noinspection ALL
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_SCIENTIFIC_NUMBER       = "scientific_number"
	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_THOUSANDS_SEPARATOR = "thousands_separator"
	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_VARIADIC_MARKER     = "variadic_marker" // todo merge with above
	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"
)
