7.8.ฟังก์ชันผู้ใช้ %name(args) (ตั้งแต่ 1.1.2)
ฟังก์ชันผู้ใช้เป็นรายการในคลังคำ {name, arity, rules} ที่เขียนการเรียกใหม่เป็นข้อความสคริปต์.
การขยายเป็น ขั้นข้อความล่วงหน้า (text pre-pass) ที่ทำก่อนแบ่งโทเคน (§7.2) ไวยากรณ์โทเคน
จึงไม่มี %.
- การเรียก.
%ตามด้วยidentและข้อความอาร์กิวเมนต์ในวงเล็บที่ไม่มีวงเล็บซ้อน. เนมสเปซ%แยกจาก$:%pauseและ$pauseมีพร้อมกันได้. - ชื่อ. ต้อง (MUST) ตรงกับ
[A-Za-z_][A-Za-z0-9_]*ยาวไม่เกิน 64 อักขระ (ที่จัดเก็บอาจ (MAY) ตัดชื่อที่ยาวกว่า) และไม่ซ้ำกันแบบไม่สนตัวพิมพ์; การเรียกค้นชื่อแบบไม่สนตัวพิมพ์. - กฎ. รายการเรียงลำดับของคู่
{pattern, template}จำนวน 1 ถึง 200 คู่. ข้อความอาร์กิวเมนต์ ถูกแบ่งที่,ตัดช่องว่างหัวท้ายของแต่ละอาร์กิวเมนต์ แล้วต่อกลับด้วย,. กฎถูกลองตามลำดับ; กฎ แรก ที่แพตเทิร์นตรงที่ตำแหน่งใดก็ได้ในสตริงนั้นชนะ (แพตเทิร์นไม่ผูกตำแหน่งเว้นแต่เขียน^/$) และการเรียกถูกแทนด้วยเทมเพลตของกฎนั้น. - เทมเพลต.
\1–\9แทรกกลุ่มที่จับได้;\{1}–\{9}เหมือนกัน ใช้เมื่อตามด้วยตัวเลข;\\คือแบ็กสแลชตามตัวอักษร. การอ้างกลุ่มที่แพตเทิร์นไม่ได้นิยามถูกปฏิเสธตอนบันทึกฟังก์ชัน; กลุ่ม ทางเลือกที่ไม่ตรงแทรกข้อความว่าง. - Arity เป็น 0–9 และเป็นเพียงข้อมูลประกอบ; ไม่เคยใช้กั้นการจับคู่.
- รอบการขยาย. หนึ่งรอบแทนทุกการเรียกในข้อความปัจจุบันจากซ้ายไปขวา; ข้อความที่รอบหนึ่งสร้างขึ้น
ถูกสแกนอีกครั้งในรอบถัดไปเท่านั้น. ทำได้สูงสุด 32 รอบ และแทนได้สูงสุด 500 ครั้งต่อสคริปต์.
การเรียกที่เหลือหลัง 32 รอบเป็นข้อผิดพลาด (
expansion too deep); เกิน 500 ครั้งเป็นข้อผิดพลาด (expanded too many items). - ชุดย่อยนิพจน์ปรกติที่พกพาได้. แพตเทิร์นต้อง (MUST) ยาวไม่เกิน 2000 อักขระ และเทมเพลต
ไม่เกิน 4000; ที่จัดเก็บอาจ (MAY) ตัดค่าที่ยาวกว่า. แพตเทิร์นจับคู่บน Unicode code point
โดย
\d,\w,\sหมายถึงคลาส ASCII. แพตเทิร์นต้องไม่ (MUST NOT) ใช้การอ้างกลับ (\1–\9,\k), lookahead หรือ lookbehind ((?=,(?!,(?<=,(?<!), กลุ่มที่มีชื่อ ((?P<,(?<,(?') หรือรูป(?อื่นใด ยกเว้นกลุ่มไม่จับ(?:. นอกคลาสอักขระ แบ็กสแลช หลีกได้เฉพาะd D w W s S b B n r t f v 0 x u \ ^ $ . | ? * + ( ) [ ] { } /. ฟังก์ชันที่ฝ่าฝืน ถูกปฏิเสธตอนบันทึก. - ข้อผิดพลาด. ฟังก์ชันที่ไม่รู้จัก การเรียกที่ไม่มีกฎใดตรงกับอาร์กิวเมนต์ และแพตเทิร์นที่คอมไพล์ ไม่ได้ เป็นข้อผิดพลาด; การเรียกที่ล้มเหลวถูกลบออกจากข้อความ และรายงานพร้อมข้อผิดพลาดอื่นของสคริปต์.