(define operator-name-alist '(("+=" . add_assign) ("-=" . sub_assign) (">>=" . rshift_assign) ("<<=" . lshift_assign) ("*=" . mul_assign) ("/=" . div_assign) ("%=" . mod_assign) ("%" . mod) ("&=" . bitwise_and_assign) ("|=" . bitwise-or_assign) ("^=" . bitwise-xor_assign) ("+" . add) ("-" . sub) ("/" . div) (star . star) (">=" . greater_equal) ("<=" . less_equal) ("==" . equal) ("<<" . lshift) (">>" . rshift) ("&&" . logical_and) ("||" . logical_or) ("&" . address_of) ("|" . bitwise_ior) (">" . greater) ("<" . less) ("^" . bitwise_xor) ("~" . one_complement) ("?" . conditional) ("::" . scope_resolution) (":" . colon) ("=" . assign) ("!=" . not_equal) ("!" . logical_not))) (define (is-operator-name? thing) (assoc thing operator-name-alist)) (define (operator->c-method-name op) (cond ((assoc op operator-name-alist) => cdr) (else (error "Don't know this operator" op))))