Vinjett 1, Period 1
Syntax versus Semantik
• en mening är en substantivfras följd av ett verb
• en substantivfras är en bestämd-artikel följd av flera-adjektiv följd av ett substantiv
• flera-adjektiv är ett adjektiv eller ett adjektiv följd av flera-adjektiv
• en bestämd-artikel är ordet ‘en’
• ett adjektiv är ordet ‘glad’ eller ordet ‘ledsen’ eller ordet ‘stor’ eller ordet ‘liten’
• ett substantiv är ordet ‘pojke’ eller ordet ‘flicka’ eller ordet ‘bil’ eller ordet ‘lampa’
• ett verb är ordet ‘sjunger’ eller ordet ‘springer’ eller ordet ‘åker’ eller order ‘passerar’
springer en sjunger
en stor stor
en liten hund springer
en ledsen bil springer
en glad lampa åker
en liten bil sjunger
en glad liten flicka åker
en stor pojke sjunger
en stor bil passerar
• statements ::= statement |
statement
• statement ::= declare-statement |
• declare-statement ::= ‘int’
• if-statement ::= ‘if’
’(’
if-statement |
identifer
predicate
statements
assign-statement
‘;’
’)’
‘{’ statements ‘}’
• assign-statement ::= identifier ‘=’ expression ‘;’
• identifier ::= ‘x’ | ‘y’ | ‘z’
• number ::= ‘0’ | ‘1’ | ‘2’ | ‘3’ | ‘4’ | ‘5’ | ‘6’ | ‘7’ | ‘8’ | ‘9’
• predicate ::= expression ‘==’ expression |
• expression ::= identifier |
1
2
3
4
5
int x ;
x = 1
if ( x = 2){
x = 1;
}
1
2
3
4
5
int x ;
x = 5;
if ( x != 0){
x = 1 / ;
}
number |
expression ‘!=’ expression
expression ‘/’ expression
1
2
3
4
if ( x == 2){
int x ;
x = 1;
}
1
2
3
4
5
int x ;
x = 5;
if ( x != 2){
x = 1 / x;
}
1
2
3
4
5
int x ;
x = 1;
if ( x == 2){
x = 1;
}
1
2
3
4
5
int x ;
x = 5;
if ( x != 0){
x = 1 / x;
}