#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#include "nvim/eval/typval.h"
#include "nvim/types.h"
#include "nvim/viml/parser/parser.h"
Go to the source code of this file.
Data Structures | |
struct | LexExprToken |
Lexer token. More... | |
struct | expr_ast_node |
Structure representing one AST node. More... | |
struct | ExprASTError |
AST error definition. More... | |
struct | ExprAST |
Structure representing complety AST for one expression. More... | |
Macros | |
#define | EXPR_OPT_SCOPE_LIST ((char[]){ kExprOptScopeGlobal, kExprOptScopeLocal }) |
#define | EXPR_VAR_SCOPE_LIST |
Typedefs | |
typedef struct expr_ast_node | ExprASTNode |
Variables | |
const uint8_t | node_maxchildren [] |
Array mapping ExprASTNodeType to maximum amount of children node may have. More... | |
const char *const | east_node_type_tab [] |
Array mapping ExprASTNodeType values to their stringified versions. More... | |
const char *const | eltkn_cmp_type_tab [] |
Array mapping ExprComparisonType values to their stringified versions. More... | |
const char *const | ccs_tab [] |
Array mapping ExprCaseCompareStrategy values to their stringified versions. More... | |
const char *const | expr_asgn_type_tab [] |
Array mapping ExprAssignmentType values to their stringified versions. More... | |
#define EXPR_OPT_SCOPE_LIST ((char[]){ kExprOptScopeGlobal, kExprOptScopeLocal }) |
#define EXPR_VAR_SCOPE_LIST |
typedef struct expr_ast_node ExprASTNode |
enum ExprAssignmentType |
enum ExprASTNodeType |
Expression AST node type.
Enumerator | |
---|---|
kExprNodeMissing | |
kExprNodeOpMissing | |
kExprNodeTernary | Ternary operator. |
kExprNodeTernaryValue | Ternary operator, colon. |
kExprNodeRegister | Register. |
kExprNodeSubscript | Subscript. |
kExprNodeListLiteral | List literal. |
kExprNodeUnaryPlus | |
kExprNodeBinaryPlus | |
kExprNodeNested | Nested parenthesised expression. |
kExprNodeCall | Function call. |
kExprNodePlainIdentifier | Plain identifier: simple variable/function name Looks like "string", "g:Foo", etc: consists from a single kExprLexPlainIdentifier token. |
kExprNodePlainKey | Plain dictionary key, for use with kExprNodeConcatOrSubscript. |
kExprNodeComplexIdentifier | Complex identifier: variable/function name with curly braces. |
kExprNodeUnknownFigure | Figure brace expression which is not yet known May resolve to any of kExprNodeDictLiteral, kExprNodeLambda or kExprNodeCurlyBracesIdentifier. |
kExprNodeLambda | Lambda. |
kExprNodeDictLiteral | Dictionary literal. |
kExprNodeCurlyBracesIdentifier | Part of the curly braces name. |
kExprNodeComma | Comma “operator”. |
kExprNodeColon | Colon “operator”. |
kExprNodeArrow | Arrow “operator”. |
kExprNodeComparison | Various comparison operators. |
kExprNodeConcat | Concat operator To be only used in cases when it is known for sure it is not a subscript. |
kExprNodeConcatOrSubscript | Concat or subscript operator For cases when it is not obvious whether expression is a concat or a subscript. May only have either number or plain identifier as the second child. To make it easier to avoid curly braces in place of kExprNodePlainIdentifier node kExprNodePlainKey is used. |
kExprNodeInteger | Integral number. |
kExprNodeFloat | Floating-point number. |
kExprNodeSingleQuotedString | |
kExprNodeDoubleQuotedString | |
kExprNodeOr | |
kExprNodeAnd | |
kExprNodeUnaryMinus | |
kExprNodeBinaryMinus | |
kExprNodeNot | |
kExprNodeMultiplication | |
kExprNodeDivision | |
kExprNodeMod | |
kExprNodeOption | |
kExprNodeEnvironment | |
kExprNodeAssignment |
enum ExprComparisonType |
enum ExprOptScope |
enum ExprParserFlags |
enum ExprVarScope |
enum LexExprFlags |
enum LexExprTokenType |
Lexer token type.
const char* const ccs_tab[] |
Array mapping ExprCaseCompareStrategy values to their stringified versions.
const char* const east_node_type_tab[] |
Array mapping ExprASTNodeType values to their stringified versions.
const char* const eltkn_cmp_type_tab[] |
Array mapping ExprComparisonType values to their stringified versions.
const char* const expr_asgn_type_tab[] |
Array mapping ExprAssignmentType values to their stringified versions.
const uint8_t node_maxchildren[] |
Array mapping ExprASTNodeType to maximum amount of children node may have.