# grammar grammar ## terminals ANY =| !'' ; SPACE =| ' '; TAB =| '\t'; RETURN =| '\r'; NEWLINE =| '\n'; SEMICOLON =| ';'; HASH =| '#'; EQUAL =| '='; PIPE =| '|'; EXCLAMATION =| '!'; QUESTION =| '?'; PLUS =| '+'; STAR =| '*'; APOSTROPHE =| '\''; BACKSLASH =| '\\'; DOT =| '.'; ## rules start =| _. rule* ; _ =| whitespace* ; whitespace = | ' \t\r\n' | comment. ; comment =| HASH. commented* NEWLINE. ; commented =| !'\n' ; rule =| id. EQUAL. option* SEMICOLON. ; id =| alpha. alphanum* ; alpha = | '_' | 'abcdefghijklmnopqrstuvwxyz' | 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' ; alphanum = | alpha. | numeric. ; numeric =| '0123456789' ; option =| PIPE. expr* ; expr = # XXX #| id # the sequential issue is here | id. DOT. # add suffix, resolve sequential issue | id. QUESTION. | id. PLUS. | id. STAR. | term. | byte. ; term =| EXCLAMATION? APOSTROPHE. escaped* APOSTROPHE. ; escaped = # not BACKSLASH, not APOSTROPHE | !'\\\'' | BACKSLASH. !'' ; byte =| '0' 'x' hex. hex. ; hex = | numeric. | 'abcdef' | 'ABCDEF' ; del =| 0x7f ; omega =| 0x7f 0x8f ; simple =| 'a' 'b' ;