Աբստրակտ շարահյուսական ծառ

Վիքիպեդիայից՝ ազատ հանրագիտարանից
Էվկլիդյան ալգորիթմի համար վերացական շարահյուսական ծառ. while b ≠ 0 if a > b a := a − b elseb := b − a return a

Աբստրակտ շարահյուսական ծառ (ԱՇԾ, անգլ.՝ abstract syntax tree, AST[1][2]), վերջավոր պիտակավորված ուղղորդված ծառ,  որոնցում ներքին գագաթները կապված են (պիտակավորված) ծրագրավորման լեզուների օպերատորների հետ, իսկ տերևները կապված են համապատասխան օպերանդների հետ։ Այսպիսով, տերևները դատարկ օպերատորներ են և ներկայացնում են միայն փոփոխականներ և հաստատուններ։

Շարահյուսական ծառերը օգտագործվում են վերլուծիչներում՝ ծրագրի միջանկյալ ներկայացում ապահովելու վերլուծական ծառի (որոշակի շարահյուսություն ունեցող ծառի) և տվյալների կառուցվածքի միջև, որն այնուհետև օգտագործվում է որպես ներքին ներկայացում կոմպիլյատորում կամ ծրագրի ինտերպրետատորում՝ օպտիմալացման և կոդի ստեղծման համար։ Նման կառույցների հնարավոր տարբերակները նկարագրված են վերացական շարահյուսությամբ։

Վերացական շարահյուսական ծառը տարբերվում է վերլուծական ծառից նրանով, որ այն չունի հանգույցներ և եզրեր այն շարահյուսական կանոնների համար, որոնք չեն ազդում ծրագրի իմաստաբանության վրա։ Խմբավորման փակագծերը այս բացակայության դասական օրինակ են, քանի որ վերացական շարահյուսական ծառի մեջ օպերանդների խմբավորումը հստակորեն նշված է ծառի կառուցվածքով։

Լեզվի համար, որը նկարագրվում է առանց համատեքստի քերականությամբ (գրեթե բոլոր ծրագրավորման լեզուներն են), վերլուծիչում ծառ ստեղծելը պարզ խնդիր է։ Քերականության կանոնների մեծ մասը ստեղծում է նոր գագաթ, և կանոնի նիշերը դառնում են եզրեր։ Կանոնները, որոնք ոչնչով չեն նպաստում ծառին (օրինակ՝ խմբավորման կանոնները), պարզապես վերևում փոխարինվում են իրենց նշաններից մեկով։ Բացի այդ, վերլուծիչը կարող է ստեղծել ամբողջական վերլուծական ծառ և այնուհետև անցնել այն՝ հեռացնելով աբստրակտ շարահյուսության մեջ չօգտագործվող հանգույցներն ու եզրերը՝ ստանալով վերացական շարահյուսական ծառ։

Ծանոթագրություններ[խմբագրել | խմբագրել կոդը]

  1. 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 
  2. 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 

Գրականություն[խմբագրել | խմբագրել կոդը]

Արտաքին հղումներ[խմբագրել | խմբագրել կոդը]