mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			85 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			85 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
 | |
| /* description: ClassyLang grammar. Very classy. */
 | |
| /*
 | |
|   To build parser:
 | |
| 
 | |
|     $ ./bin/jison examples/classy.jison examples/classy.jisonlex
 | |
| 
 | |
| */
 | |
| 
 | |
| 
 | |
| /* author: Zach Carter */
 | |
| 
 | |
| %right ASSIGN
 | |
| %left OR
 | |
| %nonassoc EQUALITY GREATER
 | |
| %left PLUS MINUS
 | |
| %left TIMES
 | |
| %right NOT
 | |
| %left DOT
 | |
| 
 | |
| %%
 | |
| 
 | |
| pgm
 | |
|     : cdl MAIN LBRACE vdl el RBRACE ENDOFFILE
 | |
|     ;
 | |
| 
 | |
| cdl
 | |
|     : c cdl
 | |
|     |
 | |
|     ;
 | |
| 
 | |
| c
 | |
|     : CLASS id EXTENDS id LBRACE vdl mdl RBRACE
 | |
|     ;
 | |
| 
 | |
| vdl
 | |
|     : VAR t id SEMICOLON vdl
 | |
|     |
 | |
|     ;
 | |
| 
 | |
| mdl
 | |
|     : t id LPAREN t id RPAREN LBRACE vdl el RBRACE mdl
 | |
|     |
 | |
|     ;
 | |
| 
 | |
| t
 | |
|     : NATTYPE
 | |
|     | id
 | |
|     ;
 | |
| 
 | |
| id
 | |
|     : ID
 | |
|     ;
 | |
| 
 | |
| el
 | |
|     : e SEMICOLON el
 | |
|     | e SEMICOLON
 | |
|     ;
 | |
| 
 | |
| e
 | |
|     : NATLITERAL
 | |
|     | NUL
 | |
|     | id
 | |
|     | NEW id
 | |
|     | THIS
 | |
|     | IF LPAREN e RPAREN LBRACE el RBRACE ELSE LBRACE el RBRACE
 | |
|     | FOR LPAREN e SEMICOLON e SEMICOLON e RPAREN LBRACE el RBRACE
 | |
|     | READNAT LPAREN RPAREN
 | |
|     | PRINTNAT LPAREN e RPAREN
 | |
|     | e PLUS e
 | |
|     | e MINUS e
 | |
|     | e TIMES e
 | |
|     | e EQUALITY e
 | |
|     | e GREATER e
 | |
|     | NOT e
 | |
|     | e OR e
 | |
|     | e DOT id
 | |
|     | id ASSIGN e
 | |
|     | e DOT id ASSIGN e
 | |
|     | id LPAREN e RPAREN
 | |
|     | e DOT id LPAREN e RPAREN
 | |
|     | LPAREN e RPAREN
 | |
|     ;
 | |
| 
 |