Ich habe an einer anderen Stack-basierten Golfsprache namens Stackgoat gearbeitet . In dieser Herausforderung schreiben Sie einen Tokenizer für Stackgoat (oder wirklich alle allgemeinen Stack-basierten Sprachen).
Beispiele
"PPCG"23+
["PPCG", '23', '+']
'a "bc" +
['"a"', '"bc"', '+']
12 34+-"abc\"de'fg\\"
['12', '34', '+', '-', '"abc\"de'fg\\"']
"foo
['"foo"']
(empty input)
[]
' ""
['" "', '""']
Spezifikation
Die drei Typen, mit denen Sie umgehen müssen, sind:
- Streicher, alles drin
""
- Zahlen, beliebige Ziffernfolge
- Operatoren, jedes andere einzelne Zeichen außer Leerzeichen
Leerzeichen werden im Wesentlichen ignoriert, es sei denn, sie befinden sich in einer Zeichenfolge oder trennen zwei Zahlen.
String / char spec:
- Zeichenfolgen werden durch a begrenzt.
"
Wenn ein\
Zeichen auftritt, sollte das nächste Zeichen mit einem Escapezeichen versehen werden. '
Zeichen werden mit einem vorangestellt, und das Zeichen nach dem'
sollte in ein Zeichenkettenliteral umgewandelt werden.'a
->"a"
'
wird immer einen Charakter danach haben- Das Schließen von Anführungszeichen sollte automatisch erfolgen
Regeln:
- Keine Form von
eval
ist erlaubt
Input-Output:
- Die Eingabe kann über STDIN, Funktionsparameter oder die entsprechende Sprache erfolgen.
- Die Ausgabe sollte ein Array oder die nächstliegende Entsprechung Ihrer Sprache sein.
'"PPCG"'
statt nur sein "PPCG"
?