Lengoaia konpilatu

Wikipedia, Entziklopedia askea
Programazio lengoaia konpilatua» orritik birbideratua)

Lengoaia konpilatua programazio lengoaia bat zeinek bere inplementazioak konpiladoreak (iturburu kodetik makina lengoaia eratzen duten itzultzaileak) diren eta ez interpreteak (iturburu kodea pasoz pauso exekutatzen dute, exekuzioan inolako itzulpenik egin gabe).

Definizioa ez da beti betetzen. Printzipioz, edozein lengoaia konpiladore edo itzultzaile bat erabiliz inplementatu daiteke . Hala ere, gero eta ohikoagoa da bi irtenbideen arteko konbinazio bat: konpiladore batek  iturburu-kodea itzuli dezake tarteko elementu bat erabilita (sarritan Bytecode bat), gero interprete bati pasatuko zaiona exekutatzeko.

Abantailak eta desabantailak[aldatu | aldatu iturburu kodea]

Konpilazio denborari dagokionez, kode makinara konpilatutakoak, itzuli egin behar direnak baino azkarragoak dira, itzulpen prozesua egin behar ez dutelako. Hala ere, teknologia berriak, konpilazioa denbora exekuzioan bezala, eta hainbat hobekuntzak itzulpen prozesuan, hutsune hori murrizten hasi dira. Tarteko uneren batean, irtenbide mistoa eraginkorragoa izan ohi da bytecode-ak erabiliz.

Behe-mailako programazio lengoaiak normalean konpilatuak dira, batez ere eraginkortasuna kezka nagusia bada, gurutze-plataformen euskarria ordez. 

Ahalegin txikiak eginda posible da lengoaia interpretatuentzako konpiladoreak eraikitzea. Adibidez, Common Lisp  Java bytecode-re konpilatua izan daiteke, Java-ren makina birtualak interpretatzen duena; C kodera, kode-makinara konpilatu egiten dena. Konpilazio era ezberdin eskaintzen dituzten lengoaiek, kontrol gehiago eskaintzen dute programatzaileak exekuzio denbora kontrolatzeko eta plataforma ezberdinetan bateragarritasuna sustatzeko.

Lengoaiak[aldatu | aldatu iturburu kodea]

Normalean konpilatutzat hartzen diren zenbait lengoaia:

Tresnak[aldatu | aldatu iturburu kodea]

  • ANTLR
  • CodeWorker
  • Lex
  • Yacc
  • Flex
  • GNU Bison
  • Yacc

Ikusi gehiago[aldatu | aldatu iturburu kodea]

Kanpo estekak[aldatu | aldatu iturburu kodea]