วิธีสร้างภาษาใหม่สำหรับใช้ใน Visual Studio


102

ฉันต้องการเขียนภาษาเทมเพลตใหม่และฉันต้องการให้ Visual Studio "สนับสนุน" สิ่งที่ฉันต้องรู้คือ:

  1. ฉันจะแยกวิเคราะห์ภาษาใหม่ของฉันได้อย่างไร
    ด้วยภาษาเทมเพลตใหม่ของฉันฉันจะแปลเป็น HTML ได้อย่างไร ตอนนี้ฉันกำลังใช้นิพจน์ทั่วไปเพื่อแยกวิเคราะห์โทเค็นด้วยโทเค็น แต่ฉันไม่คิดว่าสิ่งนี้จะปรับขนาดได้ดีนักเพราะภาษาซับซ้อนขึ้นและไม่มีการตรวจสอบข้อผิดพลาด ฉันเคยได้ยินเกี่ยวกับ ANTLR แต่ไม่เคยใช้เลย นั่นจะเป็นเครื่องมือที่เหมาะสมสำหรับงานนี้หรืออาจจะมีอะไรที่ง่ายกว่านี้? ตามหลักการแล้วฉันต้องการส่งข้อผิดพลาดทางไวยากรณ์ไปยังหน้าต่างข้อผิดพลาดพร้อมข้อมูลให้มากที่สุด (บรรทัด # ประเภทของข้อผิดพลาด) เหมือนกับภาษาอื่น ๆ
  2. ฉันจะสร้างประเภทไฟล์ใหม่สำหรับ Visual Studio ได้อย่างไร
  3. ฉันจะเน้นไวยากรณ์ได้อย่างไร
    ฉันสามารถใช้ตัวแยกวิเคราะห์เดียวกันกับที่ฉันสร้างในขั้นตอนที่ 1 ได้หรือไม่หรือสิ่งนี้แตกต่างอย่างสิ้นเชิง
  4. ฉันจะรับ Intellisense ได้อย่างไร?

ฉันต้องการเขียนโปรแกรมแยกวิเคราะห์ของฉันใน C #

คำตอบ:


62

ฉันจะดูภาษาอื่นที่ได้ทำการรวมเข้ากับ Visual Studio แล้ว ตัวอย่างที่ดีคือ Boo การรวมภาษาและ Visual Studio เป็นโอเพ่นซอร์ส ดังนั้นคุณสามารถดูสิ่งที่พวกเขาต้องทำ

การเน้นไวยากรณ์ Boo สำหรับ VS2010 มีลิงก์ที่แนะนำบางส่วนในหน้าแรกซึ่งฉันจะคัดลอกเพื่อใช้อ้างอิงได้ง่าย:


29

เกี่ยวกับแง่มุมของ Visual Studio สิ่งที่คุณต้องการคือ "บริการภาษา" ซึ่งเป็นเอนทิตีที่จัดการการกำหนดสี intellisense และอื่น ๆ สำหรับนามสกุล / ประเภทไฟล์ที่กำหนด

สำหรับบทนำโปรดดูบทความนี้
และสำหรับตัวอย่างโค้ดโปรดดูที่นี่

เกี่ยวกับการแยกวิเคราะห์มีเทคโนโลยีมากมายและฉันจะไม่เสนอความเห็น / คำแนะนำ

ระวังมีงานที่เกี่ยวข้องอยู่พอสมควรแม้ว่าในความคิดของฉันมันจะตรงไปตรงมาใน VS2010 มากกว่า Visual Studio รุ่นก่อน ๆ ที่ให้ส่วนขยายประเภทนี้

ดูสิ่งนี้ด้วย

Visual Studio 2010 Extensibility, MPF และบริการภาษา


9

ฉันเขียน VS Language Service โดยใช้บทความนี้เป็นพื้นฐาน: http://www.codeproject.com/KB/recipes/VSLanguageService.aspx

มันไม่ได้แย่เกินไปถ้าคุณมีพื้นฐานเกี่ยวกับ Grammars


เป็นเรื่องน่าเสียดายที่เขาไม่ได้สอนต่อ ... นั่นเป็นเรื่องที่ดีจริงๆ ขอบคุณ!
mpen

1
สิ่งที่ขาดหายไปคือขั้นตอนต่อไปคือการติดตั้งแพ็คเกจ stackoverflow.com/questions/4160391/…
ColinCren

2

มีตัวอย่างใน VS SDK ที่แสดงคุณสมบัติส่วนใหญ่ที่คุณกำลังมองหา


2

ฉันใช้ VS กับภาษาของตัวเองและต้องการการเน้นไวยากรณ์อย่างยิ่ง ฉันสร้างของฉันตามบทช่วยสอนนี้: https://mattduffield.wordpress.com/2012/07/31/writing-a-brightscript-syntax-highlight-extension-for-visual-studio-2010/

ฉันรู้ว่าบทช่วยสอนอยู่ใน VS2010 ฉันทำของฉันใน VS2012 โดยไม่มีอาการสะอึกหรือน้อยมาก (ทำงานใน VS2013 ด้วย) เมื่อเร็ว ๆ นี้ฉันเปลี่ยนเป็น VS2015 และสามารถแก้ไขโซลูชันได้โดยไม่มีปัญหา


2

ฉันพบคอลเล็กชันตัวอย่างล่าสุดสำหรับ Visual Studio 2013 SDK ที่มีประโยชน์มาก: http://blogs.msdn.com/b/vsx/archive/2014/05/30/vs-2013-sdk-samples-released.aspx

นอกจากนี้ยังมี OokLanguage เวอร์ชันล่าสุดซึ่งฟังดูดี

เราใช้ ANTLR 4 เพื่อแยกวิเคราะห์ภาษาของเราซึ่งทำงานได้อย่างมีเสน่ห์และอนุญาตให้โต้ตอบโดยตรงกับรหัส C # สามารถแนะนำได้ทั้งหมด


0

ตามที่กล่าวไว้ในคำตอบอื่น ๆ ตัวอย่างโค้ดที่น่าสนใจที่สุดคือส่วนขยายภาษา Ookสำหรับ Visual Studio เวอร์ชันล่าสุด (2017 ในขณะที่เขียน)

สำหรับ VS 2015 ดูตัวอย่างในสาขา VS2015

ในการติดตั้ง SDK สำหรับปี 2015 หรือใหม่กว่าคุณต้องเรียกใช้การตั้งค่า VS อีกครั้ง ในปี 2558 เรียกว่า "Visual Studio Extensibility Tools Update 3"

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.