Review
Questions
1.
Syntax
is the form of programming language expressions, statements, and program units.
Semantics is the meaning of those expressions, statements, and program units.
7. Brackets,
braces, multiple-choice options.
9. State
the static semantic rules of the language.
12. To
provide complete descriptions of the syntax and static semantics of programming
languages.
14. The
individual steps in the execution of machine language and the resulting changes
to the state of the machine are too small and too numerous, and the storage of
a real computer is too large and complex.
16. Syntactic
domain is the domain that syntactic structures are mapped, semantic domain is
the range of the map.
18. Denotational
semantics
27. Loop
invariant is the corresponding step in the axiomatic semantics of a while loop
is finding an assertion. Example: I is the loop variant
P=> I
{I and B} S{I}
(I and (not B)) => Q
28. To
treat the process of producing a weakest precondition as a function, because it
takes a predicate, or assertion, as a parameter and returns another predicate.
29. Total correctness is if loop termination
can be shown, partial correctness if the other conditions can be met but
termination isn’t guaranteed.
Problem Set
1.
A
syntax error is an error in the typing of the code or statement, and a semantic
error is a logic error.
scanf(%d,&a); >> syntax error because in %d it should be start
and end with “
char asd[50]; char asd2[25]; printf(“%d”,asd); >> logic error
because it is a string data type but it print out with integer data type
3.
<assign> →
<id> = <expr>
<id> → A | B
| C
<expr> →
<expr> + <term>
|
<term>
<term> →
<term> * <factor>
| <factor>
<factor> → (
<expr> )
| <id>
13. S->ab | aSb
b->bb
15.
<program>
-> begin <stmt_list> end
<stmt_list> -> <stmt>
| <stmt> ; <stmt_list>
<stmt> -> <var> = <expression>
<var> -> A | B | C
<expression> -> <var> {(+|-) <var>}
16.
<expression> -> <var> {(+|-) <var>}
<assign> -> <id> = <expr>
<id> -> A | B | C
<expr> -> <expr> {(+|*) <expr>}
| <id>
18. Fully attributed parse tree is a condition of a parse tree
when all the attribute values in it have been computed.
23.
a.
a = 2 * ( b – 1 ) – 1 { a > 0 }
a = 2b – 2 – 1 { a > 0 }
a = 2b – 3 { a > 0 }
2b – 3 > 0
2b > 3
b > 3/2
b.
b = ( c + 10 ) / 3 { b > 6 }
b = c / 3 + 10 / 3 { b > 6 }
c / 3 + 10 / 3 > 6
c + 10 > 18
c > 8
c.
a = a + 2 * b ? 1 { a > 1 }
a = a + 2b – 1 { a > 1 }
a + 2b – 1 > 1
2b > 2 – a
b > 1 – a/2
d.
x = 2 * y + x ? 1 { x > 11 }
x = 2y + x – 1 { x > 11 }
2y + x – 1 > 11
2y > 12 – x
y > 6 – x/2
24.
a.
a = 2*b+1;
b = a – 3
{ b < 0 }
a – 3 < 0
a < 3
a = 2 * b + 1 { a < 3 }
2b + 1 < 3
2b < 2
b < 1
b.
a = 3*( 2*b+a );
b = 2*a – 1
{ b > 5 }
2a – 1 > 5
2a > 6
a > 3
a = 3 * ( 2 * b + a) { a > 3 }
3 * ( 2b + a ) > 3
2b + a > 1
2b > 1 – a
B > ( 1 – a ) / 2
Tidak ada komentar:
Posting Komentar