lemon/lgf_reader.h
changeset 200 c0e2c043c060
parent 192 7bf5f97d574f
child 201 9757e3d9bfeb
equal deleted inserted replaced
19:a44ec635a2db 20:70f34495c5fb
   193 	}
   193 	}
   194 	return _graph.direct(it->second, str[0] == '+');
   194 	return _graph.direct(it->second, str[0] == '+');
   195       }
   195       }
   196     };
   196     };
   197 
   197 
   198     bool isWhiteSpace(char c) {
   198     inline bool isWhiteSpace(char c) {
   199       return c == ' ' || c == '\t' || c == '\v' || 
   199       return c == ' ' || c == '\t' || c == '\v' || 
   200         c == '\n' || c == '\r' || c == '\f'; 
   200         c == '\n' || c == '\r' || c == '\f'; 
   201     }
   201     }
   202     
   202     
   203     bool isOct(char c) {
   203     inline bool isOct(char c) {
   204       return '0' <= c && c <='7'; 
   204       return '0' <= c && c <='7'; 
   205     }
   205     }
   206     
   206     
   207     int valueOct(char c) {
   207     inline int valueOct(char c) {
   208       LEMON_ASSERT(isOct(c), "The character is not octal.");
   208       LEMON_ASSERT(isOct(c), "The character is not octal.");
   209       return c - '0';
   209       return c - '0';
   210     }
   210     }
   211 
   211 
   212     bool isHex(char c) {
   212     inline bool isHex(char c) {
   213       return ('0' <= c && c <= '9') || 
   213       return ('0' <= c && c <= '9') || 
   214 	('a' <= c && c <= 'z') || 
   214 	('a' <= c && c <= 'z') || 
   215 	('A' <= c && c <= 'Z'); 
   215 	('A' <= c && c <= 'Z'); 
   216     }
   216     }
   217     
   217     
   218     int valueHex(char c) {
   218     inline int valueHex(char c) {
   219       LEMON_ASSERT(isHex(c), "The character is not hexadecimal.");
   219       LEMON_ASSERT(isHex(c), "The character is not hexadecimal.");
   220       if ('0' <= c && c <= '9') return c - '0';
   220       if ('0' <= c && c <= '9') return c - '0';
   221       if ('a' <= c && c <= 'z') return c - 'a' + 10;
   221       if ('a' <= c && c <= 'z') return c - 'a' + 10;
   222       return c - 'A' + 10;
   222       return c - 'A' + 10;
   223     }
   223     }
   224 
   224 
   225     bool isIdentifierFirstChar(char c) {
   225     inline bool isIdentifierFirstChar(char c) {
   226       return ('a' <= c && c <= 'z') ||
   226       return ('a' <= c && c <= 'z') ||
   227 	('A' <= c && c <= 'Z') || c == '_';
   227 	('A' <= c && c <= 'Z') || c == '_';
   228     }
   228     }
   229 
   229 
   230     bool isIdentifierChar(char c) {
   230     inline bool isIdentifierChar(char c) {
   231       return isIdentifierFirstChar(c) ||
   231       return isIdentifierFirstChar(c) ||
   232 	('0' <= c && c <= '9');
   232 	('0' <= c && c <= '9');
   233     }
   233     }
   234 
   234 
   235     char readEscape(std::istream& is) {
   235     inline char readEscape(std::istream& is) {
   236       char c;
   236       char c;
   237       if (!is.get(c))
   237       if (!is.get(c))
   238 	throw DataFormatError("Escape format error");
   238 	throw DataFormatError("Escape format error");
   239 
   239 
   240       switch (c) {
   240       switch (c) {
   282 	  return code;
   282 	  return code;
   283 	}	      
   283 	}	      
   284       } 
   284       } 
   285     }
   285     }
   286     
   286     
   287     std::istream& readToken(std::istream& is, std::string& str) {
   287     inline std::istream& readToken(std::istream& is, std::string& str) {
   288       std::ostringstream os;
   288       std::ostringstream os;
   289 
   289 
   290       char c;
   290       char c;
   291       is >> std::ws;
   291       is >> std::ws;
   292       
   292