อักขระพิเศษบางตัวจะได้รับอนุญาตก็ต่อเมื่อนำหน้าด้วยอักขระ Escape

Aug 18 2020

ฉันต้องการที่จะสร้างการแสดงออกปกติ (ในรูปแบบของไฟแนนเชี่ที่มีมากขึ้น OCaml เหมือนไวยากรณ์)สำหรับการเรียนของสตริงที่4 ตัวอักษร[, ], #,''ได้รับอนุญาตเท่านั้นถ้าพวกเขาจะนำหน้าด้วยตัวหนี

นี่คือตัวอย่างที่ถูกต้อง:

  • '#Data, abc'#Headers, abc'#Totals'[efg, 123'#Totals']efg, abc,123

นี่คือตัวอย่างบางส่วนที่ไม่ถูกต้อง:

  • #Data, abc#Headers, abc#Totals[efg, 123#Totals]efg,'#Totals[efg

หวังว่าคำจำกัดความจะชัดเจน อย่างแรกไม่มีใครรู้วิธีสร้างนิพจน์ทั่วไปดังกล่าว? ประการที่สองมีใครรู้วิธีสร้างนิพจน์ทั่วไปดังกล่าว(ในรูปแบบของ lex ด้วยไวยากรณ์ที่คล้าย OCaml มากกว่า)ที่ ocamllex ยอมรับได้หรือไม่?

คำตอบ

JeffreyScofield Aug 18 2020 at 08:01

คุณไม่ได้บอกว่าสตริงที่ยอมรับมีลักษณะเหมือนตัวอย่างอื่น ๆ เพียงแค่ให้เป็นรูปธรรมขอบอกว่าตัวอักษรตัวพิมพ์เล็กและตัวเลขที่ได้รับอนุญาตและ 4 'ตัวอักษรพิเศษที่ได้รับอนุญาตเท่านั้นถ้านำหน้าด้วย

จากนั้นอธิบายโดยการปิดคลีนของชุดสตริงอักขระหนึ่งตัว 36 ตัวและสตริงสองอักขระ 4 ตัว

ซึ่งมีลักษณะดังนี้:

 (['a' - 'z' '0' - '9'] | '\'' ['\'' '#' '[' ']'])*