นี่คือคำสั่ง antlr ที่สามารถเรียกใช้ในผู้ให้บริการโฮสต์ฟรีของ OnWorks โดยใช้หนึ่งในเวิร์กสเตชันออนไลน์ฟรีของเรา เช่น Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS
โครงการ:
ชื่อ
antlr - เครื่องมืออื่นสำหรับการรู้จำภาษา
ซิงค์
มดแดง [ตัวเลือก] grammar_files
DESCRIPTION
มด แปลงรูปแบบเพิ่มเติมของไวยากรณ์ที่ไม่มีบริบทเป็นชุดของฟังก์ชัน C ซึ่ง
ใช้รูปแบบที่มีประสิทธิภาพของ parser LL(k) deterministic recursive-descent โดยตรง
ไวยากรณ์ที่ปราศจากบริบทอาจเสริมด้วยเพรดิเคตเพื่อให้ความหมายมีอิทธิพล
การแยกวิเคราะห์; นี้ช่วยให้รูปแบบของการแยกวิเคราะห์ตามบริบท การย้อนรอยที่เลือกก็เช่นกัน
พร้อมใช้งานเพื่อจัดการกับโครงสร้างที่ไม่ใช่ LL(k) และแม้แต่โครงสร้างที่ไม่ใช่ LALR(k) มด ยังผลิต a
คำจำกัดความของ lexer ซึ่งสามารถแปลงเป็นรหัส C โดยอัตโนมัติสำหรับ DFA-based
lexer โดย DLG. ดังนั้น มดแดง ทำหน้าที่เหมือนกับของ ย๊ากอย่างไรก็ตามมันคือ
มีความยืดหยุ่นมากขึ้นอย่างเห็นได้ชัดและรวมเข้ากับเครื่องกำเนิดไฟฟ้าเล็กเซอร์ (มดแดง โดยตรง
สร้าง DLG รหัสในขณะที่ ย๊าก และ ไฟแนนเชี่ จะได้รับคำอธิบายที่เป็นอิสระ) ไม่เหมือน ย๊าก
ซึ่งยอมรับ ลลล(1) ไวยากรณ์ มดแดง ยอมรับไวยากรณ์ LL(k) ในรูปแบบ BNF แบบขยาย —
ซึ่งขจัดความจำเป็นในการจัดลำดับความสำคัญ
Like ย๊าก ไวยากรณ์ มดแดง ไวยากรณ์สามารถใช้แอตทริบิวต์สัญลักษณ์ที่ได้รับการบำรุงรักษาโดยอัตโนมัติ
ค่าที่อ้างอิงเป็นตัวแปรดอลลาร์ ยิ่งไปกว่านั้น เพราะ มดแดง สร้าง parsers จากบนลงล่าง
ค่าโดยพลการอาจสืบทอดมาจากกฎหลัก (ส่งผ่านเหมือนพารามิเตอร์ของฟังก์ชัน)
มด มีกลไกในการสร้างและจัดการ abstract-syntax-trees
มีความน่ารักอื่น ๆ มากมายใน มดแดงรวมถึงความสามารถในการเผยแพร่หนึ่งไวยากรณ์
หลายไฟล์หรือแม้แต่หลายไวยากรณ์ในไฟล์เดียว ความสามารถในการสร้าง
เวอร์ชันของไวยากรณ์ที่มีการดำเนินการแยกออก (เพื่อวัตถุประสงค์ในการจัดทำเอกสาร) และ lots
ขึ้น
OPTIONS
-ค n ใช้ได้ถึง n สัญลักษณ์ของ lookahead เมื่อใช้บีบอัด (การประมาณเชิงเส้น)
มองไปข้างหน้า. Lookahead ประเภทนี้ราคาถูกมากในการคำนวณและเคยลองใช้มาก่อน
LL(k) lookahead แบบเต็ม ซึ่งมีความซับซ้อนแบบทวีคูณในกรณีที่เลวร้ายที่สุด ใน
โดยทั่วไป Lookahead ที่บีบอัดอาจลึกกว่ามาก (เช่น -ck 10) มากกว่า full
lookahead (ซึ่งมักจะต้องน้อยกว่า 4)
- ปชช สร้างเอาต์พุต C++ จากทั้ง ANTLR และ DLG
-cr สร้างการอ้างอิงโยงสำหรับกฎทั้งหมด สำหรับแต่ละกฎ พิมพ์รายการอื่นๆ ทั้งหมด
กฎเกณฑ์ที่อ้างอิง
-e1 ความคลุมเครือ/ข้อผิดพลาดที่แสดงในรายละเอียดต่ำ (ค่าเริ่มต้น)
-e2 ความคลุมเครือ/ข้อผิดพลาดที่แสดงในรายละเอียดเพิ่มเติม
-e3 ความคลุมเครือ/ข้อผิดพลาดที่แสดงในรายละเอียดที่ระทมทุกข์
-เฟ ไฟล์
ตั้งชื่อใหม่ ความผิดพลาด ไฟล์.
-ฉ ไฟล์
ตั้งชื่อใหม่ stdpccts.h ส่วนหัว (เปิด -ก) เพื่อยื่น
- ชั้น ไฟล์
เปลี่ยนชื่อเอาต์พุตคำศัพท์ parser.dlg, เพื่อยื่น
-เอฟเอ็ม ไฟล์
เปลี่ยนชื่อไฟล์ด้วยคำจำกัดความโหมดคำศัพท์ โหมด.h, เพื่อยื่น
-fr ไฟล์
เปลี่ยนชื่อไฟล์ซึ่งทำการแมปสัญลักษณ์ที่มองเห็นได้ทั่วโลก รีแมป.h, เพื่อยื่น
- ฟุต ไฟล์
ตั้งชื่อใหม่ โทเค็น.h ไฟล์.
-กา สร้างรหัสที่เข้ากันได้กับ ANSI (ตัวพิมพ์เริ่มต้น) นี้ไม่ได้รับการทดสอบอย่างเข้มงวด
เพื่อให้เป็นไปตามมาตรฐาน ANSI XJ11 C แต่ก็ใกล้เคียง เอาต์พุตปกติของ มดแดง is
ปัจจุบันสามารถคอมไพล์ได้ภายใต้ทั้ง K&R, ANSI C และ C++—ตัวเลือกนี้ไม่ทำอะไรเลย
เพราะ มดแดง สร้าง #ifdef จำนวนมากเพื่อทำสิ่งที่ถูกต้องขึ้นอยู่กับ
ภาษา.
-gc แสดงว่า มดแดง ไม่ควรสร้างรหัส C กล่าวคือทำการวิเคราะห์บน .เท่านั้น
ไวยากรณ์.
-gd ใส่รหัส C ในแต่ละ มดแดง สร้างฟังก์ชันการแยกวิเคราะห์เพื่อให้สำหรับ
การจัดการที่ผู้ใช้กำหนดของการติดตามการแยกวิเคราะห์โดยละเอียด รหัสที่ใส่ประกอบด้วย
เรียกมาโครที่ผู้ใช้จัดหาหรือฟังก์ชันที่เรียกว่า zzTRACIN และ zzTRACEOUT.
อาร์กิวเมนต์เดียวคือ a ถัง * ชี้ไปที่สตริงสไตล์ C ซึ่งเป็นไวยากรณ์
กฎที่รับรู้โดยฟังก์ชันการแยกวิเคราะห์ปัจจุบัน หากไม่มีการกำหนดให้
ฟังก์ชันการติดตาม เมื่อเข้าและออกกฎ จะมีการพิมพ์ข้อความระบุว่า
ว่ากฎเฉพาะที่เข้าหรือออก
-ge สร้างคลาสข้อผิดพลาดสำหรับแต่ละเทอร์มินัลที่ไม่ใช่
-ก ผลิต stdpccts.h เพื่อให้รวมไฟล์ที่ไม่ได้สร้าง ANTLR ไฟล์นี้มี
คำจำกัดความทั้งหมดที่จำเป็นในการอธิบายประเภทของ parser ที่สร้างโดย มดแดง (เช่นเท่าไหร่
ใช้ Lookahead และไม่ว่าจะสร้างต้นไม้หรือไม่) และมี ส่วนหัว
การดำเนินการที่ระบุโดยผู้ใช้
-กค สร้าง parsers ที่หน่วงเวลาการดึงข้อมูล lookahead จนกว่าจะจำเป็น หากไม่มีตัวเลือกนี้
มดแดง สร้าง parsers ซึ่งมักจะมี k มีโทเค็นของ lookahead
-gl สร้างข้อมูลบรรทัดเกี่ยวกับการดำเนินการทางไวยากรณ์ในตัวแยกวิเคราะห์ C ของฟอร์ม # เส้น "ไฟล์"
ซึ่งทำให้ข้อความแสดงข้อผิดพลาดจากคอมไพเลอร์ C/C++ สมเหตุสมผลมากขึ้นตามที่ต้องการ
ชี้ไปที่ไฟล์ไวยากรณ์ไม่ใช่ไฟล์ C ที่เป็นผลลัพธ์ การแก้จุดบกพร่องนั้นง่ายกว่าเช่นกัน
เพราะคุณจะก้าวผ่านไวยากรณ์ไม่ใช่ไฟล์ C
-gs อย่าสร้างชุดสำหรับรายการนิพจน์โทเค็น แทนที่จะสร้าง ||-แยกออกจากกัน
ลำดับของ LA(1)==token_number. ค่าเริ่มต้นคือการสร้างชุด
-gt สร้างโค้ดสำหรับ Abstract-Syntax Trees
-gx อย่าสร้างไฟล์ตัววิเคราะห์คำศัพท์ (เกี่ยวกับ dlg) ตัวเลือกนี้ควรเป็น
กำหนดเมื่อผู้ใช้ต้องการจัดเตรียมเครื่องวิเคราะห์คำศัพท์ที่ปรับแต่งได้ นอกจากนี้ยังอาจ
ถูกนำมาใช้ ทำ สคริปต์ที่จะทำให้ parser เท่านั้นที่จะสร้างใหม่เมื่อไม่เปลี่ยนแปลง
ส่งผลกระทบต่อโครงสร้างคำศัพท์ที่ทำกับไวยากรณ์การป้อนข้อมูล
-k n ตั้งค่า k ของ LL(k) เป็น n; เช่นตั้งค่าโทเค็นการมองไปข้างหน้า (ค่าเริ่มต้น==1)
-o dir Directory ที่ไฟล์เอาต์พุตควรไป (default="") นี้เป็นสิ่งที่ดีมากสำหรับ
ทำให้ไดเร็กทอรีต้นทางชัดเจนจากการวางไข่ ANTLR และ DLG
-p ไวยากรณ์ที่สมบูรณ์ รวบรวมจากไฟล์ไวยากรณ์อินพุตทั้งหมดและถอดทั้งหมด
ข้อคิดเห็นและการดำเนินการที่ฝังไว้ อยู่ในรายการของ แย่. นี้มีวัตถุประสงค์เพื่อช่วยใน
การดูไวยากรณ์ทั้งหมดโดยรวมและเพื่อขจัดความจำเป็นในการดำเนินการต่อไป
ย่อให้อ่านไวยกรณ์ง่าย ดังนั้นจึงเป็นการดีกว่าที่จะ
ฝังการกระทำที่ซับซ้อนลงในไวยากรณ์โดยตรง แทนที่จะเรียกว่า
รูทีนย่อย เนื่องจากโอเวอร์เฮดการเรียกรูทีนย่อยจะถูกบันทึกไว้
- พ่อ ตัวเลือกนี้เหมือนกับ -p ยกเว้นว่าเอาต์พุตจะมีหมายเหตุประกอบกับตัวแรก
ชุดที่กำหนดจากการวิเคราะห์ไวยากรณ์
-prc on
เปิดการคำนวณและยกบริบทเพรดิเคต
-prc ปิด
ปิดการคำนวณและยกบริบทเพรดิเคต ตัวเลือกนี้ทำให้ 1.10
ทำตัวเหมือนรุ่น 1.06 พร้อมตัวเลือก - พฤ บน. การคำนวณบริบทปิดโดย
ค่าเริ่มต้น.
-rl n จำกัดจำนวนโหนดทรีสูงสุดที่ใช้โดยการวิเคราะห์ไวยากรณ์ไว้ที่ n.
เป็นครั้งคราว มดแดง ไม่สามารถวิเคราะห์ไวยากรณ์ที่ผู้ใช้ส่งมาได้ นี้
สถานการณ์ที่หายากจะเกิดขึ้นได้ก็ต่อเมื่อไวยากรณ์มีขนาดใหญ่และจำนวนการมองไปข้างหน้า
มีค่ามากกว่าหนึ่ง PCCTS ใช้อัลกอริธึมการวิเคราะห์แบบไม่เชิงเส้นเพื่อจัดการกับ
กรณีทั่วไปของการแยกวิเคราะห์ LL(k) อย่างไรก็ตาม ความซับซ้อนโดยเฉลี่ยของการวิเคราะห์คือ
ใกล้เป็นเส้นตรงเนื่องจากการเดินเท้าแฟนซีในการดำเนินการซึ่งช่วยลด
จำนวนการเรียกใช้อัลกอริธึม LL(k) แบบเต็ม ข้อความแสดงข้อผิดพลาดจะปรากฏขึ้น
ถ้าถึงขีดจำกัดนี้ ซึ่งบ่งชี้ถึงโครงสร้างไวยากรณ์ที่กำลังวิเคราะห์เมื่อ
มดแดง ตีความไม่เชิงเส้น ใช้ตัวเลือกนี้ if มดแดง ดูเหมือนจะออกไปทานอาหารกลางวันและ
ดิสก์ของคุณเริ่มฟาดฟัน ลอง n= 10000 เพื่อเริ่มต้น เมื่อสิ่งก่อสร้างที่กระทำผิดมี
ถูกระบุ พยายามขจัดความคลุมเครือที่ มดแดง พยายามที่จะเอาชนะด้วย
การวิเคราะห์การมองไปข้างหน้าขนาดใหญ่ การแนะนำตัวของ (...)? บล็อกย้อนรอย
ขจัดปัญหาเหล่านี้ - มดแดง ไม่วิเคราะห์ทางเลือกที่เริ่มต้น
กับ (...)? (มันแค่ย้อนรอย ถ้าจำเป็น ณ รันไทม์)
-w1 ตั้งระดับการเตือนต่ำ อย่าเตือนถ้าภาคแสดงความหมายและ/หรือ (...)? บล็อกคือ
ถือว่าครอบคลุมทางเลือกที่คลุมเครือ
-w2 การตัดสินใจแยกวิเคราะห์ที่คลุมเครือทำให้เกิดคำเตือนแม้ว่าภาคแสดงความหมายหรือ (...)?
ใช้บล็อก เตือนว่าเพรดิเคตบริบทคำนวณและภาคแสดงความหมาย
แยกแยะการผลิตทางเลือกที่ไม่สมบูรณ์
- อ่านไวยากรณ์จากอินพุตมาตรฐานและสร้าง stdin.c เป็นไฟล์ parser
พิเศษ ที่ต้องคำนึงถึง
มด ทำงาน...เราคิดว่า. ไม่มีการรับประกันโดยปริยายของสิ่งใด เราจองไม่
ถูกกฎหมาย สิทธิ์ในซอฟต์แวร์ที่เรียกว่า Purdue Compiler Construction Tool Set (PCCTS) —
PCCTS เป็นสาธารณสมบัติ บุคคลหรือบริษัทจะทำอะไรก็ได้ตามต้องการด้วย
ซอร์สโค้ดที่แจกจ่ายด้วย PCCTS หรือรหัสที่สร้างโดย PCCTS รวมถึง
การรวม PCCTS หรือผลลัพธ์ของมันเข้ากับซอฟต์แวร์เชิงพาณิชย์ เราสนับสนุนให้ผู้ใช้
พัฒนาซอฟต์แวร์ด้วย PCCTS อย่างไรก็ตาม เราขอให้เครดิตเพื่อการพัฒนา
พีซีซีทีเอส โดย "เครดิต" เราหมายความว่าหากคุณรวมซอร์สโค้ดของเราเข้ากับหนึ่งใน . ของคุณ
โปรแกรม (ผลิตภัณฑ์เชิงพาณิชย์ โครงการวิจัย หรืออื่นๆ) ที่คุณรับทราบ
ข้อเท็จจริงอยู่ที่ไหนสักแห่งในเอกสารรายงานการวิจัย ฯลฯ ... ถ้าคุณชอบ PCCTS และมี
พัฒนาเครื่องมือที่ดีพร้อมผลลัพธ์ โปรดแจ้งว่าคุณพัฒนาโดยใช้ PCCTS
ตราบใดที่มีการปฏิบัติตามแนวทางเหล่านี้ เราคาดว่าจะปรับปรุงระบบนี้ต่อไปและ
คาดว่าจะมีเครื่องมืออื่นๆ พร้อมใช้งานเมื่อเสร็จสิ้น
ใช้ antlr ออนไลน์โดยใช้บริการ onworks.net