Pracowałem nad innym językiem gry w golfa o nazwie Stackgoat . W tym wyzwaniu będziesz pisać Tokenizera dla Stackgoat (lub tak naprawdę innych ogólnych języków opartych na stosie).
Przykłady
"PPCG"23+
["PPCG", '23', '+']
'a "bc" +
['"a"', '"bc"', '+']
12 34+-"abc\"de'fg\\"
['12', '34', '+', '-', '"abc\"de'fg\\"']
"foo
['"foo"']
(empty input)
[]
' ""
['" "', '""']
Specyfikacja
Trzy typy, z którymi musisz sobie poradzić to:
- Ciągi, wszystko w środku
""
- Liczby, dowolna sekwencja cyfr
- Operatory, każdy inny pojedynczy znak oprócz białych znaków
Białe znaki są zasadniczo ignorowane, chyba że znajdują się w ciągu znaków lub nie rozdzielają dwóch liczb.
Specyfikacja string / char:
- Ciągi są rozdzielane znakiem a
"
, a po\
napotkaniu znaku należy uciec do następnego znaku. - Znaki są poprzedzane przez a,
'
a po nim znak'
należy przekształcić w literał łańcuchowy.'a
->"a"
'
zawsze będzie po nim miała postać- Cytaty końcowe powinny być wstawiane automatycznie
Zasady:
- Żadna forma nie
eval
jest dozwolona
Wejście wyjście:
- Dane wejściowe można pobierać poprzez STDIN, parametry funkcji lub odpowiednik języka.
- Wynik powinien być tablicą lub najbliższym odpowiednikiem twojego języka.
'"PPCG"'
zamiast po prostu "PPCG"
?