Я работал над другим основанным на стеке языком игры в гольф под названием 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"?