mysql (สำหรับตอนนี้) lexer, parser, รูปแบบภาษาและเครื่องวิเคราะห์แบบคงที่ที่เขียนใน PHP
มันเป็นตัวแยกวิเคราะห์ที่ตรวจสอบแล้วซึ่งสร้างวัตถุที่ใช้งานอินเตอร์เฟส SQLFTW SQL Interface สำหรับแต่ละคำสั่ง SQL ที่รองรับประมาณ 140 คำสั่ง คำสั่งทำแบบจำลองแง่มุมทางไวยากรณ์ของรหัส SQL ไม่ใช่แง่มุมของโดเมน (โมเดลวิธีการเขียนแบบสอบถาม) อย่างไรก็ตามไม่ได้ติดตามพื้นที่สีขาวและในปัจจุบันไม่สนใจความคิดเห็นบางอย่าง
ตัวแยกวิเคราะห์นี้มีจุดประสงค์เพื่อเป็นพื้นฐานสำหรับสองโครงการอื่น ๆ :
ด้วยตัวเองสามารถใช้เพื่อตรวจสอบไวยากรณ์ของรหัส SQL (เช่นการย้ายข้อมูล)
รองรับคำสั่ง SQL ทั้งหมดจาก MySQL 5.X ถึง MySQL 8.0.34 และคุณสมบัติภาษาเกือบทั้งหมด
ไม่รองรับคุณสมบัติที่จะล้มเหลวในการแยกวิเคราะห์:
shift-jis , gb18030 หรือ utf-16 (ไม่สามารถแยกวิเคราะห์ได้)"foo" "bar" ; นี่คือการสนับสนุนในสตริง แต่ไม่ใช่ชื่อ)คุณสมบัติที่ได้รับการยอมรับ แต่ไม่สนใจ (ไม่มีแบบจำลองและการทำให้เป็นอนุกรม):
SELECT ... PROCEDURE ANALYSE (...) - ลบใน mysql 8WEIGHT_STRING(... LEVEL ...) - ลบใน mysql 8ฟีเจอร์ใช้วิธีอื่นนอกเหนือจาก MySQL:
ชั้นหลัก:
<?php
use ...
$platform = Platform::get(Platform::MYSQL, '8.0'); // version defaults to x.x.99 when no patch number is given
$config = new ParserConfig($platform);
$session = new Session($platform);
$parser = new Parser($config, $session);
// returns a Generator. will not parse anything if you don't iterate over it
$commands = $parser->parse('SELECT foo FROM ...');
foreach ($commands as $command) {
// Parser does not throw exceptions. this allows to parse partially invalid code and not fail on first error
if ($command instanceof InvalidCommand) {
$e = $command->getException();
...
}
...
}
ตอนนี้เราอยู่ที่ไหน:
เราทุกคนรักการกำหนดเวอร์ชันความหมายใช่มั้ย -
แต่ห้องสมุดนี้เป็นกิจการที่ยิ่งใหญ่และยังคงผ่านขั้นตอนการพัฒนาเบื้องต้นอย่างรวดเร็ว ฉันตัดสินใจที่จะติดแท็กและปล่อยเวอร์ชันแม้ในขั้นตอนนี้เพราะฉันคิดว่ามันดีกว่าไม่มีอะไรดีกว่าการปล่อยรุ่นอัลฟ่าหลายสิบรุ่น ดังนั้น อย่าคาดหวังความเข้ากันได้ย้อนหลังจนกว่าเราจะออกจาก "0.1" การออกแบบระบบขนาดใหญ่ในการลองครั้งแรกเป็นไปไม่ได้แนวคิดจำนวนมากจะต้องตั้งถิ่นฐานและคลิกเข้าไปในสถานที่และดังนั้นการเปลี่ยนแปลงจำนวนมากยังคงมา
เมื่อใช้นักแต่งเพลงให้ล็อคการพึ่งพาของคุณในแพ็คเกจนี้เป็นเวอร์ชันที่แน่นอน เช่น sqlftw/sqlftw:0.1.14
Vlasta Neubauer, @paranoiq, https://github.com/paranoiq