Jump to content

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

Վիքիպեդիայից՝ ազատ հանրագիտարանից
Էվկլիդյան ալգորիթմի համար վերացական շարահյուսական ծառ. 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. doi:10.1109/tse.2007.70731. ISSN 0098-5589. S2CID 13659557.
  2. Falleri, Jean-Rémy; Morandat, Floréal; Blanc, Xavier; Martinez, Matias; Monperrus, Martin (2014 թ․ սեպտեմբերի 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. doi:10.1145/2642937.2642982. ISBN 978-1-4503-3013-8. S2CID 218737160.

Գրականություն

[խմբագրել | խմբագրել կոդը]

Արտաքին հղումներ

[խմբագրել | խմբագրել կոդը]