Stackgoat adında başka bir yığın tabanlı golf dili üzerinde çalışıyorum . Bu meydan okumada Stackgoat için bir Tokenizer (veya gerçekten herhangi bir yığın tabanlı dil) yazacaksınız.
Örnekler
"PPCG"23+
["PPCG", '23', '+']
'a "bc" +
['"a"', '"bc"', '+']
12 34+-"abc\"de'fg\\"
['12', '34', '+', '-', '"abc\"de'fg\\"']
"foo
['"foo"']
(empty input)
[]
' ""
['" "', '""']
Şartname
Ele almanız gereken üç tür:
- Teller, içindeki her şey
""
- Sayılar, herhangi bir basamak dizisi
- Operatörler, boşluk dışında başka herhangi bir karakter
Boşluk, bir dize içinde veya iki sayıyı ayırmadıkça yok sayılır.
Dize / karakter belirtimi:
- Dizeler a ile sınırlandırılır
"
ve a\
ile karşılaşıldığında bir sonraki karakter kaçmalıdır. - Karakterler a
'
ile başlar ve karakterden sonraki karakter'
bir dize değişmezine dönüştürülmelidir.'a
->"a"
'
ondan sonra her zaman bir karakter olacak- Kapanış teklifleri otomatik olarak eklenmelidir
Kurallar:
- Biçimine
eval
izin verilmez
Giriş çıkış:
- Giriş STDIN, işlev parametreleri veya dilinizin eşdeğeri aracılığıyla alınabilir.
- Çıktı bir dizi veya dilinizin en yakın eşdeğeri olmalıdır.
'"PPCG"'
sadece yerine "PPCG"
mi olmalıdır?