()
| 952 | } |
| 953 | |
| 954 | public Expression newExpression() { |
| 955 | consume(NEW); |
| 956 | Expression expr = null; |
| 957 | if (la() == NEW) { |
| 958 | expr = factory.newOperator(newExpression()); |
| 959 | } else { |
| 960 | expr = memberExpression(); |
| 961 | if (la() == LEFT_PAREN) { |
| 962 | List<Expression> args = arguments(); |
| 963 | expr = factory.newOperator(expr, args); |
| 964 | } else { |
| 965 | expr = factory.newOperator(expr); |
| 966 | } |
| 967 | } |
| 968 | |
| 969 | loop: |
| 970 | while (true) { |
| 971 | switch (la()) { |
| 972 | case DOT: |
| 973 | consume(DOT); |
| 974 | String identifier = consume(IDENTIFIER).getText(); |
| 975 | expr = factory.dotOperator(expr, identifier); |
| 976 | break; |
| 977 | case LEFT_BRACKET: |
| 978 | consume(LEFT_BRACKET); |
| 979 | expr = factory.bracketOperator(expr, expression()); |
| 980 | consume(RIGHT_BRACKET); |
| 981 | break; |
| 982 | case LEFT_PAREN: |
| 983 | List<Expression> args = arguments(); |
| 984 | expr = factory.functionCall(expr, args); |
| 985 | break; |
| 986 | default: |
| 987 | break loop; |
| 988 | } |
| 989 | } |
| 990 | |
| 991 | return expr; |
| 992 | } |
| 993 | |
| 994 | public FunctionExpression functionExpression() { |
| 995 | try { |
no test coverage detected