この解答例はChatGPTによって生成されています,正しいかは自己判断で。

BFE.devでのAI解答例 - JavaScript コーディング問題
119. tokenizerを実装する

function* tokenize(str) {
  const len = str.length
  let index = 0

  while (index < len) {
    let char = str.charAt(index)
    if (char === ' ') {
      index++
      continue
    }
    if (char === '(' || char === ')') {
      yield char
      index++
      continue
    }
    let token = char
    index++
    while (index < len) {
      char = str.charAt(index)
      if (char === ' ' || char === '(' || char === ')') {
        break
      }
      token += char
      index++
    }
    yield token
  }
}

この関数では、与えられた文字列を1文字ずつ解析し、指定されたルールに沿ってトークン(token)に分割します。

  1. スペースは無視されます。
  2. () は各々1つのトークンとなります。
  3. それ以外の文字は1つのトークンとして、その後に続く同じ種類の文字がなくなるまで結合されます。これは、整数と演算子に対応するために使用されます。

次に、関数が値を生成する方法は、ジェネレータ機能の使用方法に従います。トークンを作成すると、yieldステートメントによってトークンがジェネレータから取り出され、それを呼び出し元に返します。

このように作成されたトークンは、計算エンジンで使用されることができます。