Lecture 03: Languages Implementation Methods & Compilation

 0    31 词汇卡    up804653
下载mp3 打印 检查自己
 
问题 English 答案 English
describe Compilation
开始学习
[1] Translate high-level program (source language) into machine code (machine language) [3] Slow translation, fast execution [2] Use: Large commercial applications.
Describe Pure Interpretation
开始学习
[1] Programs are interpreted by another program known as an interpreter. [2] Use: Small programs or when efficiency is not an issue.
Describe Hybrid Implementation Systems
开始学习
[1] A compromise between compilers and pure interpreters. [2] Use: Small and medium systems when efficiency is not the first priority.
what are the phases of Compilation?
开始学习
[1] lexical analysis [2] syntax analysis [3] Semantics analysis [4] code generation
what is lexical analysis
开始学习
converts characters in the source program into lexical units
What is syntax analysis
开始学习
transforms lexical units into parse trees which represent the syntactic structure of program
what is Semantics analysis
开始学习
generate intermediate code
what is code generation
开始学习
machine code is generated
What is a compiler
开始学习
A compiler is a program that translates a program in a source language into an equivalent program in a target language.
What is the structure of a compiler?
开始学习
(Source program->[Lexical analyser]->[Synax analyser]->[Semantic analyser]->[Code optomiser]->[Code generator]->Target program) everything in [] is also conected to a symbol table
what does the lexical Analysis entail?
开始学习
[1] The lexical analyser (or scanner): reads the source program’s text (one character at a time); and returns a sequence of tokens to send to the next phase. [2] Tokens are symbolic names for the lexical elements of the source language
What is the Symbols Table
开始学习
The symbol table is a data structure containing all the identifiers (together with their attributes) of a source program.
What are typical Attributes of variables?
开始学习
type, size, scope.
What are typical attributes for methods procedures or functions
开始学习
number of arguments and their types and passing mechanisms; the return type (if any).
What is Syntax Analisis (parsing)
开始学习
[1] analyses the syntactic structure of the source program for valid syntax[2] input to a parser is the sequence of output tokens from the lexical analyser [3] It attempts to apply the rules that define the syntax of the language on the sequence of tokens
what is Semantic Analysis
开始学习
determines if the source program (based on the AST and symbol table) is semantically valid.
What does AST stand for? and what is it?
开始学习
Abstract syntax trees are data structures widely used in compilers to represent the structure of program code
What is Error Handling
开始学习
[1] The three analysis phases of a compiler must be able to deal with errors in the source program. [2] On detecting an error a compiler should ideally: report the error in a helpful way, and continue processing to look for further errors.
What is Code Optimisation
开始学习
[1] Attempts to improve the time and space requirements of a program, i.e., makes a smaller or faster or both. [2] Example optimisations include: -constant folding (e.g., replacing 3+7 with 10); -eliminating unreachable code
What is Code Generation
开始学习
[1] The final task of the compiler is to generate code for a specific machine. In this phase we need to consider such [2] The output from this phase is usually programs in machine language or assembly language or code for a virtual machine.
What things may be considered during code generation
开始学习
[1] Instruction selection: The machine language instr' to use [2] Instr' scheduling: The order to put those instr'[3] Register allocation: The allocation of variables to processor registers[4] Debug data generation if required so the code can be debugged
What is Pure Interpretation
开始学习
An interpreter parse the source code and execute it directly, e.g., early versions of the Lisp and BASIC.
describe some dissadvantages of pure implimentation compared with compilation.
开始学习
[1] Slower execution than compiled programs [2] Often requires more space
Why is pure interpritation slower than compilation?
开始学习
[1] decoding high-level language statement is slower than decoding machine language instructions [2] Regardless how many times a statement is executed, it must be decoded every time.
Why does pure interpritation need more space than compilation?
开始学习
the source code and the symbol table must be present during interpretation
give examples of Pure interpritation languages
开始学习
Now rare for traditional high-level languages but has significant comeback with some Web scripting languages (e.g., JavaScript, PHP)
What is Hybrid Implementation Systems
开始学习
A compromise between compilers and pure interpreters (not as fast as compiled languages, but faster than interpreted languages)
Describe the process used byHybrid Implementation Systems
开始学习
A high-level language program is translated/compiled to an intermediate code that will be interpreted during execution.
with Hybrid Implementation Systems is the intermediate code ever translated further?
开始学习
no never, Instead, a virtual machine is supplied that takes the intermediate language as its machine language, and interpret the intermediate code (much faster than it would be able to interpret a high-level language)
Give examples of some Hybrid Implementation Systems languages
开始学习
E.g., Perl, Python, and MATLAB, JDK1.0
describe Just-in-Time Implementation Systems
开始学习
[1] compile programs to an intermediate language[2] intermediate language is loaded into memory [3] segments/subprograms are translated into machine code just before its execution (or when they are called)[4] The machine code is kept for subsequent calls

您必须登录才能发表评论。