MCPcopy Index your code
hub / github.com/reactjs/react-rails / parseBinaryExpression

Function parseBinaryExpression

lib/assets/javascripts/JSXTransformer.js:6151–6212  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

6149 // 11.11 Binary Logical Operators
6150
6151 function parseBinaryExpression() {
6152 var expr, token, prec, previousAllowIn, stack, right, operator, left, i,
6153 marker, markers;
6154
6155 previousAllowIn = state.allowIn;
6156 state.allowIn = true;
6157
6158 marker = markerCreate();
6159 left = parseUnaryExpression();
6160
6161 token = lookahead;
6162 prec = binaryPrecedence(token, previousAllowIn);
6163 if (prec === 0) {
6164 return left;
6165 }
6166 token.prec = prec;
6167 lex();
6168
6169 markers = [marker, markerCreate()];
6170 right = parseUnaryExpression();
6171
6172 stack = [left, token, right];
6173
6174 while ((prec = binaryPrecedence(lookahead, previousAllowIn)) > 0) {
6175
6176 // Reduce: make a binary expression from the three topmost entries.
6177 while ((stack.length > 2) && (prec <= stack[stack.length - 2].prec)) {
6178 right = stack.pop();
6179 operator = stack.pop().value;
6180 left = stack.pop();
6181 expr = delegate.createBinaryExpression(operator, left, right);
6182 markers.pop();
6183 marker = markers.pop();
6184 markerApply(marker, expr);
6185 stack.push(expr);
6186 markers.push(marker);
6187 }
6188
6189 // Shift.
6190 token = lex();
6191 token.prec = prec;
6192 stack.push(token);
6193 markers.push(markerCreate());
6194 expr = parseUnaryExpression();
6195 stack.push(expr);
6196 }
6197
6198 state.allowIn = previousAllowIn;
6199
6200 // Final reduce to clean-up the stack.
6201 i = stack.length - 1;
6202 expr = stack[i];
6203 markers.pop();
6204 while (i > 1) {
6205 expr = delegate.createBinaryExpression(stack[i - 1].value, stack[i - 2], expr);
6206 i -= 2;
6207 marker = markers.pop();
6208 markerApply(marker, expr);

Callers 1

Calls 5

markerCreateFunction · 0.85
parseUnaryExpressionFunction · 0.85
binaryPrecedenceFunction · 0.85
lexFunction · 0.85
markerApplyFunction · 0.85

Tested by

no test coverage detected