[tokens] AND and OR or NOT not LPAREN \( RPAREN \) WS \s+ EQUALS = %{ cout << "Saw '='" << endl; %} IDENTIFIER [a-zA-Z_][a-zA-Z_0-9]* %{ cout << "Identify: '" << matches[0] << "'" << endl; %} DEC_INT [1-9]\d*\b ${ uint64_t value; $} %{ sscanf(matches[0].c_str(), "%lld", &value); cout << "value: " << value << endl; %} HEX_INT 0x([0-9a-fA-F]+)\b ${ uint64_t value; $} %{ sscanf(matches[1].c_str(), "%llx", &value); cout << "value: " << value << endl; %} OCT_INT 0([0-7]*)\b BIN_INT 0b([01]+)\b [rules] Assignment := IDENTIFIER ASSIGN Expression Expression := IDENTIFIER \ | Assignment