github.com/chenzhuoyu/iasm@v0.9.1/expr/utils.go (about)

     1  package expr
     2  
     3  var op1ch = [...]bool {
     4      '+': true,
     5      '-': true,
     6      '*': true,
     7      '/': true,
     8      '%': true,
     9      '&': true,
    10      '|': true,
    11      '^': true,
    12      '~': true,
    13      '(': true,
    14      ')': true,
    15  }
    16  
    17  var op2ch = [...]bool {
    18      '*': true,
    19      '<': true,
    20      '>': true,
    21  }
    22  
    23  func neg2(v *Expr, err error) (*Expr, error) {
    24      if err != nil {
    25          return nil, err
    26      } else {
    27          return v.Neg(), nil
    28      }
    29  }
    30  
    31  func not2(v *Expr, err error) (*Expr, error) {
    32      if err != nil {
    33          return nil, err
    34      } else {
    35          return v.Not(), nil
    36      }
    37  }
    38  
    39  func isop1ch(ch rune) bool {
    40      return ch >= 0 && int(ch) < len(op1ch) && op1ch[ch]
    41  }
    42  
    43  func isop2ch(ch rune) bool {
    44      return ch >= 0 && int(ch) < len(op2ch) && op2ch[ch]
    45  }
    46  
    47  func isdigit(ch rune) bool {
    48      return ch >= '0' && ch <= '9'
    49  }
    50  
    51  func isident(ch rune) bool {
    52      return isdigit(ch) || isident0(ch)
    53  }
    54  
    55  func isident0(ch rune) bool {
    56      return (ch == '_') || (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z')
    57  }
    58  
    59  func ishexdigit(ch rune) bool {
    60      return isdigit(ch) || (ch >= 'a' && ch <= 'f') || (ch >= 'A' && ch <= 'F')
    61  }