Աբստրակտ շարահյուսական ծառ
Աբստրակտ շարահյուսական ծառ (ԱՇԾ, անգլ.՝ abstract syntax tree, AST[1][2]), վերջավոր պիտակավորված ուղղորդված ծառ, որոնցում ներքին գագաթները կապված են (պիտակավորված) ծրագրավորման լեզուների օպերատորների հետ, իսկ տերևները կապված են համապատասխան օպերանդների հետ։ Այսպիսով, տերևները դատարկ օպերատորներ են և ներկայացնում են միայն փոփոխականներ և հաստատուններ։
Շարահյուսական ծառերը օգտագործվում են վերլուծիչներում՝ ծրագրի միջանկյալ ներկայացում ապահովելու վերլուծական ծառի (որոշակի շարահյուսություն ունեցող ծառի) և տվյալների կառուցվածքի միջև, որն այնուհետև օգտագործվում է որպես ներքին ներկայացում կոմպիլյատորում կամ ծրագրի ինտերպրետատորում՝ օպտիմալացման և կոդի ստեղծման համար։ Նման կառույցների հնարավոր տարբերակները նկարագրված են վերացական շարահյուսությամբ։
Վերացական շարահյուսական ծառը տարբերվում է վերլուծական ծառից նրանով, որ այն չունի հանգույցներ և եզրեր այն շարահյուսական կանոնների համար, որոնք չեն ազդում ծրագրի իմաստաբանության վրա։ Խմբավորման փակագծերը այս բացակայության դասական օրինակ են, քանի որ վերացական շարահյուսական ծառի մեջ օպերանդների խմբավորումը հստակորեն նշված է ծառի կառուցվածքով։
Լեզվի համար, որը նկարագրվում է առանց համատեքստի քերականությամբ (գրեթե բոլոր ծրագրավորման լեզուներն են), վերլուծիչում ծառ ստեղծելը պարզ խնդիր է։ Քերականության կանոնների մեծ մասը ստեղծում է նոր գագաթ, և կանոնի նիշերը դառնում են եզրեր։ Կանոնները, որոնք ոչնչով չեն նպաստում ծառին (օրինակ՝ խմբավորման կանոնները), պարզապես վերևում փոխարինվում են իրենց նշաններից մեկով։ Բացի այդ, վերլուծիչը կարող է ստեղծել ամբողջական վերլուծական ծառ և այնուհետև անցնել այն՝ հեռացնելով աբստրակտ շարահյուսության մեջ չօգտագործվող հանգույցներն ու եզրերը՝ ստանալով վերացական շարահյուսական ծառ։
Ծանոթագրություններ[խմբագրել | խմբագրել կոդը]
- ↑ Fluri Beat, Wursch Michael, PInzger Martin, Gall Harald (2007)։ «Change Distilling:Tree Differencing for Fine-Grained Source Code Change Extraction»։ IEEE Transactions on Software Engineering 33 (11): 725–743։ ISSN 0098-5589։ doi:10.1109/tse.2007.70731
- ↑ Falleri Jean-Rémy, Morandat Floréal, Blanc Xavier, Martinez Matias, Monperrus Martin (2014-09-15)։ «Fine-grained and accurate source code differencing»։ Proceedings of the 29th ACM/IEEE International Conference on Automated Software Engineering (անգլերեն) (Vasteras Sweden: ACM): 313–324։ ISBN 978-1-4503-3013-8։ doi:10.1145/2642937.2642982
Գրականություն[խմբագրել | խմբագրել կոդը]
- Iulian Neamtiu, Jeffrey S. Foster, Michael Hicks Understanding source code evolution using abstract syntax tree matching(անգլ.) // Proceedings of the 2005 international workshop on Mining software repositories (MSR ’05). — 2005. —
- Beat Fluri, Michael Würsch, Martin Pinzger, Harald C. Gall Change Distilling: Tree Differencing for Fine-Grained Source Code Change Extraction(անգլ.) // IEEE Transactions on Software Engineering. — 2007. — Т. 33. — № 11. — С. 725—743.
- Jean-Rémy Falleri, Floréal Morandat, Xavier Blanc, Matias Martinez, Martin Monperrus Fine-grained and Accurate Source Code Differencing(անգլ.) // Proceedings of the International Conference on Automated Software Engineering. — 2014. — С. 313—324. —
Արտաքին հղումներ[խմբագրել | խմբագրել կոդը]
- AST View — плагин для Eclipse показывает абстрактное синтаксическое дерево программ на языке Java
- Полезная информация о представлении абстрактного синтаксического дерева в Eclipse и манипулировании исходным кодом Java
- Представление CAST
- Abstract Syntax Tree Unparsing (չաշխատող հղում — պատմություն)