Title: Programming Languages Fundamentals
1Programming Languages Fundamentals
- Cao Hoaøng Truï
- Khoa Coâng Ngheä Thoâng Tin
- Ñaïi Hoïc Baùch Khoa TP. HCM
2Contents
- Evolution and classification
- Formal syntax and semantics
- Compilation and interpretation
-
-
3Machine Language
CPU
Memory
0101001001101011
1101111001001001
I/O
0001101010101010
4Machine Language
Instruction
Operation Code
Operands
10110011010010010011010110110001
5Assembly Language
A B C if A 0 then body MOV r0, B move
B into register r0 ADD r0, C add MOV A, r0
store BNE L1 branch if result not equal
0 body L1
6Language Levels
Natural Language
High-Level
Low-Level
Machine Language
7What Makes a Good Language?
- Clarity, simplicity, unity of language concepts
- Clarity of program syntax
- Naturalness for the application
- Support for abstraction
- Ease of program verification
-
-
8What Makes a Good Language?
- Programming environment
- Portability of programs
- Cost of use
- program execution
- program translation
- program creation, testing, use
- program maintenance
-
-
9Language Classification
- Imperative
- von Neumann Fortran, Pascal, Basic, C
- object-oriented Smalltalk, Eiffel, C, Java
- Declarative
- functional Lisp, ML, Haskell
- dataflow Id, Val
- logic Prolog, VisiCalc
-
-
10Von Neumann Languages
- Most familiar and successful
- Imperative statements
- Modification of variables
- Fortran, Pascal, Basic, C,
-
-
11Object-Oriented Languages
- Imperative statements
- Message passing among objects
- Smalltalk, Eiffel, C, Java
-
-
12Functional Languages
- Recursive definition of functions
- (lambda calculus)
- Expressions of function composition
- Lisp, ML, Haskell
-
-
13Logic Languages
- Logical facts and rules
- (predicate logic)
- Computation as theorem proving
- Prolog, VisiCalc
-
-
14Dataflow Languages
- Computation as token flow among nodes
- Inherently parallel model
- Id, Val
-
-
15Contents
- Evolution and classification
- Formal syntax and semantics
- Compilation and interpretation
-
-
16Formal Syntax and Semantics
- Computer languages must be precise
- Both their form (syntax) and meaning (semantics)
must be specified without ambiguity - Both programmers and computers can tell what a
program is supposed to do -
-
17Formal Syntax
- Abstract syntax
- Context-free grammars
- Backus-Naur formalism (BNF)
- Syntax diagrams
- Derivations and parse trees
-
-
18Abstract Syntax
- Syntactic class
- Syntactic form
-
-
19Example Expressions
- Syntactic class
- E expression
- I identifier
- C constant
- O operator
- Syntactic form
- E I C E O E (E)
-
-
20Example Expressions
21Example Expressions
22Abstract Syntax
- Advantage simple
- Disadvantages
- No terminal symbols defined
- Ambiguous
-
-
23Context-Free Grammars
- Start symbol
- Non-terminals
- Terminals
- Productions A ? a1 a2 an
- (Noam Chomsky, 1959)
-
24Example Unsigned Integers
- 6 2 5 7 3
-
-
- ltdigitgt ltunsigned_integergt
-
-
25Example Unsigned Integers
- Start symbol ltunsigned_integergt
-
- Non-terminals ltunsigned_integergt, ltdigitgt
- Terminals 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
- Productions
- ltunsigned_integergt ? ltdigitgt ltdigitgt
ltunsigned_integergt -
-
26Backus-Naur Formalism
- ltunsigned_integergt ltdigitgt ltdigitgt
ltunsigned_integergt - (John Backus, 1960)
-
-
27Example Expressions
- ltfactorgt
- 12 3 4
- lttermgt
-
-
-
28Example Expressions
- Start symbol ltexpressiongt
- Non-terminals ltexpressiongt, lttermgt, ltfactorgt,
-
- ltunsigned_integergt, ltterm_opgt,
- ltfactor_opgt
- Terminals 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, , -, ,
/ -
-
-
-
29Example Expressions
- Productions
-
- ltexpressiongt ? lttermgt ltexpressiongt
ltterm_opgt lttermgt - lttermgt ? ltfactorgt lttermgt ltfactor_opgt ltfactorgt
- ltfactorgt ? ltunsigned_integergt (ltexpressiongt)
- ltterm_opgt ? -
- ltfactor_opgt ? /
-
-
30Syntax Diagrams
expression
term
expression
term_op
term
31Derivations
- ltexpressiongt
- ? ltexpressiongt ltterm_opgt lttermgt
- ? lttermgt ltfactorgt
- ? lttermgt ltfactor_opgt ltfactorgt
ltunsigned_integergt - ? ltfactorgt ltunsigned_integergt 4
- ? ltunsigned_integergt 3 4
- ? 12 3 4
-
-
32Parse Trees
ltexpressiongt
ltexpressiongt
ltterm_opgt
lttermgt
lttermgt
ltfactorgt
lttermgt
ltfactorgt
ltfactor_opgt
ltfactorgt
ltunsigned_integergt
ltunsigned_integergt
ltunsigned_integergt
3
4
12
33Parse Trees
ltexpressiongt
ltexpressiongt
ltterm_opgt
lttermgt
lttermgt
ltfactorgt
lttermgt
ltfactorgt
ltfactor_opgt
ltfactorgt
ltunsigned_integergt
ltunsigned_integergt
ltunsigned_integergt
3
4
12
34Formal Semantics
- Operational semantics
- Denotational semantics
- Axiomatic semantics
-
-
35Operational Semantics
- A virtual computer to execute a program.
- A set of formally defined operations to specify
how the internal state of the virtual computer
may change. -
-
36Denotational Semantics
- Each program construct is a function that maps an
input to an output. - A program is a composition of functions.
-
-
37Axiomatic Semantics
- The effect of a statement is defined via its
precondition and postcondition. - A set of axioms and rules to define the effect of
program constructs. -
-
38Axiomatic Semantics
P S Q
precondition
statement
postcondition
39Axiomatic Semantics
Px?E x E P
40Axiomatic Semantics
x ? 2 x x 1 x ? 3
E x 1 P x gt 3 Px?E x 1 gt 3 x gt 2
41Axiomatic Semantics
if (P S1 Q) ? (Q S2 R) then P S1
S2 R
42Contents
- Evolution and classification
- Formal syntax and semantics
- Compilation and interpretation
-
-
43Compilation and Interpretation
Compiler
Source program
Target program
Target program
Input
Output
Interpreter
Source program
Output
Input
44Compilation and Interpretation
- Interpreter better flexibility and diagnostics
- Compiler better performance
-
-
45Phases of Compilation
Character stream
Scanner (lexical analysis)
Token stream
Parser (syntactic analysis)
Parse tree
Semantic analysis
Intermediate code
Machine-independent code optimisation
Optimised intermediate code
Target code generation
Target code
Machine-specific code optimization
Optimised target code
46Phases of Compilation
c a b 7
Scanner (lexical analysis)
id1 id2 id3 7
Parser (syntactic analysis)
47Phases of Compilation
id1 id2 id3 7
Parser (syntactic analysis)
48Phases of Compilation
Semantic analysis
CNV (7, , t1) (id3, t1, t2) (id2, t2, t3) ASS
(t3, , id1)
49Phases of Compilation
CNV (7, , t1) (id3, t1, t2) (id2, t2, t3) ASS
(t3, , id1)
Machine-independent code optimisation
(id3, 7.0, t1) (id2, t1, id1)
50Phases of Compilation
(id3, 7.0, t1) (id2, t1, id1)
Target code generation
MOV reg, id3 MUL reg, 7.0 ADD reg, id2 MOV id1,
reg
51Exercises
- Define a formal syntax for a simple language
supporting only the assignment statement and
arithmetic expressions. - Write the derivation and draw the parse tree of
c (a b) 7 using the defined syntax. -
-