私は、に取り組んできた別のと呼ばれるスタックベースのゴルフの言語Stackgoat。この課題では、Stackgoat(または実際には一般的なスタックベースの言語)のTokenizerを作成します。
例
"PPCG"23+
["PPCG", '23', '+']
'a "bc" +
['"a"', '"bc"', '+']
12 34+-"abc\"de'fg\\"
['12', '34', '+', '-', '"abc\"de'fg\\"']
"foo
['"foo"']
(empty input)
[]
' ""
['" "', '""']
仕様
処理する必要がある3つのタイプは次のとおりです。
- ストリングス、何も内
""
- 数字、数字列
- 演算子、空白以外の任意の単一文字
空白は、文字列内にあるか、2つの数値を区切っていない限り、本質的に無視されます。
文字列/文字仕様:
- 文字列はで区切られ、が検出された
"
場合\
、次の文字をエスケープする必要があります。 '
文字はa で始まり、その後の'
文字は文字列リテラルに変換されます。'a
->"a"
'
常にその後に文字があります- 終値を自動挿入する必要があります
ルール:
- の形式
eval
は許可されません
入出力:
- 入力は、STDIN、関数パラメーター、または同等の言語を通じて取得できます。
- 出力は、配列または言語に最も近いものでなければなりません。
5
@Doorknob、真剣に?
—
LegionMammal978
@ LegionMammal978はい、真剣に。
—
アレックスA.
出力はSTDOUTにできますか?
—
ドアノブ
@ZachGatesはい、ほとんどの言語は\もエスケープ文字として処理します。そのため、言語で明らかに必要な場合は、エスケープする必要があります。
—
ダウンゴート
また、最初の例では、結果の最初の要素
—
ファンドモニカの訴訟
'"PPCG"'
は単にではなく"PPCG"
?