36 lines
		
	
	
		
			603 B
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			603 B
		
	
	
	
		
			Plaintext
		
	
	
	
| grammar t014parser;
 | |
| options {
 | |
|   language = Python3;
 | |
| }
 | |
| 
 | |
| @parser::init {
 | |
| self.events = []
 | |
| self.reportedErrors = []
 | |
| }
 | |
| 
 | |
| @parser::members {
 | |
| def emitErrorMessage(self, msg):
 | |
|     self.reportedErrors.append(msg)
 | |
| }
 | |
|         
 | |
| 
 | |
| document:
 | |
|         ( declaration
 | |
|         | call
 | |
|         )*
 | |
|         EOF
 | |
|     ;
 | |
| 
 | |
| declaration:
 | |
|         'var' t=IDENTIFIER ';'
 | |
|         {self.events.append(('decl', $t.text))}
 | |
|     ;
 | |
| 
 | |
| call:
 | |
|         t=IDENTIFIER '(' ')' ';'
 | |
|         {self.events.append(('call', $t.text))}
 | |
|     ;
 | |
| 
 | |
| IDENTIFIER: ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'0'..'9'|'_')*;
 | |
| WS:  (' '|'\r'|'\t'|'\n') {$channel=HIDDEN;};
 |