fix : function AntlrInput::tokenTextSubstr
authorFrançois Bobot <francois@bobot.eu>
Fri, 22 Jun 2012 15:11:16 +0000 (15:11 +0000)
committerFrançois Bobot <francois@bobot.eu>
Fri, 22 Jun 2012 15:11:16 +0000 (15:11 +0000)
src/parser/antlr_input.h

index 84b5099fb4c99e74d00def19bd823bbe54d09d10..10a4b907d145e088d2423b95471718e000d8fdf0 100644 (file)
@@ -244,7 +244,9 @@ inline std::string AntlrInput::tokenText(pANTLR3_COMMON_TOKEN token) {
 inline std::string AntlrInput::tokenTextSubstr(pANTLR3_COMMON_TOKEN token,
                                                size_t index,
                                                size_t n) {
+
   ANTLR3_MARKER start = token->getStartIndex(token);
+  // Its the last character of the token (not the one just after)
   ANTLR3_MARKER end = token->getStopIndex(token);
   Assert( start < end );
   if( index > (size_t) end - start ) {
@@ -253,7 +255,7 @@ inline std::string AntlrInput::tokenTextSubstr(pANTLR3_COMMON_TOKEN token,
     throw std::invalid_argument(ss.str());
   }
   start += index;
-  if( n==0 || n >= (size_t) end - start ) {
+  if( n==0 || n > (size_t) end - start ) {
     return std::string( (const char *)start, end-start+1 );
   } else {
     return std::string( (const char *)start, n );