การใช้งานง่าย ๆ การเขียนส่วนหัวเท่านั้นข้อโต้แย้งบรรทัดคำสั่งแยกวิเคราะห์สำหรับ C ++ 11 ขึ้นไป
| รับ | |
| ใบอนุญาต | |
| มาตรฐาน | |
| สถิติ | |
| การทดสอบ |
แจกจ่ายภายใต้ใบอนุญาตซอฟต์แวร์ Boost เวอร์ชัน 1.0 (ดู File License.txt หรือคัดลอกที่ http://www.boost.org/license_1_0.txt)
ส่วนหัวเฉพาะที่ไม่มีการพึ่งพาภายนอก (ยกเว้นไลบรารี std )
กำหนดอินเทอร์เฟซของคุณหนึ่งครั้งเพื่อรับการแยกวิเคราะห์พิมพ์การแปลงและสตริงการใช้งานโดยไม่มีความซ้ำซ้อน
การแต่ง opt หรือ arg แต่ละตัวเป็นตัวแยกวิเคราะห์อิสระ รวมสิ่งเหล่านี้เพื่อผลิตตัวแยกวิเคราะห์คอมโพสิต - สามารถทำได้ในขั้นตอนในการเรียกใช้ฟังก์ชั่นหลายรายการ - หรือแม้แต่โครงการ
ผูกพาร์สเซอร์โดยตรงกับตัวแปรที่จะได้รับผลลัพธ์ของการแยกวิเคราะห์ - ไม่มีพจนานุกรมกลางที่ต้องกังวล
หรือยังสามารถผูกพาร์สเซอร์กับแลมบ์ดาเพื่อการจัดการที่กำหนดเองมากขึ้น
นำเสนอประเภทจากตัวแปรที่ถูกผูกไว้หรือแลมบ์ดาและดำเนินการแปลงประเภท (ผ่าน ostream << ) โดยมีการจัดการข้อผิดพลาดเบื้องหลัง
ผูกพาร์สเซอร์กับเวกเตอร์สำหรับ ARGs ที่สามารถมีค่าได้หลายค่า
ใช้ประเภทผลลัพธ์สำหรับการแพร่กระจายข้อผิดพลาดแทนที่จะเป็นข้อยกเว้น (ยังไม่ได้สร้างโดยมีข้อยกเว้นถูกปิดใช้งาน แต่จะเกิดขึ้นในภายหลัง)
โมเดลมาตรฐาน POSIX สำหรับพฤติกรรมการเลือกระยะสั้นและยาว
ไวยากรณ์ตัวเลือกที่ปรับแต่งได้
ระบุ Cardinality ของ arg -s จากหนึ่งถึงหลาย ๆ คน
จำกัด ค่าตัวเลือกเป็นชุดของค่าที่ระบุ
กลุ่มอาร์กิวเมนต์แบบเรียกซ้ำที่มีการเรียกกลับเพื่อตรวจจับ สิ่งนี้ช่วยให้ข้อมูลจำเพาะของคำสั่งย่อยที่ง่ายและทั่วไป
หากต้องการใช้เพียงแค่ #include <lyra/lyra.hpp>
ตัวแยกวิเคราะห์สำหรับตัวเลือกเดียวสามารถสร้างได้เช่นนี้:
int width = 0 ;
auto cli = lyra::cli()
| lyra::opt( width, " width " )
[ " -w " ][ " --width " ]
( " How wide should it be? " );คุณสามารถใช้ตัวแยกวิเคราะห์นี้ได้โดยตรงเช่นนี้:
auto result = cli.parse( { argc, argv } );
if ( !result )
{
std::cerr << " Error in command line: " << result. message () << std::endl;
exit ( 1 );
}
// Everything was ok, width will have a value if supplied on command line.โปรดทราบว่าไม่มีการใช้ข้อยกเว้นสำหรับการจัดการข้อผิดพลาด
คุณสามารถรวมตัวแยกวิเคราะห์ได้โดยการแต่งกับ | , แบบนี้:
int width = 0 ;
std::string name;
bool doIt = false ;
std::string command;
auto cli
= lyra::opt( width, " width " )
[ " -w " ][ " --width " ]
( " How wide should it be? " )
| lyra::opt( name, " name " )
[ " -n " ][ " --name " ]
( " By what name should I be known " )
| lyra::opt( doIt )
[ " -d " ][ " --doit " ]
( " Do the thing " )
| lyra::arg( command, " command " )
( " which command to run " ); opt ระบุตัวเลือกที่เริ่มต้นด้วยเส้นประสั้น ( - ) หรือเส้นประยาว ( -- ) ตัวเลือกอาจเป็นข้อโต้แย้ง (เช่น -w 42 ) ซึ่งในกรณีนี้ opt จะใช้อาร์กิวเมนต์ที่สอง -คำใบ้หรือพวกเขาเป็นธงบริสุทธิ์ (เช่น -d ) ซึ่งในกรณีนี้ opt ใช้มีเพียงอาร์กิวเมนต์เดียว -ซึ่งต้องเป็นบูลีน ชื่อตัวเลือกมีให้ในชุดวงเล็บสี่เหลี่ยมหนึ่งชุดขึ้นไปและสามารถให้สตริงคำอธิบายในวงเล็บได้ อาร์กิวเมนต์แรกของ opt คือตัวแปรใด ๆ ท้องถิ่นสมาชิกระดับโลกทุกประเภทที่สามารถแปลงจากสตริงโดยใช้ std::ostream
arg ระบุข้อโต้แย้งที่ไม่ได้เชื่อมโยงกับตัวเลือกและไม่มีชื่อวงเล็บเหลี่ยม พวกเขาทำงานเช่นเดียวกับ opt
สามารถรับสตริงการใช้งานได้โดยการแทรกตัวแยกวิเคราะห์ลงในสตรีม สตริงการใช้งานถูกสร้างขึ้นจากข้อมูลที่ให้มา
เพื่อความสะดวกตัวเลือกความช่วยเหลือมาตรฐาน ( -h , --help และ -? ) สามารถระบุได้โดยใช้ตัวแยกวิเคราะห์ help ซึ่งเพียงแค่ใช้บูลีนที่จะผูกกับ
มีรุ่นหัวเดียวที่สร้างขึ้นจากไฟล์ต้นฉบับ คุณสามารถค้นหาได้ที่ data/single_include/lyra/lyra.hpp ข้อแม้บางอย่างสำหรับมัน:
ไม่ใช่วิธีที่ต้องการในการใช้ห้องสมุด
มันไม่ได้ทดสอบอย่างละเอียด
มีไว้สำหรับใช้กรณีเช่นคอมไพเลอร์ Explorer ในกรณีที่อนุญาตให้ทำการทดลองได้ทันที
การสนับสนุนจะไม่เป็นลำดับความสำคัญ
ดังนั้นจึงต้องการใช้แหล่งข้อมูลหลายไฟล์ปกติในโครงการของคุณ
สำหรับข้อมูลเพิ่มเติมและเอกสารโปรดดูที่เว็บไซต์