/* eslint-disable */
const fn = (string, obj) => {
  console.log(string)
  console.log(obj)

  // 剔除空白符
  string = string.replace(/\s/g, '')

  // 错误情况，空字符串
  if (string === '') {
    console.log('error:空字符串')
    return false;
  }
  if (/^[\x\÷\+\-\*\/]/.test(string)) {
    // console.error(& amp; quot; 运算符开头 & amp; quot;);
    console.log('error:运算符开头')
    return false
  }

  // 错误情况，运算符结尾
  if (/[\x\÷\+\-\*\/]$/.test(string)) {
    // console.error(& amp; quot; 运算符结尾 & amp; quot;);
    console.log('error:运算符结尾')
    return false
  }

  // 错误情况，(后面是运算符或者)
  if (/\([\x\÷\+\-\*\/]/.test(string)) {
    // console.error(& amp; quot; (后面是运算符或者) & amp; quot;);
    console.log('error:后面是运算符或者')
    return false
  }
  // 错误情况，运算符连续
  if (/[\x\÷\+\-\*\/]{2,}/.test(string)) {
    console.log('error:运算符连续')
    return false
  }

  // 空括号
  if (/\(\)/.test(string)) {
    console.log('error:空括号')
    return false
  }

  // 错误情况，括号不配对
  var stack = []
  for (var i = 0, item; i < string.length; i++) {
    item = string.charAt(i)
    if (item === '(') {
      stack.push('(')
    } else if (item === ')') {
      if (stack.length > 0) {
        stack.pop()
      } else {
        console.log('error:括号不配对')
        return false
      }
    }
  }

  if (stack.length !== 0) {
    return false
  }

  // 错误情况，(后面是运算符
  if (/\([\x\÷\+\-\*\/]/.test(string)) {
    console.log('error:(后面是运算符')
    return false
  }

  // 错误情况，)前面是运算符
  if (/[\x\÷\+\-\*\/]\)/.test(string)) {
    console.log('error:)前面是运算符')
    return false
  }
		// 错误情况，(前面不是运算符
		if(/[^\+\-\*\/]\(/.test(string)){
      console.log('error:(前面不是运算符')
			return false;
		}
		
		// 错误情况，)后面不是运算符
		if(/\)[^\+\-\*\/]/.test(string)){
      console.log('error:)后面不是运算符')
			return false;
		}

  // 错误情况，变量没有来自“待选公式变量”
  var tmpStr = string.replace(/[\(\)\x\÷\+\-\*\/]{1,}/g, '`')
  var array = tmpStr.split(',')
  for (let i = 0, item; i < array.length; i++) {
    item = array[i]
    if (/[A-Z]/i.test(item) && typeof (obj[item]) === 'undefined') {
      console.log('error:变量没有来自“待选公式变量”')
      return false
    }
  }
  let stringarr = string.split(',')
  let objarr = Object.keys(obj)
  for (let index = 0; index < stringarr.length; index++) {
    if (objarr.indexOf(stringarr[index]) > -1) {
      if (stringarr[index + 1] === undefined) {

      } else if (
        stringarr[index + 1] !== '+' &&
        stringarr[index + 1] !== '.' &&
        stringarr[index + 1] !== '-' &&
        stringarr[index + 1] !== 'x' &&
        stringarr[index + 1] !== '÷' &&
        stringarr[index + 1] !== '(' &&
        stringarr[index + 1] !== ')') {
        console.log('error:变量没有来自“待选公式变量”')
        return false
      }
    }
  }

  return true
}
export default fn
