start : exp EOF
exp: INT | ID | '(' exp ')' ;
INT : '0' | ('1'..'9') ('0'..'9')* ;
ID : ( 'a'..'z' | 'A'..'Z' | '_' | '$' ) ( 'a'..'z' | 'A'..'Z' | '_' | '0'..'9' | '$' )* ;
start : exp EOF
exp: INT | ID | '(' exp ')' ;
INT : '0' | ('1'..'9') ('0'..'9')* ;
ID : ( 'a'..'z' | 'A'..'Z' | '_' | '$' ) ( 'a'..'z' | 'A'..'Z' | '_' | '0'..'9' | '$' )* ;
start : exp EOF
exp: INT | ID | exp '+' exp | '(' exp ')' ;
INT : '0' | ('1'..'9') ('0'..'9')* ;
ID : ( 'a'..'z' | 'A'..'Z' | '_' | '$' ) ( 'a'..'z' | 'A'..'Z' | '_' | '0'..'9' | '$' )* ;
start : exp EOF
exp: INT | ID | exp '+' exp | '(' exp ')' ;
// Language G
start : exp EOF
exp: INT | ID | exp '+' exp | '(' exp ')' ;
INT '+' ID EOF
INT '+' ID ID EOF
// Language G
start : exp EOF
exp: INT | ID | exp '+' exp | '(' exp ')' ;
INT '+' ID EOF
start
exp EOF
exp '+' exp EOF
INT '+' exp EOF
INT '+' ID EOF
// Language G
start : exp EOF
exp: INT | ID | exp '+' exp | '(' exp ')' ;
INT '+' ID ID EOF
start
INT '+' ID ID EOF
Assume CFG
CFG
↓
|-------------|
| Parser |
| Synthesizer |
|-------------|
|
synthesizes
↓
|--------|
program → | Parser | → ok / error
|--------|
Theory: For any context-free grammar
Input
□□□□□□□□
↓
|---------| Stack
| Control | ⇔ |__|
| Unit | |__|
|---------| |__|