血压什么时候最高| 惜字如金是什么意思| 新生儿为什么有黄疸| 哥伦比亚牌子什么档次| 什么是靶向疗法| 缓解紧张吃什么药| 更年期燥热吃什么食物| 喝酒后头疼吃什么药| 什么是电汇| 脸部痒是什么原因| 疤痕体质是什么| 煮玉米放盐起什么作用| 头晕吃什么药好| 人老是犯困想睡觉是什么原因| 男士戴什么手串好| 脸上白一块一块的是什么原因| 1119是什么星座| 脂肪肝浸润是什么意思| 总是感觉口渴是什么原因| 补充蛋白质提高免疫力吃什么| 更年期吃什么药调理| 酒精对皮肤有什么伤害| 吃什么补肾壮阳最快速| 种猪是什么意思| 格斗和散打有什么区别| 顾影自怜是什么意思| 支气管炎不能吃什么| 咽炎是什么症状| 眼睛干涩用什么药| 1977年出生属什么生肖| 萎缩性胃炎吃什么好| 睡着了咳嗽是什么原因| 老公梦见老婆出轨是什么意思| tc是什么意思| 一条条什么| 怀孕子宫前位和后位有什么区别| 高血压可以吃什么肉| 杜甫自号什么| punk什么意思| 尿酸高尿液是什么颜色| 忽然心口疼是什么原因| 效劳是什么意思| 曲苑杂坛为什么停播| 头皮癣用什么药膏最好| 米其林什么意思| 粗茶淡饭下一句是什么| 吃什么补充维生素b| 冬眠是什么意思| 曹操字什么| 正剧是什么意思| 心神不定是什么生肖| 为什么男怕属鸡| 美人尖是什么| 尿道口感染吃什么药| 女男是什么字| 鼻窦炎是什么样子的| 昱字五行属什么| 娇兰属于什么档次| 早上起床胃疼是什么原因| 农历八月初五是什么星座| 市辖区是什么意思| 杏色配什么颜色最洋气| 腿抽筋是什么问题| 同房有什么姿势| 冲虎煞南是什么意思| 怀孕了想打掉吃什么药| 唵嘛呢叭咪吽什么意思| 草是什么颜色的| 反酸水是什么原因| 白头翁是什么意思| 吃人参对身体有什么好处| 小孩子发烧吃什么药| 知了猴什么时候结束| 小孩牙疼吃什么药| 萝卜炖什么好吃| 心率低于60说明什么| 成都五行属什么| 匹夫是什么意思| 什么心什么血| 左氧氟沙星氯化钠注射作用是什么| me是什么基团| 11月8日什么星座| 语素是什么| 排骨炖什么好吃又有营养| 什么样的人招蚊子| 什么去疤痕效果最好| 肠漏是什么| mj什么意思| 骨质疏松吃什么药好| 孤单是什么意思| 25是什么意思| 90年属什么| 翌日什么意思| 女人做梦梦到蛇是什么意思| 溥仪什么时候去世的| 用纸可以折什么| 三伏贴什么时候贴最好| 什么颜色衣服最防晒| 肩周炎是什么原因造成的| 肝损伤吃什么药| 疝气挂什么科| cps是什么| 肝不好有什么症状表现| 中度贫血是什么原因造成的| 知柏地黄丸对男性功能有什么帮助| 金鸡独立什么意思| 包皮脱皮是什么原因| 子宫出血什么原因| 全脂牛奶是什么意思| 梦见自己的头发长长了是什么意思| 什么是编外人员| 系带割掉了有什么影响| 不寐病是什么意思| 突然抽搐是什么原因| 什么叫有氧运动和无氧运动| 为什么印度人叫阿三| 1月26日是什么星座| 猪精是什么意思| 净身是什么意思| 什么叫地包天| 湿气重吃什么能去湿气| 晖字五行属什么| 尿黄尿臭是什么原因| 丁香是什么| 足癣用什么药| 女性备孕吃什么养卵泡| 世界上最长的英语单词是什么| 牙痛不能吃什么东西| 产后大出血一般发生在什么时候| 维生素b12高是什么原因| 1866年属什么生肖| 喵喵喵是什么意思| 发烧喝什么饮料比较好| 刮痧板什么材质的好| 小肚鸡肠是什么意思| 小孩咳嗽有痰吃什么药| 尿常规检查挂什么科| 脖子上有痣代表什么| 不排便是什么原因| 硬下疳是什么| 小孩记忆力差需要补充什么营养| 小便多吃什么药| 6点是什么时辰| 头骨凹陷是什么原因| 内分泌失调什么症状| 恭敬地看的词语是什么| 钠是什么东西| 茶毫是什么| cool什么意思中文| 二元酸是什么| 蚂蚁怕什么| david是什么意思| 纸包鸡什么意思| 长宽高用什么字母表示| 电焊打眼最有效最快的方法是什么| 8月份是什么星座| 高血糖吃什么药| 胆气虚吃什么中成药| 一个火一个华念什么| 什么是埋线双眼皮| 跌打损伤用什么药好得快| 拉屎为什么是绿色的| 腰穿是什么意思| 树叶什么| 者羽念什么| 尿少是什么原因| 吃什么增强抵抗力和免疫力| 阴唇为什么会变黑| 过敏性鼻炎引起眼睛痒用什么药| 纯化水是什么水| hcc是什么意思| 腹股沟淋巴结肿大挂什么科| 怀孕一个月有点见红是什么情况| 宫腔内高回声是什么意思| 自强不息的息是什么意思| 吃得什么| 脚麻木是什么病的前兆| 非萎缩性胃炎是什么意思| 脑供血不足用什么药| 调停是什么意思| 布洛芬缓释胶囊有什么副作用| 什么星| 农历闰月有什么规律| 戒烟后为什么会发胖| 火红的太阳像什么| pd是什么病| 清高是什么意思| 晚上九点多是什么时辰| 真丝香云纱是什么面料| 味极鲜是什么| 郭靖黄蓉是什么电视剧| 合肥有什么特产| 混合痔是什么意思| 肺气不足吃什么药| 鹅和什么一起炖最好吃| 为什么指甲有竖纹| 神经内科主要看什么病| 双侧胸膜局限性增厚是什么意思| 彩金是什么材质| 假饵适合钓什么鱼| 做爱是什么感觉| 一库一库雅蠛蝶是什么意思| 指甲有竖纹吃什么药| x什么意思| 宋江是什么星| 对牛弹琴是什么意思| 医士是什么职称| 溢脂性皮炎用什么药| 精神障碍是什么病| 生理需要是什么意思| 1994年属什么| 支配是什么意思| 透明人什么意思| 小肚子胀气是什么原因| 有冬瓜西瓜南瓜为什么没有北瓜| 节哀顺便是什么意思| 梦见包丢了是什么意思| 三文鱼为什么可以生吃| 什么补钾| 原本是什么意思| 抽烟头晕是什么原因| 热锅上的蚂蚁是什么意思| 丙类药一般是什么药| 小孩拉稀吃什么药| 阴虚吃什么食物| 马叉虫是什么意思| 功名利禄是什么意思| 肝脏分泌什么| 梁五行属什么| 猫拉稀吃什么药| 什么是耳石症| 菽是什么意思| 小月子同房有什么危害| 为什么会长结石| 什么长什么去| 泌尿系统感染吃什么消炎药| 什么是精神病| 心衰竭是什么病严重吗| 大便干吃什么药| 泰迪哼哼唧唧表示什么| 切除子宫有什么危害| 森达属于什么档次的鞋| 婴儿有眼屎是什么原因引起的| 二黑是什么意思| 多梦吃什么药| 自由行是什么意思| 1.22是什么星座| 一个月一个泉是什么字| 梦见自己吃面条是什么意思| 参芪颗粒适合什么人吃| 不寐病是什么意思| 胸腔里面像岔气了的疼是什么原因| 艾附暖宫丸什么时候吃| 血压低头疼是什么原因| 女人什么眉毛最有福气| 7月15日什么星座| 肺气不足吃什么中成药| 门昌念什么| 胎教什么时候开始最好| 没有润滑剂可以用什么代替| 吃什么可以排毒| 龟头瘙痒是什么原因| 田七蒸瘦肉有什么功效| 什么是碳足迹| 百度Vai al contenuto

加强党的长期执政能力建设“必先利其器”

Da Wikipedia, l'enciclopedia libera.
Disambiguazione – Se stai cercando l'omonima professione editoriale, vedi Curatore editoriale.
Disambiguazione – "Compilazione" rimanda qui. Se stai cercando il tipo di album, vedi Compilation.
Schema che illustra il funzionamento di un compilatore ideale.
百度 “对发展中国家而言,一个强大的中国有重要积极意义。

Un compilatore è un programma informatico che traduce una serie di istruzioni scritte in un determinato linguaggio di programmazione (codice sorgente) in istruzioni di un altro linguaggio (codice oggetto): il processo di traduzione si chiama compilazione mentre l'attività inversa - ovvero passare dal codice oggetto al codice sorgente - è chiamata decompilazione ed è effettuata per mezzo di un decompilatore.

Se tutti i compilatori aderissero esattamente alla specifica del linguaggio, lo stesso programma potrebbe essere compilato senza modifiche da ciascun compilatore, producendo risultati semanticamente uguali, ovvero programmi che producono lo stesso risultato se sottoposti agli stessi dati di ingresso. Nella realtà, molti compilatori implementano il linguaggio in modo incompleto o aggiungono estensioni proprietarie, creando quindi dei dialetti del linguaggio principale. Per i linguaggi che adottano uno standard nella decorazione dei simboli, il codice oggetto generato da compilatori differenti può essere collegato assieme in un unico eseguibile.

A partire dal 1950 vennero sviluppati diversi compilatori sperimentali (tra cui l'A-0 System di Grace Hopper), ma nel 1957 il team Fortran presso l'IBM, guidato da John Backus, fu il primo a realizzare un compilatore completo mentre, nel 1960, il COBOL fu uno dei primi linguaggi a essere compilato su più architetture.[1]

L'idea della compilazione prese velocemente piede e molti dei principi di design dei compilatori vennero sviluppati negli anni sessanta. Un compilatore è esso stesso un programma scritto in un qualche linguaggio e i primi di essi vennero scritti in Assembly. Il primo compilatore auto-compilato, capace cioè di compilare il suo stesso codice, fu creato per il linguaggio Lisp da Hart e Levin presso il MIT nel 1962.[2] L'uso di linguaggi ad alto livello per scrivere i compilatori ebbe una accelerazione nei primi anni settanta quando i linguaggi Pascal e C furono usati per scrivere compilatori per loro stessi: ossia, ad esempio, furono scritti compilatori per il C scritti a loro volta in C.

Lo stesso argomento in dettaglio: Codice sorgente e Codice oggetto.

Quando un linguaggio di programmazione viene definito per la prima volta, sorge il problema di come realizzare il relativo compilatore. In questo caso esistono due approcci possibili:

  • scrivere il compilatore in un linguaggio diverso;
  • oppure - se esiste già un interprete per il nuovo linguaggio - è possibile sfruttarlo per scrivere una prima versione del compilatore, che verrà usata (dandogli in input il codice sorgente di sé stesso) per ottenere un primo compilatore funzionante in linguaggio macchina, che quindi renderà inutile l'uso dell'interprete. Il compilatore così ottenuto potrà essere usato per scrivere a sua volta compilatori migliori, e così via.

Funzionamento

[modifica | modifica wikitesto]
Fasi tipiche della compilazione.

Il compilatore prende in ingresso un programma, il codice sorgente, su cui esegue una serie di operazioni in modo da ottenere, in assenza di errori, il codice oggetto. In generale i compilatori sono in grado di riconoscere alcune classi di errori presenti nel programma, e in alcuni casi di suggerire in che modo correggerli.

I compilatori attuali dividono l'operazione di compilazione in due stadi principali: il front end e il back end. Nello stadio di front end il compilatore traduce il sorgente in un linguaggio intermedio (di solito interno al compilatore); nello stadio di back end avviene la generazione del codice oggetto.

Stadio di front end

[modifica | modifica wikitesto]

Questo stadio si suddivide in più fasi:

  • Analisi lessicale: attraverso un analizzatore lessicale, spesso chiamato scanner o lexer, il compilatore divide il codice sorgente in tanti pezzetti chiamati token. I token sono gli elementi minimi (non ulteriormente divisibili) di un linguaggio, ad esempio parole chiave (for, while), nomi di variabili (pippo), operatori (+, -, ?).
  • Analisi sintattica: l'analisi sintattica prende in ingresso la sequenza di token generata nella fase precedente ed esegue il controllo sintattico. Il controllo sintattico è effettuato attraverso una grammatica. Il risultato di questa fase è un albero di sintassi.
  • Analisi semantica: l'analisi semantica si occupa di controllare il significato delle istruzioni presenti nel codice in ingresso. Controlli tipici di questa fase sono il type checking (ovvero il controllo di tipo), controllare che gli identificatori siano stati dichiarati prima di essere usati e così via. Come supporto a questa fase viene creata una tabella dei simboli (symbol table) che contiene informazioni su tutti gli elementi simbolici incontrati quali nome, scope, tipo (se presente) etc. Il risultato di questa fase è l'albero sintattico astratto (AST).
  • Generazione del codice intermedio: dall'albero di sintassi viene generato il codice intermedio.

Stadio di back end

[modifica | modifica wikitesto]

Anche lo stadio di back end si divide in più fasi:

  • Ottimizzazione del codice intermedio.
  • Generazione del codice target: in questa fase viene generato il codice nella forma del linguaggio target. Spesso il linguaggio target è un linguaggio macchina.

Schema riassuntivo

[modifica | modifica wikitesto]
Flusso Attività
Codice sorgente Editing
Analizzatore lessicale Analisi lessicale
Token
Analizzatore sintattico Analisi sintattica
Albero di sintassi
Analizzatore semantico Analisi semantica
Albero di sintassi astratta
Generatore di codice intermedio
codice intermedio
Ottimizzatore codice intermedio
codice intermedio
Generatore codice target
codice target
  1. ^ The World's First COBOL Compilers Archiviato il 20 febbraio 2012 in Internet Archive.
  2. ^ AIM-39, su ai.mit.edu. URL consultato il 4 novembre 2005 (archiviato dall'url originale il 13 settembre 2006).
  • Alfred V. Aho, Ravi Sethi, e Jeffrey D. Ullman, Compilatori. Principi, tecniche e strumenti, Milano, Pearson, 2006. ISBN 978-88-7192-559-2

Voci correlate

[modifica | modifica wikitesto]

Altri progetti

[modifica | modifica wikitesto]

Collegamenti esterni

[modifica | modifica wikitesto]
Controllo di autoritàThesaurus BNCF 2330 · LCCN (ENsh86007588 · GND (DE4148248-7 · BNE (ESXX532454 (data) · BNF (FRcb120631538 (data) · J9U (ENHE987007531795805171 · NDL (ENJA01191219
  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica
阳历九月份是什么星座 勿误是什么意思 猫的眼睛为什么会发光 湿气重用什么药 edf是什么意思
网络维护是做什么的 腹泻吃什么好 榴莲不可以和什么食物一起吃 男人尿多是什么原因 吃亚麻籽有什么好处
豆汁是什么 2月5号什么星座 出炉是什么意思 牙龈疼是什么原因 7月份是什么星座
为什么会得湿疹 lycra是什么面料 02年属马的是什么命 低血压是什么 gamma什么意思
lch是什么病clwhiglsz.com 检查甲状腺挂什么科hcv9jop1ns0r.cn 炸鸡翅裹什么粉hcv7jop4ns5r.cn 检查生育能力挂什么科wzqsfys.com 巾帼不让须眉什么意思hcv8jop4ns9r.cn
夺魁是什么意思hcv8jop6ns3r.cn 脖子长痘痘是什么原因hcv8jop7ns0r.cn 三点水一个条读什么hcv8jop4ns0r.cn 为什么医生都穿洞洞鞋hcv8jop5ns1r.cn 原始鳞状上皮成熟是什么意思hcv8jop4ns0r.cn
斯夫是什么意思hcv9jop0ns1r.cn 人爱出汗是什么原因hcv8jop5ns0r.cn 梦见黑蛇是什么意思hcv9jop5ns7r.cn 欢字五行属什么hcv8jop7ns2r.cn 痛心疾首的疾是什么意思hcv9jop4ns9r.cn
82年属狗是什么命hcv8jop7ns8r.cn 局灶肠化是什么意思hcv9jop6ns0r.cn 诸葛亮儿子叫什么hcv8jop1ns7r.cn 什么的风520myf.com 手指头脱皮是什么原因hcv7jop4ns6r.cn
百度