CSC 533: Organization of Programming Languages
Fall 2000

Test 1 Review


Overview and History machine language--> assembly language--> high-level languages programming paradigms: imperative vs. declarative language translation: compiled vs. interpreted evaluation criteria: reliability, clarity/simplicity, orthogonality, generality, speed, portability, ... Syntax and Semantics syntax BNF (EBNF) grammar, derivation, parse tree, ambiguity building precedence & associativity into grammar rules semantics operational, axiomatic, denotational Variables and Bindings variable attributes name: keyword vs. reserved word type: static (explicit or implicit) vs. dynamic binding type checking, coercion address: static vs. semi-dynamic vs. dynamic (implicit or explicit) value: l-value vs. r-value scope & lifetime: static vs. dynamic scoping stack-based memory management (store activation records, static & semi-dynamic variables) static vs. dynamic links Data Types primitive data types integer, floating-point (decimal, fixed-point, rational, complex) boolean character pointer used for indirect addressing, dynamic memory management dangling reference, garbage reference heap management: can allocate/deallocate in arbitrary order fixed-size elements: allocate/deallocate from free list variable-size elements: fragmentation, compaction reclaiming storage: reference counts vs. garbage collection complex data types string enumeration subrange array/vector subscript types, subscript ranges, multi-dimensional, allocation (static vs. fixed stack-dynamic vs. stack-dynamic vs. heap-dynamic) record/struct field access, variant record/union