| 825 | } |
| 826 | |
| 827 | public JObject singleObject() throws ParseException { |
| 828 | Token p = scanner.nextToken(); |
| 829 | switch (p.type) { |
| 830 | case LEFT_BRACKET: |
| 831 | return array(); |
| 832 | case LEFT_CURLY: |
| 833 | return map(); |
| 834 | case FALSE: |
| 835 | return new JBoolean(false); |
| 836 | case TRUE: |
| 837 | return new JBoolean(true); |
| 838 | case NULL: |
| 839 | return new JNull(); |
| 840 | case STRING: |
| 841 | return new JString((String) p.literal); |
| 842 | case NUMBER: |
| 843 | return new JNumber(nFormat.parse(p.lexeme)); |
| 844 | case EOF: |
| 845 | return null; |
| 846 | default: |
| 847 | throw error(p, "Unexpected token"); |
| 848 | } |
| 849 | } |
| 850 | |
| 851 | private JMap map() throws ParseException { |
| 852 | JMap ret = new JMap(); |