1package js
2
3// AsIdentifierName returns true if a valid identifier name is given.
4func AsIdentifierName(b []byte) bool {
5 if len(b) == 0 || !identifierStartTable[b[0]] {
6 return false
7 }
8
9 i := 1
10 for i < len(b) {
11 if identifierTable[b[i]] {
12 i++
13 } else {
14 return false
15 }
16 }
17 return true
18}
19
20// AsDecimalLiteral returns true if a valid decimal literal is given.
21func AsDecimalLiteral(b []byte) bool {
22 if len(b) == 0 || (b[0] < '0' || '9' < b[0]) && (b[0] != '.' || len(b) == 1) {
23 return false
24 } else if b[0] == '0' {
25 return len(b) == 1
26 }
27 i := 1
28 for i < len(b) && '0' <= b[i] && b[i] <= '9' {
29 i++
30 }
31 if i < len(b) && b[i] == '.' && b[0] != '.' {
32 i++
33 for i < len(b) && '0' <= b[i] && b[i] <= '9' {
34 i++
35 }
36 }
37 return i == len(b)
38}