Lichen

pyparser/pytoken.py

583:aed28d04304d
2017-02-13 Paul Boddie Re-added size information to string instances as the __size__ attribute. This fixes problems introduced when using strlen on data likely to contain embedded nulls, which was the reason for having size information explicitly stored in the first place. attr-strvalue-without-size
     1 """Python token definitions."""     2      3 python_tokens = {}     4 python_opmap = {}     5      6 def _add_tok(name, *values):     7     index = len(python_tokens)     8     assert index < 256     9     python_tokens[name] = index    10     for value in values:    11         python_opmap[value] = index    12     13 _add_tok('ENDMARKER')    14 _add_tok('NAME')    15 _add_tok('NUMBER')    16 _add_tok('STRING')    17 _add_tok('NEWLINE')    18 _add_tok('INDENT')    19 _add_tok('DEDENT')    20 _add_tok('LPAR', "(")    21 _add_tok('RPAR', ")")    22 _add_tok('LSQB', "[")    23 _add_tok('RSQB', "]")    24 _add_tok('COLON', ":")    25 _add_tok('COMMA',  "," )    26 _add_tok('SEMI', ";" )    27 _add_tok('PLUS', "+" )    28 _add_tok('MINUS', "-" )    29 _add_tok('STAR', "*" )    30 _add_tok('SLASH', "/" )    31 _add_tok('VBAR', "|" )    32 _add_tok('AMPER', "&" )    33 _add_tok('LESS', "<" )    34 _add_tok('GREATER', ">" )    35 _add_tok('EQUAL', "=" )    36 _add_tok('DOT', "." )    37 _add_tok('PERCENT', "%" )    38 _add_tok('BACKQUOTE', "`" )    39 _add_tok('LBRACE', "{" )    40 _add_tok('RBRACE', "}" )    41 _add_tok('EQEQUAL', "==" )    42 _add_tok('NOTEQUAL', "!=", "<>" )    43 _add_tok('LESSEQUAL', "<=" )    44 _add_tok('GREATEREQUAL', ">=" )    45 _add_tok('TILDE', "~" )    46 _add_tok('CIRCUMFLEX', "^" )    47 _add_tok('LEFTSHIFT', "<<" )    48 _add_tok('RIGHTSHIFT', ">>" )    49 _add_tok('DOUBLESTAR', "**" )    50 _add_tok('PLUSEQUAL', "+=" )    51 _add_tok('MINEQUAL', "-=" )    52 _add_tok('STAREQUAL', "*=" )    53 _add_tok('SLASHEQUAL', "/=" )    54 _add_tok('PERCENTEQUAL', "%=" )    55 _add_tok('AMPEREQUAL', "&=" )    56 _add_tok('VBAREQUAL', "|=" )    57 _add_tok('CIRCUMFLEXEQUAL', "^=" )    58 _add_tok('LEFTSHIFTEQUAL', "<<=" )    59 _add_tok('RIGHTSHIFTEQUAL', ">>=" )    60 _add_tok('DOUBLESTAREQUAL', "**=" )    61 _add_tok('DOUBLESLASH', "//" )    62 _add_tok('DOUBLESLASHEQUAL',"//=" )    63 _add_tok('AT', "@" )    64 _add_tok('OP')    65 _add_tok('ERRORTOKEN')    66     67 # extra PyPy-specific tokens    68 _add_tok("COMMENT")    69 _add_tok("NL")    70     71 del _add_tok