aboutsummaryrefslogtreecommitdiff
path: root/demos/sample-files/lbp.g
blob: bc82cb32c1be4a9043cf33d175a329cbece9c299 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
-terminal NUM IDEN ATOM
          COMMA SEMICOL DOT COLON
          RPAREN LPAREN RBRACE LBRACE

          TYPELIST_START TYPELIST_END
          T_INT T_ENUM T_STRUCT
          ST_FUNCTION ST_BIG ST_LITTLE ST_NATIVE;

-nonterminal S exprlist expr sym fieldlist basetype subtypelist.

-left LPAREN;
-left COMMA SEMICOL.

S: exprlist DOT {};

exprlist: expr {}
        | exprlist expr {}
        | exprlist COMMA exprlist {}
        | exprlist SEMICOL exprlist {};

expr: NUM {}
    | sym {}
    | sym fieldlist {}
    | sym TYPELIST_START basetype TYPELIST_END {}
    | sym TYPELIST_START basetype subtypelist TYPELIST_END {}
    | LBRACE exprlist DOT RBRACE {}
    | LPAREN exprlist RPAREN {};

sym: IDEN {} | ATOM {};

fieldlist: COLON IDEN {}
         | fieldlist fieldlist {};

basetype: T_INT {}
        | T_STRUCT {} | T_STRUCT LPAREN ATOM RPAREN {}
        | T_ENUM   {} | T_ENUM LPAREN ATOM RPAREN {};
subtypelist: ST_FUNCTION LPAREN exprlist RPAREN {}
           | ST_BIG {} | ST_LITTLE {} | ST_NATIVE {}
           | subtypelist subtypelist {}.