read_expression() — svelte Function Reference
Architecture documentation for the read_expression() function in expression.js from the svelte codebase.
Entity Profile
Dependency Diagram
graph TD f55653bc_77b3_5212_03f1_93bc274916e8["read_expression()"] 8b705104_0cb9_c5c8_5bed_6dcfe73592d3["expression.js"] f55653bc_77b3_5212_03f1_93bc274916e8 -->|defined in| 8b705104_0cb9_c5c8_5bed_6dcfe73592d3 774b1b65_7dad_02c2_b4ca_c77fc0d799ec["read_attribute()"] 774b1b65_7dad_02c2_b4ca_c77fc0d799ec -->|calls| f55653bc_77b3_5212_03f1_93bc274916e8 babf57bd_0606_e8ec_fde4_75ed47bb1407["read_sequence()"] babf57bd_0606_e8ec_fde4_75ed47bb1407 -->|calls| f55653bc_77b3_5212_03f1_93bc274916e8 e584f5ba_af7a_4d95_57a7_8a4e31da0ab8["tag()"] e584f5ba_af7a_4d95_57a7_8a4e31da0ab8 -->|calls| f55653bc_77b3_5212_03f1_93bc274916e8 f9386464_dab0_7aa2_cfd0_969e973dc903["open()"] f9386464_dab0_7aa2_cfd0_969e973dc903 -->|calls| f55653bc_77b3_5212_03f1_93bc274916e8 563ea552_7fa4_4834_a19f_2b256bff987c["next()"] 563ea552_7fa4_4834_a19f_2b256bff987c -->|calls| f55653bc_77b3_5212_03f1_93bc274916e8 293ea078_697f_e55b_c696_1c508cae7857["special()"] 293ea078_697f_e55b_c696_1c508cae7857 -->|calls| f55653bc_77b3_5212_03f1_93bc274916e8 bb0eb4c2_ab75_feac_3814_01d1e4346bb8["parse_expression_at()"] f55653bc_77b3_5212_03f1_93bc274916e8 -->|calls| bb0eb4c2_ab75_feac_3814_01d1e4346bb8 7cef41bd_b7cf_112a_875e_5ca7e892c65e["expected_token()"] f55653bc_77b3_5212_03f1_93bc274916e8 -->|calls| 7cef41bd_b7cf_112a_875e_5ca7e892c65e f001e0ed_0281_6ed5_61c2_bc914a036974["get_loose_identifier()"] f55653bc_77b3_5212_03f1_93bc274916e8 -->|calls| f001e0ed_0281_6ed5_61c2_bc914a036974 style f55653bc_77b3_5212_03f1_93bc274916e8 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
packages/svelte/src/compiler/phases/1-parse/read/expression.js lines 35–93
export default function read_expression(parser, opening_token, disallow_loose) {
try {
let comment_index = parser.root.comments.length;
const node = parse_expression_at(
parser.template,
parser.root.comments,
parser.ts,
parser.index
);
let num_parens = 0;
let i = parser.root.comments.length;
while (i-- > comment_index) {
const comment = parser.root.comments[i];
if (comment.end < node.start) {
parser.index = comment.end;
break;
}
}
for (let i = parser.index; i < /** @type {number} */ (node.start); i += 1) {
if (parser.template[i] === '(') num_parens += 1;
}
let index = /** @type {number} */ (node.end);
const last_comment = parser.root.comments.at(-1);
if (last_comment && last_comment.end > index) index = last_comment.end;
while (num_parens > 0) {
const char = parser.template[index];
if (char === ')') {
num_parens -= 1;
} else if (!regex_whitespace.test(char)) {
e.expected_token(index, ')');
}
index += 1;
}
parser.index = index;
return /** @type {Expression} */ (node);
} catch (err) {
// If we are in an each loop we need the error to be thrown in cases like
// `as { y = z }` so we still throw and handle the error there
if (parser.loose && !disallow_loose) {
const expression = get_loose_identifier(parser, opening_token);
if (expression) {
return expression;
}
}
parser.acorn_error(err);
}
}
Domain
Subdomains
Source
Frequently Asked Questions
What does read_expression() do?
read_expression() is a function in the svelte codebase, defined in packages/svelte/src/compiler/phases/1-parse/read/expression.js.
Where is read_expression() defined?
read_expression() is defined in packages/svelte/src/compiler/phases/1-parse/read/expression.js at line 35.
What does read_expression() call?
read_expression() calls 3 function(s): expected_token, get_loose_identifier, parse_expression_at.
What calls read_expression()?
read_expression() is called by 6 function(s): next, open, read_attribute, read_sequence, special, tag.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free