Albero sintattico astratto

Albero sintattico dell'algoritmo di Euclide

In informatica, un albero sintattico astratto (AST) o semplicemente albero sintattico è una rappresentazione ad albero della struttura sintattica astratta del testo (spesso codice sorgente) scritto in un linguaggio formale. Ogni nodo dell'albero denota un costrutto che si verifica nel testo.

La sintassi è "astratta" nel senso che non rappresenta ogni dettaglio presente nella sintassi reale, ma solo quelli strutturali o relativi al contenuto. Ad esempio, le parentesi di raggruppamento sono implicite nella struttura ad albero quindi non devono essere rappresentate da nodi separati. Similmente, un costrutto solitamente sintattico come l'istruzione se-condizione-allora può essere denotato per mezzo di un singolo nodo con tre rami.

Questo distingue gli alberi sintattici astratti da quelli concreti, tradizionalmente designati come alberi di analisi che sono tipicamente costruiti da un parser durante la traduzione del codice sorgente e il processo di compilazione. Una volta costruiti, ulteriori informazioni vengono aggiunte all'AST mediante elaborazioni successive come le analisi contestuali.

Gli alberi sintattici astratti vengono utilizzati anche nell'analisi del programma e nei sistemi di trasformazione del programma.

Applicazione nei compilatori

Gli alberi sintattici astratti sono strutture dati ampiamente utilizzate dai compilatori per rappresentare la struttura del codice sorgente. Un AST è in genere il risultato della fase di analisi sintattica del compilatore. Spesso funge da rappresentazione intermedia del programma attraverso le diverse fasi di compilazione e ha un forte impatto sul risultato finale.

Motivazioni

Un AST ha diverse proprietà che aiutano nelle varie fasi del processo di compilazione:

  • Può essere modificato e migliorato con informazioni quali proprietà e annotazioni per ogni elemento che contiene, impossibile da fare con il codice sorgente di un programma, poiché implicherebbe cambiarlo.
  • Rispetto al codice sorgente, un AST non include punteggiatura e delimitatori non essenziali (parentesi, punto e virgola, ecc.).
  • Di solito contiene informazioni extra sul programma, a causa delle varie fasi di analisi da parte del compilatore. Ad esempio, può memorizzare la posizione di ciascun elemento nel codice sorgente, consentendo al compilatore di stampare utili messaggi di errore.

Gli AST sono necessari a causa della natura intrinseca dei linguaggi di programmazione e della relativa documentazione. Le lingue sono spesso ambigue per natura. Per evitare questa ambiguità, i linguaggi di programmazione sono spesso specificati come grammatica libera dal contesto (CFG). Tuttavia, ci sono spesso aspetti dei linguaggi di programmazione che una CFG non può esprimere, ma fanno parte del linguaggio e sono documentati nelle sue specifiche. Questi sono dettagli che richiedono un contesto per determinarne la validità e il comportamento. Ad esempio, se un linguaggio consente la dichiarazione di nuovi tipi, una CFG non può prevedere i nomi di tali tipi né il modo in cui debbano essere utilizzati. Anche se un linguaggio ha un insieme predefinito di tipi, il modo corretto di utilizzarli di norma richiede un contesto. Un altro esempio è il duck typing, in cui il tipo di un elemento può cambiare a seconda del contesto. L'overloading degli operatori è un altro caso in cui l'utilizzo corretto e la funzione finale dipendono dal contesto.

Design

La progettazione di un AST è spesso strettamente collegata alla progettazione di un compilatore e alle sue caratteristiche.

I requisiti fondamentali includono quanto segue:

  • I tipi di variabile devono essere preservati, così come la posizione di ogni dichiarazione nel codice sorgente.
  • L'ordine delle istruzioni eseguibili deve essere rappresentato in modo esplicito e ben definito.
  • I componenti sinistro e destro delle operazioni binarie devono essere memorizzati e identificati correttamente.
  • Gli identificatori e i relativi valori devono essere memorizzati per le istruzioni di assegnazione.

Questi requisiti possono essere usati per progettare la struttura dati per l'AST.

Alcune operazioni richiedono sempre due elementi, come i due termini per l'addizione. Tuttavia, alcuni costrutti di linguaggio richiedono un numero arbitrariamente elevato di elementi figlio, come l'elenco di argomenti passati ai programmi dalla shell. Di conseguenza, un AST utilizzato per rappresentare il codice scritto in tale linguaggio deve anche essere sufficientemente flessibile da consentire l'aggiunta rapida di una quantità sconosciuta di figli.

Per supportare la verifica del compilatore, dovrebbe essere possibile riconvertire l'AST in un codice sorgente sufficientemente simile all'originale nell'aspetto e identico nell'esecuzione dopo la ricompilazione.

Utilizzo

L'AST viene utilizzato intensamente durante l'analisi semantica, dove il compilatore verifica il corretto utilizzo degli elementi del programma e del linguaggio. Il compilatore genera anche la tabella dei simboli in base all'AST durante l'analisi semantica. Un attraversamento completo dell'albero permette di verificare la correttezza del programma.

Dopo aver verificato la correttezza, l'AST funge da base per la generazione del codice la quale spesso avviene per mezzo di una rappresentazione intermedia (IR) talvolta detta linguaggio intermedio.

Voci correlate

Altri progetti

Collegamenti esterni

Controllo di autoritàGND (DE4702177-9
  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica

Read other articles:

Antonov AirlinesBerkas:AntonovAirlines Logo.png IATA ICAO Kode panggil – ADB ANTONOV BUREAU DidirikanApril 1989; 34 tahun lalu (1989-04)PenghubungBandar Udara Leipzig/HalleArmada8-10* (lihat ringkasan armada)Perusahaan indukAntonovKantor pusatKyiv, UkrainaSitus webantonov.com Antonov Airlines adalah maskapai kargo Ukraina, sebuah divisi dari perusahaan penerbangan Antonov. Ini mengoperasikan layanan charter internasional di pasar kargo besar. Basis utamanya adalah Bandara Hostomel deka...

 

Archeryat the XXIX Summer UniversiadeVenuesNational Taiwan Sport University StadiumDatesAugust 20, 2017 (2017-08-20) – August 24, 2017 (2017-08-24)Competitors237 from 39 nations←20152019→ Archery was contested at the 2017 Summer Universiade from August 20 to 24 at the National Taiwan Sport University Stadium in Taoyuan, Taiwan.[1] Participant nations 237 archers from 39 nations participated at the 2017 Summer Universiade.  Argen...

 

Launch vehicle developed in United States See also: Thor (rocket family) and Thorad-Agena A Thor-Agena launch vehicle, ready to launch the Discoverer 37 (KH-3) spacecraft, 13 January 1962FunctionExpendable launch systemCountry of originUnited StatesSizeHeightThor-Agena A: 28 m (92 ft)Thor-Agena B: 31 m (102 ft)Thor-Agena D: 31 m (102 ft)Diameter2.44 m (8 ft 0 in)MassThor-Agena A: 53,130 kg (117,130 lb)Thor-Agena B: 56,507 kg (12...

Main article: 1940 United States presidential election 1940 United States presidential election in North Carolina ← 1936 November 5, 1940[1] 1944 → All 13 North Carolina votes to the Electoral College   Nominee Franklin D. Roosevelt Wendell Willkie Party Democratic Republican Home state New York New York Running mate Henry A. Wallace Charles L. McNary Electoral vote 13 0 Popular vote 609,015 213,633 Percentage 74.03% 25.97% County Result...

 

Platine cassette Pioneer CT-900S. Philips EL3302, premier magnétophone à cassette Un magnétocassette[1] ou magnétophone à cassette est un magnétophone utilisant une cassette audio[2] comme support de lecture et d'enregistrement. Il existe sous deux formats principaux : Le petit appareil typiquement monophonique, simplifié à un système de lecture et d'enregistrement, un amplificateur et un haut-parleur ; La platine cassette en tant qu'élément d'une chaîne haute-fidélité...

 

Village in Estonia Village in Harju County, EstoniaKäesaluVillageKäesalu manorCountry EstoniaCountyHarju CountyParishLääne-Harju ParishTime zoneUTC+2 (EET) • Summer (DST)UTC+3 (EEST) Käesalu is a village in Lääne-Harju Parish, Harju County in northern Estonia.[1] References ^ Classification of Estonian administrative units and settlements 2014 (retrieved 27 July 2021) 59°22′N 24°16′E / 59.367°N 24.267°E / 59.367; 24.267 vteSettle...

Voce principale: Fussball Club Südtirol. Fussball Club SüdtirolStagione 2013-2014Sport calcio Squadra Südtirol Allenatore Lorenzo D'Anna (fino al 6 ottobre) poi, Claudio Rastelli Presidente Walter Baumgartner Lega Pro Prima Divisione3º nel girone A Coppa ItaliaSecondo turno Coppa Italia Lega ProPrimo turno Maggiori presenzeCampionato: Corazza, Furlan (28)Totale: Bassoli, Corazza, Furlan (34) Miglior marcatoreCampionato: Corazza (11)Totale: Corazza (13)[1] StadioDruso (3.500)...

 

Overview of the exploration of Neptune Photograph of Neptune in true colour by Voyager 2 in 1989.[a] Neptune's south pole is slightly above the bottom of the image. Neptune has been directly explored by one space probe, Voyager 2, in 1989. As of 2024[update], there are no confirmed future missions to visit the Neptunian system, although a tentative Chinese mission has been planned for launch in 2024.[1] NASA, ESA, and independent academic groups have proposed future sc...

 

Tabel kebenaran bit 4-ary truth table, dengan kode Gray Kode biner terefleksikan (bahasa Inggris: reflected binary code, RBC), juga dikenal sebagai biner terefleksikan (bahasa Inggris: reflected binary, RB) atau Kode Gray berdasarkan nama Frank Gray, adalah urutan sistem bilangan biner dengan dua nilai berturut-turut berbeda dalam satu bit (digit biner). Kode Gray pada awalnya dirancang untuk mencegah keluaran palsu dari sakelar elektromekanik. Saat ini, kode Gray banyak digunakan unt...

United States Air Force general William R. Looney IIIGeneral William Looney, USAFBorn (1949-03-05) March 5, 1949 (age 75)Norman, Oklahoma, U.S.Allegiance United States of AmericaService/branch United States Air ForceYears of service1972–2008RankGeneralCommands heldAir Education and Training Command22nd Tactical Fighter Squadron33rd Fighter Wing1st Fighter WingArmed Forces Staff CollegeSpace Warfare Center14th Air ForceElectronic Systems CenterAeronautical Systems CenterA...

 

此條目可参照英語維基百科相應條目来扩充。 (2022年1月1日)若您熟悉来源语言和主题,请协助参考外语维基百科扩充条目。请勿直接提交机械翻译,也不要翻译不可靠、低品质内容。依版权协议,译文需在编辑摘要注明来源,或于讨论页顶部标记{{Translated page}}标签。 奥斯卡尔·托尔普出生1893年6月8日 逝世1958年5月1日  (64歲)奥斯陆 職業政治人物 政党工党...

 

Soviet rocket scientist Mikhail Tikhonravov in 1925 Mikhail Klavdievich Tikhonravov (July 29, 1900 – March 3, 1974) was a Soviet engineer who was a pioneer of spacecraft design and rocketry. Mikhail Tikhonravov was born in Vladimir, Russia. He attended the Zhukovsky Air Force Academy from 1922 to 1925, where he was exposed to Konstantin Tsiolkovsky's ideas of spaceflight. After graduation and until 1931 worked in several aircraft industries and was engaged in developing gliders. From 1931 a...

Former Ontario provincial highway King's Highway 50Peel Regional Road 50York Regional Road 24Simcoe County Road 50Route informationMaintained by the Regional Municipalities of Peel and York and the County of SimcoeLength53.5 km[1] (33.2 mi)ExistedAugust 12, 1936[2]–January 1, 1998[3]Major junctionsSouth end Highway 27 – TorontoMajor intersections Highway 7 – Vaughan Highway 49 Highway 9 – Mono MillsNorth end Hig...

 

Species of bird This article is about the species of wild sea duck. For the domestic duck breed, see Welsh harlequin. This article includes a list of general references, but it lacks sufficient corresponding inline citations. Please help to improve this article by introducing more precise citations. (February 2010) (Learn how and when to remove this message) Harlequin duck Adult drake Conservation status Least Concern  (IUCN 3.1)[1] Scientific classification Domain: Eukaryota Kin...

 

Undifferentiated vegetative tissue of certain organisms This article is about the undifferentiated tissue. For other uses, see Thallus (disambiguation). Thalli redirects here. For the Indian village, see Thally. Thallus of Pellia epiphylla Thallus (pl.: thalli), from Latinized Greek θαλλός (thallos), meaning a green shoot or twig, is the vegetative tissue of some organisms in diverse groups such as algae, fungi, some liverworts, lichens, and the Myxogastria. A thallus usually names the ...

Indonesian video streaming service Not to be confused with video. PT Vidio Dot ComType of businessPerseroan terbatasType of siteVideo streaming serviceOTT platform serviceAvailable inIndonesian, EnglishFoundedOctober 15, 2014; 9 years ago (2014-10-15)HeadquartersJakarta, IndonesiaArea served Indonesia Malaysia Timor Leste Worldwide (selected contents) Ownersee listFounder(s)Adi SariaatmadjaKey people Sutanto Hartono Monika Rudijono ParentElang Mahkota Teknolog...

 

Electric vehicle brand This article needs to be updated. The reason given is: european sales. Please help update this article to reflect recent events or newly available information. (June 2023) SeresCompany typePrivateIndustryAutomotiveEnergy storageFoundedJanuary 2016 (2016-01)FoundersXinghai ZhangHeadquartersSanta Clara, California, United StatesArea servedWorldwideKey peopleJohn Zhang (CEO)Yifan Tang (CTO)Martin Eberhard (lead scientist)ParentSeres GroupWebsitewww.global-seres.c...

 

Former British prison Reading Gaol redirects here. For the poem by Oscar Wilde, see The Ballad of Reading Gaol. HMP ReadingThe prison in 2007LocationReading, BerkshireCoordinates51°27′23″N 00°57′50″W / 51.45639°N 0.96389°W / 51.45639; -0.96389Security classYoung offenders InstitutionOpened1844Closed2014Managed byHM Prison ServicesWebsiteReading at justice.gov.uk HM Prison Reading, popularly known as Reading Gaol, is a former prison located in Reading, Berks...

愛琴海Αιγαίο Πέλαγος(希腊文)Ege Denizi(土耳其文)Adalar Deniz(土耳其文)愛琴海的位置位置地中海坐标39°N 25°E / 39°N 25°E / 39; 25类型海詞源古希臘神話人物埃勾斯主要流入伊那科斯河(英语:Inachos)、伊利索斯河、斯佩耳刻俄斯河、皮尼奧斯河、阿利阿克蒙河、發達河、斯特魯馬河、奈斯托斯河、馬里查河主要流出地中海所在国家希臘、土耳其&...

 

Jenkin Chapel in Cheshire, showing its saddleback roof A saddleback roof is usually on a tower, with a ridge and two sloping sides, producing a gable at each end.[1] See also List of roof shapes Saddle roof References ^ saddleback roof, Dictionary.com, retrieved 21 September 2012 Wikimedia Commons has media related to Saddleback roof towers. This architectural element–related article is a stub. You can help Wikipedia by expanding it.vte