parser.py (9298:9a087e046c58) | parser.py (9692:67d9da312ef0) |
---|---|
1# Copyright (c) 2009 The Hewlett-Packard Development Company 2# All rights reserved. 3# 4# Redistribution and use in source and binary forms, with or without 5# modification, are permitted provided that the following conditions are 6# met: redistributions of source code must retain the above copyright 7# notice, this list of conditions and the following disclaimer; 8# redistributions in binary form must reproduce the above copyright --- 118 unchanged lines hidden (view full) --- 127 } 128 129 literals = ':[]{}(),=' 130 131 tokens = [ 'EQ', 'NE', 'LT', 'GT', 'LE', 'GE', 132 'LEFTSHIFT', 'RIGHTSHIFT', 133 'NOT', 'AND', 'OR', 134 'PLUS', 'DASH', 'STAR', 'SLASH', | 1# Copyright (c) 2009 The Hewlett-Packard Development Company 2# All rights reserved. 3# 4# Redistribution and use in source and binary forms, with or without 5# modification, are permitted provided that the following conditions are 6# met: redistributions of source code must retain the above copyright 7# notice, this list of conditions and the following disclaimer; 8# redistributions in binary form must reproduce the above copyright --- 118 unchanged lines hidden (view full) --- 127 } 128 129 literals = ':[]{}(),=' 130 131 tokens = [ 'EQ', 'NE', 'LT', 'GT', 'LE', 'GE', 132 'LEFTSHIFT', 'RIGHTSHIFT', 133 'NOT', 'AND', 'OR', 134 'PLUS', 'DASH', 'STAR', 'SLASH', |
135 'INCR', 'DECR', |
|
135 'DOUBLE_COLON', 'SEMI', 136 'ASSIGN', 'DOT', 137 'IDENT', 'LIT_BOOL', 'FLOATNUMBER', 'NUMBER', 'STRING' ] 138 tokens += reserved.values() 139 140 t_EQ = r'==' 141 t_NE = r'!=' 142 t_LT = r'<' --- 8 unchanged lines hidden (view full) --- 151 t_PLUS = r'\+' 152 t_DASH = r'-' 153 t_STAR = r'\*' 154 t_SLASH = r'/' 155 t_DOUBLE_COLON = r'::' 156 t_SEMI = r';' 157 t_ASSIGN = r':=' 158 t_DOT = r'\.' | 136 'DOUBLE_COLON', 'SEMI', 137 'ASSIGN', 'DOT', 138 'IDENT', 'LIT_BOOL', 'FLOATNUMBER', 'NUMBER', 'STRING' ] 139 tokens += reserved.values() 140 141 t_EQ = r'==' 142 t_NE = r'!=' 143 t_LT = r'<' --- 8 unchanged lines hidden (view full) --- 152 t_PLUS = r'\+' 153 t_DASH = r'-' 154 t_STAR = r'\*' 155 t_SLASH = r'/' 156 t_DOUBLE_COLON = r'::' 157 t_SEMI = r';' 158 t_ASSIGN = r':=' 159 t_DOT = r'\.' |
160 t_INCR = r'\+\+' 161 t_DECR = r'--' |
|
159 160 precedence = ( | 162 163 precedence = ( |
164 ('left', 'INCR', 'DECR'), |
|
161 ('left', 'AND', 'OR'), 162 ('left', 'EQ', 'NE'), 163 ('left', 'LT', 'GT', 'LE', 'GE'), 164 ('left', 'RIGHTSHIFT', 'LEFTSHIFT'), 165 ('left', 'PLUS', 'DASH'), 166 ('left', 'STAR', 'SLASH'), 167 ('right', 'NOT', 'UMINUS'), 168 ) --- 496 unchanged lines hidden (view full) --- 665 | expr OR expr 666 | expr RIGHTSHIFT expr 667 | expr LEFTSHIFT expr""" 668 p[0] = ast.InfixOperatorExprAST(self, p[1], p[2], p[3]) 669 670 # FIXME - unary not 671 def p_expr__unary_op(self, p): 672 """expr : NOT expr | 165 ('left', 'AND', 'OR'), 166 ('left', 'EQ', 'NE'), 167 ('left', 'LT', 'GT', 'LE', 'GE'), 168 ('left', 'RIGHTSHIFT', 'LEFTSHIFT'), 169 ('left', 'PLUS', 'DASH'), 170 ('left', 'STAR', 'SLASH'), 171 ('right', 'NOT', 'UMINUS'), 172 ) --- 496 unchanged lines hidden (view full) --- 669 | expr OR expr 670 | expr RIGHTSHIFT expr 671 | expr LEFTSHIFT expr""" 672 p[0] = ast.InfixOperatorExprAST(self, p[1], p[2], p[3]) 673 674 # FIXME - unary not 675 def p_expr__unary_op(self, p): 676 """expr : NOT expr |
677 | INCR expr 678 | DECR expr |
|
673 | DASH expr %prec UMINUS""" | 679 | DASH expr %prec UMINUS""" |
674 p[0] = PrefixOperatorExpr(p[1], p[2]) | 680 p[0] = ast.PrefixOperatorExprAST(self, p[1], p[2]) |
675 676 def p_expr__parens(self, p): 677 "aexpr : '(' expr ')'" 678 p[0] = p[2] 679 680 def p_expr__is_valid_ptr(self, p): 681 "aexpr : IS_VALID '(' var ')'" 682 p[0] = ast.IsValidPtrExprAST(self, p[3], True) --- 28 unchanged lines hidden --- | 681 682 def p_expr__parens(self, p): 683 "aexpr : '(' expr ')'" 684 p[0] = p[2] 685 686 def p_expr__is_valid_ptr(self, p): 687 "aexpr : IS_VALID '(' var ')'" 688 p[0] = ast.IsValidPtrExprAST(self, p[3], True) --- 28 unchanged lines hidden --- |