comparison ply-3.8/ply/ctokens.py @ 7267:343ff337a19b

<ais523> ` tar -xf ply-3.8.tar.gz
author HackBot
date Wed, 23 Mar 2016 02:40:16 +0000
parents
children
comparison
equal deleted inserted replaced
7266:61a39a120dee 7267:343ff337a19b
1 # ----------------------------------------------------------------------
2 # ctokens.py
3 #
4 # Token specifications for symbols in ANSI C and C++. This file is
5 # meant to be used as a library in other tokenizers.
6 # ----------------------------------------------------------------------
7
8 # Reserved words
9
10 tokens = [
11 # Literals (identifier, integer constant, float constant, string constant, char const)
12 'ID', 'TYPEID', 'INTEGER', 'FLOAT', 'STRING', 'CHARACTER',
13
14 # Operators (+,-,*,/,%,|,&,~,^,<<,>>, ||, &&, !, <, <=, >, >=, ==, !=)
15 'PLUS', 'MINUS', 'TIMES', 'DIVIDE', 'MODULO',
16 'OR', 'AND', 'NOT', 'XOR', 'LSHIFT', 'RSHIFT',
17 'LOR', 'LAND', 'LNOT',
18 'LT', 'LE', 'GT', 'GE', 'EQ', 'NE',
19
20 # Assignment (=, *=, /=, %=, +=, -=, <<=, >>=, &=, ^=, |=)
21 'EQUALS', 'TIMESEQUAL', 'DIVEQUAL', 'MODEQUAL', 'PLUSEQUAL', 'MINUSEQUAL',
22 'LSHIFTEQUAL','RSHIFTEQUAL', 'ANDEQUAL', 'XOREQUAL', 'OREQUAL',
23
24 # Increment/decrement (++,--)
25 'INCREMENT', 'DECREMENT',
26
27 # Structure dereference (->)
28 'ARROW',
29
30 # Ternary operator (?)
31 'TERNARY',
32
33 # Delimeters ( ) [ ] { } , . ; :
34 'LPAREN', 'RPAREN',
35 'LBRACKET', 'RBRACKET',
36 'LBRACE', 'RBRACE',
37 'COMMA', 'PERIOD', 'SEMI', 'COLON',
38
39 # Ellipsis (...)
40 'ELLIPSIS',
41 ]
42
43 # Operators
44 t_PLUS = r'\+'
45 t_MINUS = r'-'
46 t_TIMES = r'\*'
47 t_DIVIDE = r'/'
48 t_MODULO = r'%'
49 t_OR = r'\|'
50 t_AND = r'&'
51 t_NOT = r'~'
52 t_XOR = r'\^'
53 t_LSHIFT = r'<<'
54 t_RSHIFT = r'>>'
55 t_LOR = r'\|\|'
56 t_LAND = r'&&'
57 t_LNOT = r'!'
58 t_LT = r'<'
59 t_GT = r'>'
60 t_LE = r'<='
61 t_GE = r'>='
62 t_EQ = r'=='
63 t_NE = r'!='
64
65 # Assignment operators
66
67 t_EQUALS = r'='
68 t_TIMESEQUAL = r'\*='
69 t_DIVEQUAL = r'/='
70 t_MODEQUAL = r'%='
71 t_PLUSEQUAL = r'\+='
72 t_MINUSEQUAL = r'-='
73 t_LSHIFTEQUAL = r'<<='
74 t_RSHIFTEQUAL = r'>>='
75 t_ANDEQUAL = r'&='
76 t_OREQUAL = r'\|='
77 t_XOREQUAL = r'\^='
78
79 # Increment/decrement
80 t_INCREMENT = r'\+\+'
81 t_DECREMENT = r'--'
82
83 # ->
84 t_ARROW = r'->'
85
86 # ?
87 t_TERNARY = r'\?'
88
89 # Delimeters
90 t_LPAREN = r'\('
91 t_RPAREN = r'\)'
92 t_LBRACKET = r'\['
93 t_RBRACKET = r'\]'
94 t_LBRACE = r'\{'
95 t_RBRACE = r'\}'
96 t_COMMA = r','
97 t_PERIOD = r'\.'
98 t_SEMI = r';'
99 t_COLON = r':'
100 t_ELLIPSIS = r'\.\.\.'
101
102 # Identifiers
103 t_ID = r'[A-Za-z_][A-Za-z0-9_]*'
104
105 # Integer literal
106 t_INTEGER = r'\d+([uU]|[lL]|[uU][lL]|[lL][uU])?'
107
108 # Floating literal
109 t_FLOAT = r'((\d+)(\.\d+)(e(\+|-)?(\d+))? | (\d+)e(\+|-)?(\d+))([lL]|[fF])?'
110
111 # String literal
112 t_STRING = r'\"([^\\\n]|(\\.))*?\"'
113
114 # Character constant 'c' or L'c'
115 t_CHARACTER = r'(L)?\'([^\\\n]|(\\.))*?\''
116
117 # Comment (C-Style)
118 def t_COMMENT(t):
119 r'/\*(.|\n)*?\*/'
120 t.lexer.lineno += t.value.count('\n')
121 return t
122
123 # Comment (C++-Style)
124 def t_CPPCOMMENT(t):
125 r'//.*\n'
126 t.lexer.lineno += 1
127 return t
128
129
130
131
132
133