libcmo21/CodeGen/CKEnumParser.g4

14 lines
493 B
Plaintext
Raw Normal View History

2023-08-17 15:48:30 +08:00
parser grammar CKEnumParser;
options { tokenVocab = CKGeneralLexer; }
prog: enumBody+ ;
enumBody: CKGENERAL_TYPEDEF? CKGENERAL_ENUM CKGENERAL_ID CKGENERAL_LBRACKET
entryPair (CKGENERAL_COMMA entryPair)*
CKGENERAL_RBRACKET CKGENERAL_ID? CKGENERAL_SEMICOLON ;
entryPair: CKGENERAL_ID (CKGENERAL_EQUAL entryValue)? ;
entryValue: CKGENERAL_NUM (CKGENERAL_LSHIFT CKGENERAL_NUM)* # entryDirectValue
| CKGENERAL_ID (CKGENERAL_OR CKGENERAL_ID)* # entryRelativeValue
;