Lines Matching refs:expr
20 assignment : lvalue assign_op expr
22 condition : "if" "(" expr ")" block [ "else" ( condition | block ) ]
26 array_access : IDENTIFIER "[" expr "]"
30 | "(" expr ")" -> par_expr
32 array : "[" [ expr ( "," expr? )* ] "]"
33 expr_list : expr ( "," expr )*
39 ?expr : expr1
171 def _Expr(self, expr):
173 if isinstance(expr, lark.Token):
174 if expr.type == 'IDENTIFIER':
175 return self.builder.BuildIdentifier(str(expr))
176 elif expr.type == 'INTEGER':
177 return self.builder.BuildInteger(str(expr))
179 return self.builder.BuildString(str(expr))
180 if expr.data == 'par_expr':
182 self._Expr(*expr.children))
183 if expr.data not in OPS:
185 f'The operator "{expr.data}" is not supported')
186 if len(expr.children) == 1:
187 return self._UnaryExpr(expr.data, *expr.children)
188 if len(expr.children) == 2:
189 return self._BinaryExpr(expr.data, *expr.children)
190 raise UnsupportedOperation(f'Unsupported arity {len(expr.children)}')