(brief mandatory mention that this could readily be done with a regex and capture groups, but assuming you just want to use ANTLR)
I'm not sure where the idea of Lexer Rules and Symbols as separate things comes in, but it's likely part of your problem).
Your "Symbols" are lexer rules (anything capitalized is a lexer rule.
Lexer rules can be built up from lexer fragments, but you shouldn't reference one Lexer rule in another Lexer rule (a bit surprised this doesn't generate an error actually)
You're probably not getting the tokens you expect as a result. (try running grun with the -tokens option)
for example, you probably want to skip defining HEADER_TYPE_OPEN and HEADER_TYPE_CLOSE and just use the rule:
header_type : BRACKET_OPEN header_type_value BRACKET_CLOSE
not sure what else may be wrong, but that "jumps out"