ในเอกสารอ้างอิงของภาษา swift บนเว็บไซต์ swift.org นั้น จะมีการเขียนการใช้งานภาษา swift ในรูปแบบแบบมาตรฐานเรียกว่า Swift grammar (เหมือน grammar การใช้งานภาษาอังกฤษ) การรู้จักกับแกรมมาของภาษา swfit จะช่วยให้อ่านเอกสารอ้างอิงได้เข้าใจมากขึ้น
Swift Grammar notation
คำนิยาม
Grammar Production : รูปแบบที่สามารถเป็นไปได้ อยู่ด้านขวาของลูกศร (→)
Grammar Production Rule : กฎของ grammar ในเรื่องนั้นๆ ซึ่งก็คือข้อความ grammar ทั้งหมดนั่นเอง
สัญลักษณ์ที่ใช้ในเอกสารอ้างอิงของ swift มีดังนี้
1 ลูกศร (→)
ลูกศรในเอกสาร swift (→) ใช้ระบุ grammar production สามารถอ่านได้ว่า “Can consist of” หรือ “สามารถที่จะมี”
ยกตัวอย่าง
getter-setter-block → { getter-clause setter-clause opt } | { setter-clause getter-clause }
อ่านว่า getter-setter-block สามารถที่จะมี getter block + setter block (opt – setter block อาจจะมีหรือไม่มีก็ได้) หรือ setter block + getter block
2 ตัวอักษรเอียง
ตัวอักษรเอียง (italic text) หมายถึง Syntactic categories (ประเภทของการสร้างประโยค) สามารถระบุได้ทั้งฝั่งซ้ายและฝั่งขวาของลูกศร (คือเอกสารจะเขียนไว้ได้ทั้งซ้ายและขวาของ grammar production rule ถ้าอยู่ฝั่งขวามักจะเป็น link ดังตัวอย่างด้านล่าง)
ตัวอย่างเช่น
getter-setter-block → { getter-clause setter-clause opt } | { setter-clause getter-clause }
syntactic category ในประโยคนี้คือ
getter-setter-block
getter-clause (syntactic category ที่เป็น link ไปดูที่ไปที่มาต่อได้)
setter-clause
3 ตัวอักษรหนา
ตัวอักษรหนา (boldface constant width text) จะปรากฎเฉพาะด้านขวาของ production grammar rule
บ่งบอกถึงเครื่องหมายวรรคตอน (Punctuation) หรือ คำ Keyword ต่างๆ ตัวอย่างเช่น วงเล็บปีกกา ( { } ), true/false, nil เป็นต้น
ตัวอย่าง
boolean-literal → true | false
หมายความว่า ค่าของตัวแปร boolean จะสามารถมี true หรือ false
4 vertical bars (|) = “หรือ”
Vertical bar (เส้นขีดแนวดิ่ง) บ่งบอกถึงคำว่า “หรือ”
มันเป็น alternate production rule คือ กฎหรือรูปแบบอาจจะเป็นไปได้สำหรับ grammar production นั้นๆ
กรณีที่มี alternate production rule หลายๆ แบบ ก็จะเขียน grammar production rule แยกบรรทัดกัน
ตัวอย่างการแตกประโยค “หรือ”
GRAMMAR OF A GETTER-SETTER BLOCK
getter-setter-block → { getter-clause setter-clause opt } | { setter-clause getter-clause }
แตกออกเป็นสองบรรทัดได้ดังนี้
getter-setter-block → { getter-clause setter-clause opt }
getter-setter-block → { setter-clause getter-clause }
ซึ่งทั้งสองแบบก็ให้ความหมายเดียวกัน
5 Opt
Opt (ตัวเอียง) ใช้ระบุใน grammar production (ด้านขวาของลูกศร) บอกถึงจะมีหรือไม่มีก็ได้ (option)
บทความอื่นๆ
Cocoapods ตอนที่ 1 – แหล่งรวม Library สำหรับนักพัฒนา