2023-08-20 12:13:40 +08:00
|
|
|
parser grammar CKEnumsParser;
|
2026-01-28 16:35:42 +08:00
|
|
|
options { tokenVocab = CKGenericLexer; }
|
2023-08-17 15:48:30 +08:00
|
|
|
|
2023-08-19 00:03:00 +08:00
|
|
|
prog: enumBody* ;
|
2023-08-17 15:48:30 +08:00
|
|
|
|
2026-01-28 16:35:42 +08:00
|
|
|
enumBody: CKGENERIC_TYPEDEF? CKGENERIC_ENUM CKGENERIC_ID CKGENERIC_LBRACKET
|
2023-08-18 15:55:31 +08:00
|
|
|
entryPair+
|
2026-01-28 16:35:42 +08:00
|
|
|
CKGENERIC_RBRACKET CKGENERIC_ID? CKGENERIC_SEMICOLON ;
|
2023-08-17 15:48:30 +08:00
|
|
|
|
2026-01-28 16:35:42 +08:00
|
|
|
entryPair: CKGENERIC_ID (CKGENERIC_EQUAL entryValue)? CKGENERIC_COMMA? ;
|
2023-08-17 15:48:30 +08:00
|
|
|
|
2026-01-28 16:35:42 +08:00
|
|
|
entryValue: CKGENERIC_NUM (CKGENERIC_LSHIFT CKGENERIC_NUM)? # entryDirectValue
|
|
|
|
|
| CKGENERIC_ID (CKGENERIC_OR CKGENERIC_ID)* # entryRelativeValue
|
2023-08-17 15:48:30 +08:00
|
|
|
;
|