/* C++ code produced by gperf version 3.0.3 */
/* Command-line: gperf -L C++ gen/double_charactor_operator.gperf  */
/* Computed positions: -k'1-2' */

#include <lexer.hpp>

/* maximum key range = 201, duplicates = 0 */

inline unsigned int DoubleCharactorOperatorMap::hash(register const char *str)
{
	static unsigned char asso_values[] = {
		203, 203, 203, 203, 203, 203, 203, 203, 203, 203,
		203, 203, 203, 203, 203, 203, 203, 203, 203, 203,
		203, 203, 203, 203, 203, 203, 203, 203, 203, 203,
		203, 203, 203,  72, 203, 203,   5,  20,  75,  69,
		125,  87,   2,  62,  64,  65,  32, 120,  59,  25,
		47,  37,  54,  49,  44,  39,  34,  24, 110,  19,
		50,  22,  12,  14,  10,   0,  35,   9,   4, 203,
		203, 203, 203, 203, 203, 203, 203, 203, 203, 203,
		203, 203, 203, 203, 203, 203, 203, 203, 203, 203,
		203, 203, 203, 203,   4, 127, 122, 112,  97, 203,
		92, 203, 203, 203, 203, 203, 203, 203, 203, 203,
		203, 203, 203, 203, 203, 203, 203, 203, 203, 203,
        0, 203, 203, 203,  82, 203,  60, 100,   5, 203,
		90, 203, 203, 203, 203, 203, 203, 203, 203, 203,
		203, 203, 203, 203, 203, 203, 203, 203, 203, 203,
		203, 203, 203, 203, 203, 203, 203, 203, 203, 203,
		203, 203, 203, 203, 203, 203, 203, 203, 203, 203,
		203, 203, 203, 203, 203, 203, 203, 203, 203, 203,
		203, 203, 203, 203, 203, 203, 203, 203, 203, 203,
		203, 203, 203, 203, 203, 203, 203, 203, 203, 203,
		203, 203, 203, 203, 203, 203, 203, 203, 203, 203,
		203, 203, 203, 203, 203, 203, 203, 203, 203, 203,
		203, 203, 203, 203, 203, 203, 203, 203, 203, 203,
		203, 203, 203, 203, 203, 203, 203, 203, 203, 203,
		203, 203, 203, 203, 203, 203, 203, 203, 203, 203,
		203, 203, 203, 203, 203, 203, 203, 203, 203, 203
    };
	return asso_values[(unsigned char)str[1]+4] + asso_values[(unsigned char)str[0]];
}

const char *DoubleCharactorOperatorMap::in_word_set(register const char *str)
{
	static const char *double_charactor_operators[] = {
		"x=",
		"",
		"*=",
		"",
		"^=",
		"$=",
		"",
		"$&",
		"",
		"$@",
		"$|",
		"",
		">=",
		"",
		"$?",
		"$<",
		"",
		"$:",
		"",
		"$;",
		"%=",
		"",
		"==",
		"",
		"$7",
		"$!",
		"",
		"$9",
		"",
		"$5",
		"$-",
		"",
		".=",
		"",
		"**",
		"@-",
		"",
		"$*",
		"",
		"$4",
		"$>",
		"",
		"$/",
		"",
		"$3",
		"%-",
		"",
		">>",
		"",
		"$2",
		"<=",
		"",
		"$.",
		"",
		"$1",
		"$8",
		"",
		"=>",
		"",
		"$0",
		"<<",
		"",
		"+=",
		"",
		"$,",
		"-=",
		"",
		"$'",
		"",
		"$(",
		"$)",
		"",
		"!=",
		"",
		"$#",
		"&=",
		"",
		"&&",
		"",
		"..",
		"$\"",
		"",
		"|=",
		"", "",
		"<>",
		"",
		"||",
		"", "",
		"--",
		"",
		"$%",
		"", "",
		"$~",
		"",
		"$`",
		"", "",
		"->",
		"",
		"$^",
		"", "",
		"${",
		"",
		"%%",
		"", "",
		"@{",
		"",
		"=~",
		"", "",
		"$6",
		"",
		"$]",
		"", "",
		"%{",
		"",
		"::",
		"", "",
		"$+",
		"",
		"$\\",
		"", "",
		"@+",
		"",
		"$[",
		"", "",
		"@$",
		"", "", "", "",
		"%+",
		"", "", "", "",
		"%$",
		"", "", "", "",
		"~~",
		"", "", "", "", "", "",
		"//",
		"", "", "", "",
		"!~",
		"", "", "", "", "", "", "", "", "",
		"", "", "",
		"&{",
		"", "", "", "", "", "",
		"++",
		"", "", "", "", "", "", "", "", "",
		"", "", "", "", "", "", "", "",
		"&$"
    };
	register int key = hash(str);
	if (key <= DOUBLE_OPERATOR_MAX_HASH_VALUE && key >= 0) {
		register const char *s = double_charactor_operators[key];
		if (*str == *s && !strcmp (str + 1, s + 1)) return s;
	}
	return 0;
}