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
|
|
;
|
|
|