[an error occurred while processing this directive]
What is a formal system?
What is the difference between a formal system and a language?
Languages are made of:
Who was Admiral Grace Hopper and what did she do?
Compiler: A program that translates between two languages, usually from a high-level programming language to machine code.
What is the difference between a compiler and an interpreter?
Why did John Backus want a precise way of describing languages?
Backus Naur Form (BNF): A way of describing the surface forms in a
language using replacement rules in the form:
non-terminal ::= replacementThe rule means whenever you have what is on the left side of the ::=, you can replace it with what is on the right side.
What strings can the following BNF grammar produce?
Sentence ::= Food Comparator Food
Food ::= Bodo's Bagels
Food ::= Krispy Kreme Donuts
Comparator ::= are better than
Comparator ::= are worse than
What strings can the following BNF grammar produce?
Sentence ::= I like FoodList
FoodList ::= Food
FoodList ::= Food and FoodList
Food ::= Bodo's Bagels
Food ::= Krispy Kreme Donuts
Expression ::= PrimitiveExpression
PrimitiveExpression ::= Number | #t | #f | Primitive Procedure
Evaluation Rule 1: Primitives. If the expression is a primitive, it evaluates to __________________________________________.
Evaluation Rule 2: Names. If the expression is a name, it evaluates to __________________________________________.Expression ::= ApplicationExpression
Evaluation Rule 3: Application. If the expression is an application:Expression ::= ProcedureExpression
(a) Evaluate all the subexpressions (in any order)
(b) Apply the value of the first subexpression to the values of all the other subexpressions.Application Rule 1: Primitives. If the procedure to apply is a primitive, __________________.
Application Rule 2: Constructed Procedures. If the procedure is a constructed procedure, ___________________ the body of the procedure with each formal parameter replaced by the corresponding actual argument expression value.
Evaluation Rule 4: Lambda. Lambda expressions evaluate to a procedure that takes the given parameters and has the expression as its body. (Do not do anything until it is applied.)Expression ::= IfExpression
Evaluation Rule 5: If. To evaluate an if expression, (a) evaluate the ___________________; then, (b) if the value of the predicate expression is ___________ then the value of the if expression is the value of the alternate expression; otherwise, the value of the if expression is the value of the _____________________________________.
(define square (lambda (x) (* x x)))
You will need more space for this, but it is worth doing. (For an exam, say. Hint, wink, nudge.) Of course, you know the final value, but the important thing is to understand how following the Scheme evaluation rules steps will produce that value. You should be confident that you can determine the value of any Scheme expression just by following the evaluation rules systematically.
Evaluation Rule 3a does not say in what order the subexpressions should be evaluated in. For example, we could evaluate them left to right, or right to left, or in any other order. This is like the MIU-system Rule 3 that does not say which occurance of III should be replaced. Does it ever matter in which order the subexpressions of an application are evaluated? (Tough question, but try to think of a Scheme expression where it would make a difference.)