| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 | function last(array) {  return array[array.length - 1]}let brackets = {  /**   * Parse string to nodes tree   */  parse(str) {    let current = ['']    let stack = [current]    for (let sym of str) {      if (sym === '(') {        current = ['']        last(stack).push(current)        stack.push(current)        continue      }      if (sym === ')') {        stack.pop()        current = last(stack)        current.push('')        continue      }      current[current.length - 1] += sym    }    return stack[0]  },  /**   * Generate output string by nodes tree   */  stringify(ast) {    let result = ''    for (let i of ast) {      if (typeof i === 'object') {        result += `(${brackets.stringify(i)})`        continue      }      result += i    }    return result  }}module.exports = brackets
 |