Home / Function/ read_expression() — svelte Function Reference

read_expression() — svelte Function Reference

Architecture documentation for the read_expression() function in expression.js from the svelte codebase.

Function javascript Compiler Transformer calls 3 called by 6

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

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