สถานะปริญญาโท:
พัฒนาสถานะ:
ไชสคริปต์
http://www.chaiscript.com
(c) โจนาธาน เทิร์นเนอร์ ปี 2552-2555 (c) เจสัน เทิร์นเนอร์ ปี 2552-2560
เผยแพร่ภายใต้ใบอนุญาต BSD โปรดดูรายละเอียดที่ "license.txt"
ChaiScript เป็นหนึ่งในภาษาสคริปต์แบบฝังเพียงภาษาเดียวที่ได้รับการออกแบบตั้งแต่พื้นฐานจนถึงเป้าหมาย C++ โดยตรง และใช้ประโยชน์จากเทคนิคการพัฒนา C++ สมัยใหม่ โดยทำงานร่วมกับนักพัฒนาว่าพวกเขาคาดหวังให้มันทำงานอย่างไร เนื่องจากเป็นแอปพลิเคชัน C++ ดั้งเดิม จึงมีข้อดีบางประการเหนือภาษาสคริปต์แบบฝังที่มีอยู่:
ChaiScript ต้องการคอมไพเลอร์ C++17 เพื่อสร้างด้วยการรองรับเทมเพลตที่หลากหลาย ได้รับการทดสอบด้วย gcc 7 และ clang 6 (พร้อม libcxx)
คุณสามารถดาวน์โหลดและติดตั้ง ChaiScript โดยใช้ตัวจัดการการพึ่งพา vcpkg:
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh
./vcpkg integrate install
vcpkg install chaiscript
พอร์ต ChaiScript ใน vcpkg ได้รับการปรับปรุงให้ทันสมัยโดยสมาชิกทีม Microsoft และผู้สนับสนุนชุมชน หากเวอร์ชันล้าสมัย โปรดสร้างปัญหาหรือดึงคำขอบนที่เก็บ vcpkg
#include <chaiscript/chaiscript.hpp>
ลงในไฟล์ต้นฉบับของคุณchai
ดังนี้ chaiscript::ChaiScript chai
เมื่อสร้างอินสแตนซ์แล้ว เอ็นจิ้นก็พร้อมที่จะเริ่มเรียกใช้แหล่ง ChaiScript คุณมีสองตัวเลือกหลักสำหรับการประมวลผลแหล่งที่มาของ ChaiScript: ทีละบรรทัดโดยใช้ chai.eval(string)
และทีละไฟล์โดยใช้ chai.eval_file(fname)
หากต้องการให้สคริปต์มองเห็นฟังก์ชันในโค้ด C++ จะต้องลงทะเบียนกับกลไกการเขียนสคริปต์ โดยโทรเพิ่ม:
chai.add(chaiscript::fun(&my_function), "my_function_name");
เมื่อลงทะเบียนแล้ว สคริปต์จะมองเห็นฟังก์ชันเป็น "my_function_name"
ChaiScript นั้นคล้ายคลึงกับ ECMAScript (aka JavaScript(tm)) แต่มีการปรับเปลี่ยนบางอย่างเพื่อให้ใช้งานได้ง่ายขึ้น สำหรับตัวอย่างการใช้งาน โปรดดูไดเร็กทอรี "ตัวอย่าง" และหากต้องการดูภาษาในเชิงลึกมากขึ้น การทดสอบหน่วยในไดเร็กทอรี "unittests" จะครอบคลุมพื้นฐานส่วนใหญ่
สำหรับตัวอย่างวิธีการลงทะเบียนส่วนต่างๆ ของแอปพลิเคชัน C++ ของคุณ โปรดดู "example.cpp" ในไดเรกทอรี "samples" Example.cpp เป็นรายละเอียดและแสดงทุกวิถีทางที่เป็นไปได้ในการทำงานกับไลบรารี สำหรับเอกสารประกอบเพิ่มเติม ให้สร้างเอกสารประกอบ doxygen ในโฟลเดอร์ build หรือดูที่เว็บไซต์ http://www.chaiscript.com
ตัวอย่างที่สมบูรณ์ที่สั้นที่สุดที่เป็นไปได้มีดังนี้:
// / main.cpp
# include < chaiscript/chaiscript.hpp >
double function ( int i, double j)
{
return i * j;
}
int main ()
{
chaiscript::ChaiScript chai;
chai. add ( chaiscript::fun (&function), " function " );
double d = chai. eval < double >( " function(3, 4.75); " );
}