Your VAL_STRING duplicates the TEXT_STRING token. Take it out of the alts for VAL_STRING and allow VAL_STRING and TEXT_STRING in your parser rule instead.
However, you are probably over complicating it - you don't need fragments for the quote marks. I would just do this:
DSTRING: '"' ('a'..'z' | 'A'..'Z' | '0'..'9')+ '"' ;
SSTRING: '\'' ('a'..'z' | 'A'..'Z' | '0'..'9')+ '\'';
TSTRING: ('a'..'z' | 'A'..'Z' | '0'..'9')+ ;
value: name=(DSTRING | TSTRING | SSTRING) EOF ;
Assuming that your value strings can only have that range of characters - but it would be better to allow all characters then versify the value semantically later down the line, otherwise your lexer will just complain about bad characters and it isn't easy for users to read such an error.
Also, you don't need to ignore whitespace?
JIm