Я работал над другим основанным на стеке языком игры в гольф под названием 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"
'
после него всегда будет персонаж- Закрывающие кавычки должны быть вставлены автоматически
Правила:
- Форма
eval
не разрешена
Ввод, вывод:
- Ввод может быть сделан через STDIN, параметры функции или эквивалент вашего языка.
- Вывод должен быть массивом или ближайшим эквивалентом вашего языка.
'"PPCG"'
вместо просто "PPCG"
?