この解答例は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つのトークンとなります。- それ以外の文字は1つのトークンとして、その後に続く同じ種類の文字がなくなるまで結合されます。これは、整数と演算子に対応するために使用されます。
次に、関数が値を生成する方法は、ジェネレータ機能の使用方法に従います。トークンを作成すると、yield
ステートメントによってトークンがジェネレータから取り出され、それを呼び出し元に返します。
このように作成されたトークンは、計算エンジンで使用されることができます。