...
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 }
62
View as plain text