ฉันได้รับการทำงานในอีกภาษากอล์ฟสแต็คที่เรียกว่า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"
?