/** * Parses the expression given in the code string. * Names in the code string are resolved using the given namespace. * * @param code the code string, for the syntax of valid expressions refer * to the class description * @param namespace the environment which is used to resolve names * @throws ParseException if a parse error occurs */ public final Term parse(final String code, final Namespace namespace) throws ParseException { if (code == null) { throw new IllegalArgumentException("code is null"); } Namespace defaultNamespace = this.defaultNamespace; if (namespace != null && namespace != defaultNamespace) { this.defaultNamespace = new NamespaceImpl(namespace); } tokenizer = new Tokenizer(code); Term term = parseImpl(); tokenizer = null; this.defaultNamespace = defaultNamespace; return term; }
@Test public void testPlusFour() { final Tokenizer tokenizer = new Tokenizer("+4"); assertEquals('+', tokenizer.next()); assertEquals('+', tokenizer.getType()); assertEquals("+", tokenizer.getToken()); assertEquals(Tokenizer.TT_INT, tokenizer.next()); assertEquals(Tokenizer.TT_INT, tokenizer.getType()); assertEquals("4", tokenizer.getToken()); assertEquals(Tokenizer.TT_EOS, tokenizer.next()); }
@Test public void testMinusFour() { final Tokenizer tokenizer = new Tokenizer("-4"); assertEquals('-', tokenizer.next()); assertEquals('-', tokenizer.getType()); assertEquals("-", tokenizer.getToken()); assertEquals(Tokenizer.TT_INT, tokenizer.next()); assertEquals(Tokenizer.TT_INT, tokenizer.getType()); assertEquals("4", tokenizer.getToken()); assertEquals(Tokenizer.TT_EOS, tokenizer.next()); }
@Test public void testThreeMinusFour() { final Tokenizer tokenizer = new Tokenizer("3-4"); assertEquals(Tokenizer.TT_INT, tokenizer.next()); assertEquals(Tokenizer.TT_INT, tokenizer.getType()); assertEquals("3", tokenizer.getToken()); assertEquals('-', tokenizer.next()); assertEquals('-', tokenizer.getType()); assertEquals("-", tokenizer.getToken()); assertEquals(Tokenizer.TT_INT, tokenizer.next()); assertEquals(Tokenizer.TT_INT, tokenizer.getType()); assertEquals("4", tokenizer.getToken()); assertEquals(Tokenizer.TT_EOS, tokenizer.next()); }
@Test public void testThreePlusFour() { final Tokenizer tokenizer = new Tokenizer("3+4"); assertEquals(Tokenizer.TT_INT, tokenizer.next()); assertEquals(Tokenizer.TT_INT, tokenizer.getType()); assertEquals("3", tokenizer.getToken()); assertEquals('+', tokenizer.next()); assertEquals('+', tokenizer.getType()); assertEquals("+", tokenizer.getToken()); assertEquals(Tokenizer.TT_INT, tokenizer.next()); assertEquals(Tokenizer.TT_INT, tokenizer.getType()); assertEquals("4", tokenizer.getToken()); assertEquals(Tokenizer.TT_EOS, tokenizer.next()); }