ling-lang 2030.1.13

Ling - The Omniglot Systems Language
Documentation
// โปรแกรมภาษาไทย - ตรงตามหลักไวยากรณ์ LALRPOP
// แต่ละบรรทัดสอดคล้องกับกฎ: Item = bind | form | choose | can | give

// 1. bind: ผูกชื่อกับนิพจน์ (ฟังก์ชันหลัก)
ผูก เริ่มต้น = ทำ {
    // ประกาศฟังก์ชันนับคำโดยใช้ bind
    ให้ นับคำ = ฟังก์ชัน (ข้อความ) {
        ถ้า ข้อความ == "" {
            คืนค่า 0;
        } มิฉะนั้น {
            ให้ คำ = แยกข้อความ(ข้อความ, " ");
            คืนค่า ความยาว(คำ);
        }
    };

    // ประกาศ pangram หลัก
    ให้ pangram = "หนูหนึ่งพ่อน้องขี่ควายไปหาดใหญ่ เราเจอเจกับเสือตัวโต งู นก เกาะแกะ เตะถุงฟ้าตกโต๊ะ แล้วพ่อว่า \"รถดี\" เอาเงินซื้อไข่เจียวใส่ชามใบใหญ่มากิน";

    // ใช้ฟังก์ชันนับคำ
    ให้ จำนวน = นับคำ(pangram);
    พิมพ์(จำนวน);
}

// 2. form: โครงสร้างข้อมูลสำหรับสัตว์ใน pangram
รูปแบบ สัตว์ {
    ชื่อ: ข้อความ,
    เสียง: ข้อความ,
    มีในPangram: ตรรกะ
}

// 3. choose: ชนิดข้อมูลสำหรับสถานะของสัตว์
เลือก สถานะสัตว์ {
    พบในประโยค,
    ไม่พบในประโยค,
    กำลังค้นหา(ข้อความ)
}

// 4. can: ลักษณะสำหรับสิ่งที่ส่งเสียงได้
สามารถ ส่งเสียงได้ {
    ฟังก์ชัน ร้อง() -> ข้อความ;
    ฟังก์ชัน ตรวจสอบ(text: ข้อความ) -> ตรรกะ;
}

// 5. give: การนำลักษณะไปใช้กับชนิดข้อมูล
ให้ สัตว์ {
    ฟังก์ชัน ร้อง() -> ข้อความ {
        ถ้า ตัวเอง.ชื่อ == "แกะ" {
            คืนค่า "แบร้!";
        } มิฉะนั้น ถ้า ตัวเอง.ชื่อ == "เสือ" {
            คืนค่า "โฮก!";
        } มิฉะนั้น {
            คืนค่า "...";
        }
    }

    ฟังก์ชัน ตรวจสอบ(text: ข้อความ) -> ตรรกะ {
        ตัวเอง.มีในPangram
    }
}