7.4.การแปลงชื่อ (Name resolution) (ตั้งแต่ 1.1.0)
ชื่อในโทเคนกลอส (หลังตัด ! ท้ายและ (args) ออก) ถูกค้นในคลังคำแบบไม่สนตัวพิมพ์:
- ตรงทุกตัวอักษร. หากมีรายการเดียวที่ชื่อนี้ ให้ใช้รายการนั้น. รายการ draft ใช้ได้เมื่อเป็นรายการเดียว
ที่ตรง. หากมีมากกว่าหนึ่งรายการที่ชื่อนี้ (รวมกรณีรายการสมบูรณ์ชนกับ draft) สคริปต์ผิดพลาด
(
ambiguous gloss name). - รูปแปรที่ระบุชัด
NAME#var. หากไม่มีรายการชื่อNAME#varตรงทุกตัว โทเคนถอยไปใช้รายการ ชื่อNAME(ใช้กฎตรงทุกตัวเดียวกัน) และไม่สุ่มไปยังรูปแปรอื่น. หากไม่มีทั้งสอง ถือว่าไม่รู้จักชื่อ. - ตระกูลรูปแปรแบบไม่ระบุ. ชื่อที่ไม่มี
#ซึ่งไม่ตรงรายการใดแต่เป็นหัวของรายการชื่อNAME#…จะสุ่มเลือกสมาชิกหนึ่งตัวแบบสม่ำเสมอ โดยเลือกจากสมาชิกที่สมบูรณ์ (ไม่ใช่ draft) หากมี มิฉะนั้น จากสมาชิกทั้งหมด. การสุ่มเกิดใหม่ทุกครั้งที่ประกอบ และผู้ผลิตที่เขียนสคริปต์กลับต้อง (MUST) คงชื่อNAMEแบบไม่ระบุไว้. - มิฉะนั้นถือว่าไม่รู้จักชื่อ (
unknown gloss) ซึ่งเป็นข้อผิดพลาด.
ชื่อการแสดงออก (@name) ค้นด้วยวิธีเดียวกันโดยไม่มีรูปแปร: ตรงหนึ่งรายการใช้รายการนั้น;
ไม่ตรงเลยคือ unknown expression; ตรงมากกว่าหนึ่งคือ ambiguous expression name.
นามแฝง (alias) และกลอสประกอบ (composed gloss) เป็นรายการระดับคลังคำ ซึ่งนิยามไว้ที่นี่ เพื่อการแปลงชื่อเท่านั้น:
- ชื่อ นามแฝง แปลงไปยังกลอสหลัก (หนึ่งขั้น) และใช้คีย์เฟรมของกลอสหลักนั้น. การพึ่งพิงต้นทาง ถูกบันทึกกับกลอสหลัก.
- กลอสประกอบ จัดเก็บสคริปต์และคีย์เฟรมที่ประกอบจากสคริปต์นั้น. ในลำดับ กลอสประกอบถูกวาง
เหมือนกลอสทั่วไป. สคริปต์ของกลอสประกอบต้องไม่ (MUST NOT) อ้างอิงกลอสประกอบอื่น (ไม่มีลูกโซ่
จึงไม่มีวงวน) และต้องไม่ใช้ตระกูลรูปแปรแบบไม่ระบุ (ผลต้องคงที่); ทั้งสองกรณีเป็นข้อผิดพลาด.
เมื่อประกอบกลอสประกอบ คีย์ถูกเลื่อนฐานให้คีย์เฟรมแรกอยู่ที่เฟรม 0 (ไม่มีช่วงนำเข้าและช่วงปิดท้าย),
เครื่องหมายการแสดงออกถูก อบ (bake) ลงในคีย์เฟรมท่าทางของกลุ่มอารมณ์
h b f mเป็น แทนการเก็บเป็นการอ้างอิง และNAME!เติมค่าจากค่า default ในทะเบียน. สคริปต์ที่ไม่วางอะไรเลยเป็นข้อผิดพลาด.