ช่องว่างและความคิดเห็น
โดยทั่วไปแล้ว AST จะไม่รวมถึงช่องว่างตัวยุติบรรทัดและความคิดเห็น
การจัดรูปแบบที่มีความหมาย
คุณถูกต้องว่าในกรณีส่วนใหญ่นี่เป็นเชิงบวก (กำจัดการจัดรูปแบบสงครามศักดิ์สิทธิ์) มีหลายกรณีที่การจัดรูปแบบของรหัสดั้งเดิมสื่อถึงความหมายบางอย่างเช่นในตัวอักษรสตริงหลายบรรทัดและ "ย่อหน้ารหัส" (การแยกบล็อกของ งบที่มีบรรทัดว่าง)
รหัสที่ไม่สามารถรวบรวมได้
ในขณะที่ตัวแยกวิเคราะห์จำนวนมากมีความยืดหยุ่นสูงต่อการขาดหายไปของไวยากรณ์รหัสที่มีข้อผิดพลาดมักส่งผลให้เกิดโครงสร้างของต้นไม้ที่แปลกประหลาดซึ่งไม่น่าเชื่อและดีจนถึงจุดที่ผู้ใช้ทำการโหลดไฟล์ซ้ำ เคยทำผิดพลาดใน IDE ของคุณและทันใดนั้นไฟล์ทั้งหมดมี "squigglies"? ลองนึกภาพว่าจะโหลดซ้ำในภาษาอื่นได้อย่างไร
บางทีผู้ใช้อาจไม่ยอมรับรหัสที่ไม่สามารถแยกวิเคราะห์ได้ แต่แน่นอนว่าพวกเขาจำเป็นต้องบันทึกในเครื่อง
ไม่มีสองภาษาใดที่เข้ากันได้อย่างสมบูรณ์แบบ
ดังที่คนอื่น ๆ ชี้ให้เห็นไม่มีเกือบสองภาษาที่มีคุณลักษณะที่สมบูรณ์แบบเสมอกัน ฉันคิดว่าใกล้เคียงที่สุดคือ VB และ C # หรือ JavaScript และ CoffeeScript แต่ถึงอย่างนั้น VB ก็มีฟีเจอร์เช่น XML Literals ที่ไม่มีอะไรเทียบเท่าใน C # และการแปลง JavaScript เป็น CoffeeScript อาจทำให้ JavaScript JavaScript เป็นจำนวนมาก
ประสบการณ์ส่วนตัว:
ในแอปพลิเคชันซอฟต์แวร์ที่ฉันเขียนเราต้องทำสิ่งนี้จริง ๆ เนื่องจากผู้ใช้คาดว่าจะป้อนนิพจน์ "ธรรมดาภาษาอังกฤษ" ที่ถูกแปลงเป็น JS ในพื้นหลัง เราพิจารณาการจัดเก็บรุ่น JS เท่านั้น แต่ไม่พบวิธีที่ยอมรับได้ในการโหลดและยกเลิกการโหลดอย่างน่าเชื่อถือดังนั้นเราจึงสิ้นสุดการจัดเก็บทั้งข้อความผู้ใช้และรุ่น JS ตลอดจนการตั้งค่าสถานะที่ระบุว่า "รุ่นแยกวิเคราะห์ได้อย่างสมบูรณ์หรือไม่