000083344 001__ 83344
000083344 005__ 20190717172511.0
000083344 0247_ $$2doi$$a10.5075/epfl-thesis-3509
000083344 02470 $$2urn$$aurn:nbn:ch:bel-epfl-thesis3509-5
000083344 02471 $$2nebis$$a5129022
000083344 037__ $$aTHESIS
000083344 041__ $$aeng
000083344 088__ $$a3509
000083344 245__ $$aA typed intermediate language and algorithms for compiling scala by successive rewritings
000083344 269__ $$a2006
000083344 260__ $$bEPFL$$c2006$$aLausanne
000083344 300__ $$a203
000083344 336__ $$aTheses
000083344 502__ $$aClaude Petitpierre, Erik Ernst, Jan Vitek
000083344 520__ $$aScala is a general-purpose programming language developed at EPFL. It combines concepts coming from object-oriented languages with other ones coming from functional languages. Scala is strongly typed and comes with a relatively complex type system, which incorporates several advanced concepts. The Scala compiler consists of successive phases, which rewrite the source code into ever simpler versions until the code is simple enough such that in can be trivially translated into object code. It is expected that each phase generates well-typed Scala code. This thesis starts by describing in details the main language constructions of Scala along with its type system. It then focuses on two rewriting phases whose implementation was much more difficult than expected. Indeed, during the development of the compiler, it was discovered that some programs cannot be simplified by rewriting them if the produced code has to be well-typed Scala code. The two problematic phases are described in details as well as the programs that cannot be correctly rewritten. A typed intermediate language that generalizes some aspects of Scala and thus enables the rewriting of all programs is described. The two rewriting phases are then formally described using this intermediate language.
000083344 6531_ $$aprogramming language
000083344 6531_ $$acompilation
000083344 6531_ $$atype system
000083344 6531_ $$aintermediate language
000083344 6531_ $$aprogram rewriting
000083344 6531_ $$alangage de programmation
000083344 6531_ $$acompilation
000083344 6531_ $$asystème de types
000083344 6531_ $$alangage intermédiaire
000083344 6531_ $$aréécriture de programmes
000083344 700__ $$0(EPFLAUTH)100055$$g100055$$aAltherr, Philippe
000083344 720_2 $$aOdersky, Martin$$edir.$$g126003$$0241835
000083344 8564_ $$zTexte intégral / Full text$$yTexte intégral / Full text$$uhttps://infoscience.epfl.ch/record/83344/files/EPFL_TH3509.pdf$$s703138
000083344 909C0 $$xU10409$$pLAMP$$0252187
000083344 909CO $$pthesis-bn2018$$pthesis-public$$pDOI$$pIC$$ooai:infoscience.tind.io:83344$$qDOI2$$qGLOBAL_SET$$pthesis
000083344 918__ $$bIC-SIN$$cIIF$$aIC
000083344 919__ $$aLAMP1
000083344 920__ $$b2006$$a2006-11-24
000083344 970__ $$a3509/THESES
000083344 973__ $$sPUBLISHED$$aEPFL
000083344 980__ $$aTHESIS