Я працював над іншою мовою для гри в гольф, що називається Stackgoat . У цьому виклику ви будете писати Tokenizer для Stackgoat (або насправді будь-яких загальних мов на основі стека).
Приклади
"PPCG"23+
["PPCG", '23', '+']
'a "bc" +
['"a"', '"bc"', '+']
12 34+-"abc\"de'fg\\"
['12', '34', '+', '-', '"abc\"de'fg\\"']
"foo
['"foo"']
(empty input)
[]
' ""
['" "', '""']
Специфікація
Три типи, з якими вам потрібно впоратися:
- Струни, все , що всередині
""
- Числа, будь-яка послідовність цифр
- Оператори, будь-який інший символ, крім пробілу
Пробіл по суті ігнорується, якщо він не знаходиться в рядку або не розділяє два числа.
Технічні характеристики:
- Рядки розмежовані символом a
"
, а коли\
зустрінеться a, слід перейти до наступного символу. - Символи задані
'
символом a, а символ після символу'
повинен бути перетворений в літеральний рядок.'a
->"a"
'
завжди матиме характер після нього- Закривальні котирування повинні бути автоматично вставлені
Правила:
- Не
eval
допускається жодна форма
Введення-виведення:
- Введення даних може здійснюватися через STDIN, параметри функції або еквівалент вашої мови.
- Вихід повинен бути масивом або найближчим еквівалентом вашої мови.
'"PPCG"'
замість просто "PPCG"
?