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 ---