()
| 1128 | } |
| 1129 | |
| 1130 | function peg$parseidentifier() { |
| 1131 | var s0, s1, s2; |
| 1132 | |
| 1133 | var key = peg$currPos * 32 + 11, |
| 1134 | cached = peg$resultsCache[key]; |
| 1135 | |
| 1136 | if (cached) { |
| 1137 | peg$currPos = cached.nextPos; |
| 1138 | |
| 1139 | return cached.result; |
| 1140 | } |
| 1141 | |
| 1142 | s0 = peg$currPos; |
| 1143 | if (input.charCodeAt(peg$currPos) === 35) { |
| 1144 | s1 = peg$c28; |
| 1145 | peg$currPos++; |
| 1146 | } else { |
| 1147 | s1 = peg$FAILED; |
| 1148 | if (peg$silentFails === 0) { peg$fail(peg$c29); } |
| 1149 | } |
| 1150 | if (s1 === peg$FAILED) { |
| 1151 | s1 = null; |
| 1152 | } |
| 1153 | if (s1 !== peg$FAILED) { |
| 1154 | s2 = peg$parseidentifierName(); |
| 1155 | if (s2 !== peg$FAILED) { |
| 1156 | peg$savedPos = s0; |
| 1157 | s1 = peg$c30(s2); |
| 1158 | s0 = s1; |
| 1159 | } else { |
| 1160 | peg$currPos = s0; |
| 1161 | s0 = peg$FAILED; |
| 1162 | } |
| 1163 | } else { |
| 1164 | peg$currPos = s0; |
| 1165 | s0 = peg$FAILED; |
| 1166 | } |
| 1167 | |
| 1168 | peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 }; |
| 1169 | |
| 1170 | return s0; |
| 1171 | } |
| 1172 | |
| 1173 | function peg$parseattr() { |
| 1174 | var s0, s1, s2, s3, s4, s5; |
no test coverage detected