C:
การทำงานกับ YAML

วิธีการ:

การทำงานกับ YAML ในภาษา C จำเป็นต้องใช้ไลบรารี เนื่องจากไลบรารีมาตรฐานของภาษา C ไม่มีการสนับสนุนโดยตรงสำหรับการวิเคราะห์หรือการเรียงลำดับ YAML ไลบรารี YAML ที่ได้รับความนิยมสำหรับภาษา C คือ libyaml ซึ่งมีทั้งอินเทอร์เฟซระดับต่ำและระดับสูงสำหรับการวิเคราะห์และการสร้าง YAML ด้านล่างนี้เป็นตัวอย่างของวิธีวิเคราะห์ไฟล์ YAML ง่ายๆ โดยใช้ libyaml:

ขั้นแรก, คุณต้องติดตั้งไลบรารี libyaml หากคุณใช้ระบบที่คล้ายกับ Unix, คุณสามารถติดตั้งได้โดยปกติผ่าน package manager ของคุณ เช่น บน Ubuntu:

sudo apt-get install libyaml-dev

ต่อไป, พิจารณาไฟล์ YAML ง่ายๆ ที่ชื่อว่า config.yaml:

name: John Doe
age: 29
married: false

นี่คือ ตัวอย่างพื้นฐานของวิธีวิเคราะห์ไฟล์ YAML นี้ในภาษา C:

#include <yaml.h>
#include <stdio.h>
#include <stdlib.h>

void process_yaml_file(const char *filename) {
    FILE *fh = fopen(filename, "rb");
    yaml_parser_t parser;
    yaml_event_t event;

    if (!yaml_parser_initialize(&parser))
        fputs("Failed to initialize YAML parser!\n", stderr);

    if (fh == NULL)
        fputs("Failed to open file!\n", stderr);

    yaml_parser_set_input_file(&parser, fh);

    while (1) {
        if (!yaml_parser_parse(&parser, &event))
            break;

        if (event.type == YAML_SCALAR_EVENT) {
            printf("Value: %s\n", event.data.scalar.value);
        }

        if (event.type == YAML_STREAM_END_EVENT)
            break;

        yaml_event_delete(&event);
    }

    yaml_parser_delete(&parser);
    fclose(fh);
}

int main() {
    process_yaml_file("config.yaml");
    return 0;
}

โปรแกรมง่าย ๆ นี้เปิดไฟล์ YAML, เริ่มต้นการวิเคราะห์ YAML, และอ่านไฟล์ โดยพิมพ์ค่าสเกลาร์ต่างๆ (ในตัวอย่างนี้ คือฟิลด์ของ YAML ง่ายๆ ของเรา) โปรดทราบว่าการตรวจสอบข้อผิดพลาดในตัวอย่างง่ายนี้มีน้อยมากและควรมีมากกว่านี้ในโค้ดของระบบจริง

การรันโปรแกรมกับ config.yaml ของเราจะแสดงผล:

Value: John Doe
Value: 29
Value: false

การศึกษาลึก

YAML ถูกปล่อยออกมาครั้งแรกในปี 2001 และออกแบบให้มีความเข้าใจและใช้งานได้ง่ายกว่ารูปแบบการเรียงลำดับข้อมูลอื่นๆ เช่น XML หรือ JSON โดยยืมพื้นฐานจากหลายภาษาเช่น C, Perl และ Python สำหรับปรัชญาการออกแบบของมัน แม้ว่า YAML จะมีข้อได้เปรียบในเรื่องความเข้าใจง่ายและการแก้ไขโดยมนุษย์ แต่การวิเคราะห์ด้วยโปรแกรมสามารถซับซ้อนเนื่องจากโครงสร้างยึดตามการเยื้องและคุณสมบัติที่ครอบคลุมหลายอย่าง รวมทั้งการอ้างอิงและประเภทที่กำหนดเอง

ในขณะที่ libyaml มีการเข้าถึงระดับต่ำอย่างเข้มข้นสำหรับการวิเคราะห์และการสร้าง YAML ใน C, มันอาจจะยุ่งยากสำหรับงานง่ายๆ เนื่องจาก API ที่กว้างขวาง ด้วยเหตุผลเหล่านี้ บางโปรแกรมเมอร์อาจเลือกใช้ไลบรารีระดับสูงหรือรูปแบบการเรียงลำดับข้อมูลอื่นๆ เช่น JSON เมื่อทำงานในภาษา C โดยเฉพาะเมื่อต้องการการวิเคราะห์ที่มีประสิทธิภาพด้วยโค้ดที่น้อยที่สุดเป็นเรื่องสำคัญ อย่างไรก็ตาม YAML ยังคงเป็นทางเลือกที่นิยมสำหรับไฟล์การตั้งค่าและสถานการณ์ที่ความเข้าใจง่ายของมนุษย์เป็นสิ่งสำคัญ ทางเลือกเช่น TinyYAML หรือการฝังตัวแปลสูงระดับ (เช่น การฝัง Python หรือ Lua) อาจมีความสะดวกมากขึ้นสำหรับการใช้งานบางอย่าง โดยสร้างสมดุลระหว่างความง่ายในการใช้งานและความต้องการด้านประสิทธิภาพ