Tôi đã làm việc trên một ngôn ngữ chơi gôn dựa trên ngăn xếp khác gọi là Stackgoat . Trong thử thách này, bạn sẽ viết Tokenizer cho Stackgoat (hoặc thực sự là bất kỳ ngôn ngữ dựa trên ngăn xếp chung nào).
Ví dụ
"PPCG"23+
["PPCG", '23', '+']
'a "bc" +
['"a"', '"bc"', '+']
12 34+-"abc\"de'fg\\"
['12', '34', '+', '-', '"abc\"de'fg\\"']
"foo
['"foo"']
(empty input)
[]
' ""
['" "', '""']
Sự chỉ rõ
Ba loại bạn sẽ cần xử lý là:
- Chuỗi, bất cứ điều gì trong
""
- Số, bất kỳ dãy số
- Toán tử, bất kỳ ký tự đơn nào khác ngoài khoảng trắng
Khoảng trắng về cơ bản bị bỏ qua trừ khi nó nằm trong một chuỗi hoặc tách hai số.
Chuỗi / char spec:
- Các chuỗi được phân định bởi a
"
và khi\
gặp a, ký tự tiếp theo sẽ được thoát. - Chars được thêm vào bởi a
'
và ký tự sau'
nên được chuyển đổi thành một chuỗi ký tự.'a
->"a"
'
sẽ luôn có một nhân vật sau nó- Báo giá kết thúc phải được tự động chèn
Quy tắc:
- Không có hình thức nào
eval
được cho phép
Đầu ra đầu vào:
- Đầu vào có thể được thực hiện thông qua STDIN, tham số chức năng hoặc tương đương với ngôn ngữ của bạn.
- Đầu ra phải là một mảng hoặc tương đương gần nhất với ngôn ngữ của bạn.
'"PPCG"'
thay vì chỉ "PPCG"
không?