/* These non-terminals are the actual tokens the lexer emits */ ::= + ::= [0-9]+ ::= "0x" + ? ::= "0b" [0-1]+ ? ::= "0o" [0-7]+ ? ::= "\"" + "\"" ::= "'" "'" ::= ":" ::= "," ::= "[" ::= "]" ::= "+" ::= "-" ::= "*" ::= "." ::= ";" * ::= "\r"? "\n" ::= ( " " | "\t" )+ /* helper non-terminals to make it easier to define the tokens */ ::= ":" ( "8" | "16" | "32" | "64" ) ::= [a-z] | [A-Z] | "_" ::= [a-z] | [A-Z] | [0-9] | "_" ::= [a-f] | [A-F] ::= | ::= | ::= "\\" ( | ) ::= "\\" | "n" | "r" | "t" | "0" | "\"" | "'" ::= "x" /* alternative definitions to support bnfplayground, use the ones below instead */ ::= | "'" | "\"" ::= | "'" ::= | "\"" ::= [a-z] | [A-Z] | [0-9] | " " | "+" | "-" | "#" | "\t" | "_" | "$" | "&" | "{" | "}" | "(" | ")" | "|" /* actual definition we're implementing */ /* ::= [^\r\n] */ /* ::= [^\\'] */ /* ::= [^\\"] */