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}