()
| 3827 | // 12 Statements |
| 3828 | |
| 3829 | function parseStatement() { |
| 3830 | var type = lookahead.type, |
| 3831 | expr, |
| 3832 | labeledBody, |
| 3833 | key, |
| 3834 | node; |
| 3835 | |
| 3836 | if (type === Token.EOF) { |
| 3837 | throwUnexpectedToken(lookahead); |
| 3838 | } |
| 3839 | |
| 3840 | if (type === Token.Punctuator && lookahead.value === '{') { |
| 3841 | return parseBlock(); |
| 3842 | } |
| 3843 | |
| 3844 | node = new Node(); |
| 3845 | |
| 3846 | if (type === Token.Punctuator) { |
| 3847 | switch (lookahead.value) { |
| 3848 | case ';': |
| 3849 | return parseEmptyStatement(node); |
| 3850 | case '(': |
| 3851 | return parseExpressionStatement(node); |
| 3852 | default: |
| 3853 | break; |
| 3854 | } |
| 3855 | } else if (type === Token.Keyword) { |
| 3856 | switch (lookahead.value) { |
| 3857 | case 'break': |
| 3858 | return parseBreakStatement(node); |
| 3859 | case 'continue': |
| 3860 | return parseContinueStatement(node); |
| 3861 | case 'debugger': |
| 3862 | return parseDebuggerStatement(node); |
| 3863 | case 'do': |
| 3864 | return parseDoWhileStatement(node); |
| 3865 | case 'for': |
| 3866 | return parseForStatement(node); |
| 3867 | case 'function': |
| 3868 | return parseFunctionDeclaration(node); |
| 3869 | case 'if': |
| 3870 | return parseIfStatement(node); |
| 3871 | case 'return': |
| 3872 | return parseReturnStatement(node); |
| 3873 | case 'switch': |
| 3874 | return parseSwitchStatement(node); |
| 3875 | case 'throw': |
| 3876 | return parseThrowStatement(node); |
| 3877 | case 'try': |
| 3878 | return parseTryStatement(node); |
| 3879 | case 'var': |
| 3880 | return parseVariableStatement(node); |
| 3881 | case 'while': |
| 3882 | return parseWhileStatement(node); |
| 3883 | case 'with': |
| 3884 | return parseWithStatement(node); |
| 3885 | default: |
| 3886 | break; |
no test coverage detected