hardHash TableRecursionStackString 0 views

Parse Lisp Expression

You are given a string expression representing a Lisp-like expression to return the integer value of.

You are given a string expression representing a Lisp-like expression to return the integer value of.

The syntax for these expressions is given as follows.

Parse Lisp Expression diagram

Example 1

Input: expression = "(let x 2 (mult x (let x 3 y 4 (add x y))))"

Output: 14

Explanation: In the expression (add x y), when checking for the value of the variable x, we check from the innermost scope to the outermost in the context of the variable we are trying to evaluate. Since x = 3 is found first, the value of x is 3.

Example 2

Input: expression = "(let x 3 x 2 x)"

Output: 2

Explanation: Assignment in let statements is processed sequentially.

Example 3

Input: expression = "(let x 1 y 2 x (add x y) (add x y))"

Output: 5

Explanation: The first (add x y) evaluates as 3, and is assigned to x. The second (add x y) evaluates as 3+2 = 5.

Constraints

  • 1 <= expression.length <= 2000
  • There are no leading or trailing spaces in expression.
  • All tokens are separated by a single space in expression.
  • The answer and all intermediate calculations of that answer are guaranteed to fit in a 32-bit integer.
  • The expression is guaranteed to be legal and evaluate to an integer.

Hints

Companies

No companies reported yet.

Discussion

Sign in to join the discussion.

Loading discussion...

Test results

No test cases yet.