We started looking into a more flexible way of creating our parser inf การแปล - We started looking into a more flexible way of creating our parser inf ไทย วิธีการพูด

We started looking into a more flex


We started looking into a more flexible way of creating our parser infrastructure. Especially the generation of lexer and parser from the grammar was a long winded process, that included a lot of manual tweaking. The most important advantage of using the MySQL server yacc grammar is however that we always stay in sync easily. Though, this is true only for the server version the grammar we picked is for. But MySQL Workbench needs more flexibility, supporting a whole range of server versions (from 5.1 up to the latest 5.7.8). Hence we decided to switch to a different tool: ANTLR. Not so surprising, however: the yacc based parser is still part of MySQL Workbench, because it’s not possible to switch such an important part in one single step. However over time the ANTLR based parsers will ultimately become our central parsing engine and one day we can rule out the yacc parser entirely.

Files created by ANTLR are the biggest single source files I have ever seen. The MySQLLexer.c file is 40MB in size with almost 590K LOC. No wonder our project metrics have changed remarkably, though not only because of the ANTLR based parser. Here are the current numbers (collected by a script shipped with the source zip):
0/5000
จาก: -
เป็น: -
ผลลัพธ์ (ไทย) 1: [สำเนา]
คัดลอก!
เราเริ่มค้นหามีความยืดหยุ่นในการสร้างโครงสร้างพื้นฐานของตัวแยกวิเคราะห์ โดยเฉพาะอย่างยิ่งการสร้าง lexer และแยกวิเคราะห์จากไวยากรณ์ winded ยาวนานกระบวนการ ที่อยู่ของ tweaking ด้วยตนเองได้ ประโยชน์สำคัญของการใช้ไวยากรณ์ yacc เซิร์ฟเวอร์ MySQL ได้แต่ว่า เราอยู่เสมอในการซิงค์ได้อย่างง่ายดาย ถึงแม้ว่า นี้เป็นจริงสำหรับรุ่นของเซิร์ฟเวอร์เป็นไวยากรณ์ที่เราเลือกเท่านั้น แต่ปรับแต่ง MySQL ต้องมีความยืดหยุ่นมากขึ้น สนับสนุนหลากหลายรุ่นของเซิร์ฟเวอร์ (จาก 5.1 ถึง 5.7.8 ล่าสุด) ดังนั้น เราตัดสินใจที่จะสลับไปเป็นเครื่องมือที่แตกต่างกัน: ANTLR จึงไม่ น่าแปลกใจ อย่างไรก็ตาม: ตัวแยกวิเคราะห์ตาม yacc อยู่ยังปรับแต่ง MySQL เนื่องจากไม่สามารถสลับดังกล่าวมีส่วนสำคัญในขั้นตอนเดียวเดียวกัน อย่างไรก็ตาม เวลาผ่าน parsers ANTLR ตามจะสุดกลายเป็น โปรแกรมกลางแยกวิเคราะห์และวันหนึ่งที่เราสามารถยกเลิกตัวแยกวิเคราะห์ yacc ทั้งหมดของเราไฟล์ที่สร้าง โดย ANTLR เป็นแฟ้มต้นฉบับเดียวที่ใหญ่ที่สุดที่ผมเคยเห็น แฟ้ม MySQLLexer.c เป็น 40MB ในขนาดเกือบ 590K LOC. พบมีการเปลี่ยนแปลงของโครงการวัดทแบบ แม้ไม่เท่า เพราะ ANTLR ใช้ตัวแยกวิเคราะห์ นี่คือ หมายเลขปัจจุบัน (รวบรวม โดยสคริปต์จัดส่งกับไปรษณีย์ต้นทาง):
การแปล กรุณารอสักครู่..
ผลลัพธ์ (ไทย) 2:[สำเนา]
คัดลอก!

เราเริ่มมองหาวิธีการที่ยืดหยุ่นมากขึ้นในการสร้างโครงสร้างพื้นฐานที่แยกวิเคราะห์ของเรา โดยเฉพาะอย่างยิ่งการสร้าง lexer และแยกวิเคราะห์จากไวยากรณ์ที่เป็นกระบวนการที่ยืดยาวซึ่งรวมถึงจำนวนมากของการปรับคู่มือ ได้เปรียบที่สำคัญที่สุดของการใช้เซิร์ฟเวอร์ MySQL ไวยากรณ์ yacc เป็น แต่ที่เรามักจะอยู่ในซิงค์ได้อย่างง่ายดาย แม้ว่านี้เป็นจริงเฉพาะสำหรับรุ่นของเซิร์ฟเวอร์ไวยากรณ์ที่เราเลือกเป็น แต่ MySQL Workbench ต้องการความยืดหยุ่นมากขึ้นที่สนับสนุนทั้งช่วงของเซิร์ฟเวอร์รุ่น (จาก 5.1 ขึ้นไป 5.7.8 ล่าสุด) ดังนั้นเราจึงตัดสินใจที่จะเปลี่ยนไปใช้เครื่องมือที่แตกต่างกัน: ANTLR ดังนั้นไม่น่าแปลกใจ แต่: ตัวแยกวิเคราะห์ตาม yacc ยังคงเป็นส่วนหนึ่งของ MySQL Workbench เพราะมันเป็นไปไม่ได้ที่จะเปลี่ยนดังกล่าวเป็นส่วนสำคัญในขั้นตอนเดียว แต่เมื่อเวลาผ่านไป ANTLR ตาม parsers ในที่สุดจะกลายเป็นเครื่องมือแยกกลางของเราและวันหนึ่งเราสามารถออกกฎ parser yacc ทั้งหมด. ไฟล์ที่สร้างขึ้นโดย ANTLR เป็นไฟล์ที่มาเดียวที่ใหญ่ที่สุดที่ผมเคยเห็น ไฟล์ MySQLLexer.c เป็น 40MB ในขนาดที่มีเกือบ LOC 590K ไม่น่าแปลกใจตัวชี้วัดโครงการของเรามีการเปลี่ยนแปลงอย่างน่าทึ่ง แต่ไม่เพียงเพราะการแยกวิเคราะห์ตาม ANTLR นี่คือตัวเลขปัจจุบัน (ที่เก็บรวบรวมโดยสคริปต์มาพร้อมกับแหล่งซิป a):

การแปล กรุณารอสักครู่..
ผลลัพธ์ (ไทย) 3:[สำเนา]
คัดลอก!

เราเริ่มมองหาวิธีที่มีความยืดหยุ่นมากขึ้นของการสร้างโครงสร้างพื้นฐานสำหรับของเรา โดยเฉพาะการสร้างและ lexer parser ไวยากรณ์เป็นเรื่องยืดยาวจากกระบวนการ ที่ประกอบด้วยมากของคู่มือการปรับเปลี่ยน ประโยชน์ที่สำคัญที่สุดของการใช้เซิร์ฟเวอร์ MySQL yacc ไวยากรณ์เป็น แต่ที่เรามักจะอยู่ในซิงค์ง่าย แม้ว่านี้เป็นจริงเพียงสำหรับเซิร์ฟเวอร์รุ่นไวยากรณ์ที่เราเลือกเป็น แต่ MySQL Workbench ความต้องการความยืดหยุ่นมากขึ้นสนับสนุนทั้งช่วงของเซิร์ฟเวอร์รุ่น ( จาก 5.1 ถึงล่าสุด 5.7.8 ) ดังนั้นเราจึงตัดสินใจที่จะเปลี่ยนไป เครื่องมือที่แตกต่างกัน : antlr . ไม่น่าแปลกใจ , อย่างไรก็ตาม : yacc ตาม Parser ยังคงเป็นส่วนหนึ่งของ MySQL Workbench ,เพราะมันเป็นไปไม่ได้ที่จะเปลี่ยนสิ่งที่สำคัญในขั้นตอนเดียว . อย่างไรก็ตาม เมื่อเวลาผ่านไป antlr ตาม parsers ในที่สุดจะกลายเป็นของเรากลางแยกเครื่องยนต์ และวันหนึ่งเราสามารถออกกฎ yacc parser ทั้งหมด

ไฟล์ที่สร้างขึ้นโดย antlr เป็นแหล่งไฟล์เดียวที่ใหญ่ที่สุดที่ผมเคยเห็น การ mysqllexer C ไฟล์ตนเองในขนาดเกือบ 590k ที่ๆไม่น่าแปลกใจสำหรับโครงการของเรามีการเปลี่ยนแปลงอย่างน่าทึ่ง แต่ไม่เพียงเพราะของ antlr parser ตาม ที่นี่มีตัวเลขปัจจุบัน ( รวบรวมโดยสคริปต์มาพร้อมกับแหล่งซิป )
การแปล กรุณารอสักครู่..
 
ภาษาอื่น ๆ
การสนับสนุนเครื่องมือแปลภาษา: กรีก, กันนาดา, กาลิเชียน, คลิงออน, คอร์สิกา, คาซัค, คาตาลัน, คินยารวันดา, คีร์กิซ, คุชราต, จอร์เจีย, จีน, จีนดั้งเดิม, ชวา, ชิเชวา, ซามัว, ซีบัวโน, ซุนดา, ซูลู, ญี่ปุ่น, ดัตช์, ตรวจหาภาษา, ตุรกี, ทมิฬ, ทาจิก, ทาทาร์, นอร์เวย์, บอสเนีย, บัลแกเรีย, บาสก์, ปัญจาป, ฝรั่งเศส, พาชตู, ฟริเชียน, ฟินแลนด์, ฟิลิปปินส์, ภาษาอินโดนีเซี, มองโกเลีย, มัลทีส, มาซีโดเนีย, มาราฐี, มาลากาซี, มาลายาลัม, มาเลย์, ม้ง, ยิดดิช, ยูเครน, รัสเซีย, ละติน, ลักเซมเบิร์ก, ลัตเวีย, ลาว, ลิทัวเนีย, สวาฮิลี, สวีเดน, สิงหล, สินธี, สเปน, สโลวัก, สโลวีเนีย, อังกฤษ, อัมฮาริก, อาร์เซอร์ไบจัน, อาร์เมเนีย, อาหรับ, อิกโบ, อิตาลี, อุยกูร์, อุสเบกิสถาน, อูรดู, ฮังการี, ฮัวซา, ฮาวาย, ฮินดี, ฮีบรู, เกลิกสกอต, เกาหลี, เขมร, เคิร์ด, เช็ก, เซอร์เบียน, เซโซโท, เดนมาร์ก, เตลูกู, เติร์กเมน, เนปาล, เบงกอล, เบลารุส, เปอร์เซีย, เมารี, เมียนมา (พม่า), เยอรมัน, เวลส์, เวียดนาม, เอสเปอแรนโต, เอสโทเนีย, เฮติครีโอล, แอฟริกา, แอลเบเนีย, โคซา, โครเอเชีย, โชนา, โซมาลี, โปรตุเกส, โปแลนด์, โยรูบา, โรมาเนีย, โอเดีย (โอริยา), ไทย, ไอซ์แลนด์, ไอร์แลนด์, การแปลภาษา.

Copyright ©2025 I Love Translation. All reserved.

E-mail: