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) อาจมีความสะดวกมากขึ้นสำหรับการใช้งานบางอย่าง โดยสร้างสมดุลระหว่างความง่ายในการใช้งานและความต้องการด้านประสิทธิภาพ