एक ठोस वाक्यविन्यास पेड़ से मेल खाता है जो व्याकरण के नियमों का कहना है कि वाक्यविन्यास है। अमूर्त सिंटैक्स ट्री का उद्देश्य "सिंटैक्स ट्री" में जो आवश्यक है उसका "सरल" प्रतिनिधित्व है।
एएसटी आईएमएचओ में एक वास्तविक मूल्य यह है कि यह सीएसटी से छोटा है, और इसलिए इसे संसाधित करने में कम समय लगता है। (आप कह सकते हैं, कौन परवाह करता है? लेकिन मैं एक उपकरण के साथ काम करता हूं, जहां हमारे पास लाखों टन नोड्स एक बार रहते हैं)।
अधिकांश पार्सर जनरेटर जिनका वाक्यविन्यास पेड़ों के निर्माण के लिए कोई समर्थन है, आप व्यक्तिगत रूप से यह निर्दिष्ट करते हैं कि वे कैसे इस धारणा के तहत निर्मित होते हैं कि आपका पेड़ नोड्स सीएसटी की तुलना में "सरल" होगा (और इसमें, वे आम तौर पर सही हैं, जैसा कि प्रोग्रामर सुंदर हैं। आलसी)। यकीनन इसका मतलब है कि आपको कम पेड़ आगंतुक कार्यों को कोड करना होगा, और यह मूल्यवान है, इसमें भी, यह इंजीनियरिंग ऊर्जा को कम करता है। जब आपके पास 3500 नियम हों (उदाहरण के लिए, COBOL के लिए) तो यह मायने रखता है। और यह "सरल" नेस "लघुता" की अच्छी संपत्ति की ओर जाता है।
लेकिन इस तरह के एएसटी होने से एक समस्या पैदा होती है: यह व्याकरण से मेल नहीं खाता है, और अब आपको दोनों को मानसिक रूप से ट्रैक करना होगा। और जब 3500 नियम व्याकरण के लिए 1500 एएसटी नोड होते हैं, तो यह बहुत मायने रखता है। और अगर व्याकरण विकसित होता है (वे हमेशा करते हैं!), तो अब आपके पास सिंक्र में रखने के लिए दो विशाल सेट हैं।
एक अन्य उपाय यह है कि पार्सर केवल आपके लिए सीएसटी नोड्स का निर्माण करें और बस उन का उपयोग करें। व्याकरण का निर्माण करते समय यह एक बड़ा लाभ है: 3500 व्याकरण नियमों को मॉडल करने के लिए 1500 विशेष एएसटी नोड्स का आविष्कार करने की आवश्यकता नहीं है। बस व्याकरण के लिए पेड़ के isomorphic होने के बारे में सोचो। व्याकरण इंजीनियर के दृष्टिकोण से यह पूरी तरह से मस्तिष्कहीन है, जो उसे व्याकरण को सही करने और उसके दिल की सामग्री को हैक करने पर ध्यान केंद्रित करने देता है। संभवतः आपको अधिक नोड आगंतुक नियम लिखने होंगे, लेकिन इसे प्रबंधित किया जा सकता है। इस पर और बाद में।
हम डीएमएस सॉफ्टवेयर रेन्गिनियरिंग टूलकिट के साथ जो करते हैं वह स्वचालित रूप से एक (जीएलआर) पार्सिंग प्रक्रिया के परिणामों के आधार पर सीएसटी का निर्माण करना है। डीएमएस तब स्वचालित रूप से अंतरिक्ष दक्षता कारणों के लिए "संपीड़ित" सीएसटी का निर्माण करता है, गैर-मूल्य वहन टर्मिनलों (कीवर्ड, विराम चिह्न), शब्दार्थ अनुपयोगी अनुपयोगी निर्माणों को समाप्त करके, व्याकरण नियम जोड़े के लिए सूची बनाता है जो इस तरह की सूची हैं
L = e ;
L = L e ;
L2 = e2 ;
L2 = L2 ',' e2 ;
और इस तरह के रूपों की एक विस्तृत विविधता। आप व्याकरण के नियमों और आभासी सीएसटी के संदर्भ में सोचते हैं; उपकरण संपीड़ित प्रतिनिधित्व पर काम करता है। आपके मस्तिष्क पर आसान, रनटाइम पर तेज / छोटा।
उल्लेखनीय रूप से, इस तरह से निर्मित संकुचित सीएसटी एक बहुत एएसटी लगता है जिसे आपने हाथ से डिज़ाइन किया होगा (उदाहरण के लिए लिंक को अंत में देखें)। विशेष रूप से, संकुचित सीएसटी किसी भी नोड को नहीं ले जाता है जो कि केवल ठोस सिंटैक्स हैं। उदाहरण के लिए, जबकि '(' और ')' के लिए ठोस नोड्स प्रतिष्ठित अभिव्यक्ति subgrammars में पाया वृक्ष, "कोष्ठक नोड" में नहीं हैं: वहाँ awkwardness की नाबालिग बिट्स हैं करता संकुचित सीएसटी में दिखाई देते हैं और नियंत्रित किया जाना चाहिए। एक सच्चे एएसटी में यह नहीं होगा। ऐसा लगता है कि एएसटी निर्माण को निर्दिष्ट नहीं करने की सुविधा के लिए भुगतान करने के लिए एक बहुत छोटी कीमत है। और पेड़ के लिए दस्तावेज़ हमेशा उपलब्ध है और सही है: व्याकरण है प्रलेखन।
हम "अतिरिक्त आगंतुकों" से कैसे बचें? हम पूरी तरह से नहीं करते हैं, लेकिन डीएमएस एक एएसटी पुस्तकालय प्रदान करता है जो एएसटी चलता है और सीएसटी और एएसटी के बीच अंतर को पारदर्शी रूप से संभालता है। DMS एक "विशेषता व्याकरण" मूल्यांकनकर्ता (AGE) भी प्रदान करता है, जो कि पेड़ के ऊपर और नीचे एक नोड की गणना करने वाले मानों को पारित करने की एक विधि है; AGE सभी पेड़ प्रतिनिधित्व मुद्दों को संभालता है और इसलिए उपकरण इंजीनियर केवल व्याकरण नियमों पर सीधे प्रभावी रूप से गणना लिखने की चिंता करता है। अंत में, डीएमएस "सतह-वाक्यविन्यास" पैटर्न भी प्रदान करता है, जो व्याकरण से कोड के टुकड़े को विशिष्ट प्रकार के उपशीर्षक खोजने के लिए उपयोग किया जाता है, जिसमें अधिकांश नोड प्रकार शामिल नहीं होते हैं।
अन्य उत्तरों में से एक यह देखता है कि यदि आप ऐसे उपकरणों का निर्माण करना चाहते हैं जो स्रोत को पुन: उत्पन्न कर सकते हैं, तो आपके एएसटी को सीएसटी से मिलान करना होगा। यह वास्तव में सही नहीं है, लेकिन अगर सीएसटी नोड्स हैं तो स्रोत को फिर से बनाना आसान है। डीएमएस स्वचालित रूप से अधिकांश प्रीपाइटर को उत्पन्न करता है क्योंकि इसकी पहुंच दोनों तक है: -}
नीचे पंक्ति: एएसटी छोटे के लिए अच्छे हैं, दोनों फाइटिक और वैचारिक। सीएसटी से स्वचालित एएसटी निर्माण दोनों प्रदान करता है, और आपको दो अलग-अलग सेटों को ट्रैक करने की समस्या से बचने देता है।
EDIT मार्च 2015: सीएसटी बनाम "एएसटी" के उदाहरणों का लिंक इस तरह बनाया गया