mirror of
https://github.com/hneemann/Digital.git
synced 2025-09-16 16:34:47 -04:00
added constants zero and one to tokenizer and parser
This commit is contained in:
parent
a77ab80fa5
commit
9abddfdf97
@ -1,9 +1,6 @@
|
||||
package de.neemann.digital.analyse.parser;
|
||||
|
||||
import de.neemann.digital.analyse.expression.Expression;
|
||||
import de.neemann.digital.analyse.expression.Not;
|
||||
import de.neemann.digital.analyse.expression.Operation;
|
||||
import de.neemann.digital.analyse.expression.Variable;
|
||||
import de.neemann.digital.analyse.expression.*;
|
||||
import de.neemann.digital.lang.Lang;
|
||||
|
||||
import java.io.IOException;
|
||||
@ -82,6 +79,10 @@ public class Parser {
|
||||
return exp;
|
||||
case IDENT:
|
||||
return new Variable(tokenizer.getIdent());
|
||||
case ONE:
|
||||
return Constant.ONE;
|
||||
case ZERO:
|
||||
return Constant.ZERO;
|
||||
default:
|
||||
throw new ParseException(Lang.get("err_parserUnexpectedToken_N", tokenizer.toString()));
|
||||
}
|
||||
|
@ -11,7 +11,7 @@ import java.io.Reader;
|
||||
public class Tokenizer {
|
||||
|
||||
|
||||
enum Token {UNKNOWN, IDENT, AND, OR, NOT, OPEN, CLOSE, EOF}
|
||||
enum Token {UNKNOWN, IDENT, AND, OR, NOT, OPEN, CLOSE, ONE, ZERO, EOF}
|
||||
|
||||
private final Reader in;
|
||||
private Token token;
|
||||
@ -64,6 +64,12 @@ public class Tokenizer {
|
||||
case -1:
|
||||
token = Token.EOF;
|
||||
break;
|
||||
case '0':
|
||||
token = Token.ZERO;
|
||||
break;
|
||||
case '1':
|
||||
token = Token.ONE;
|
||||
break;
|
||||
case '(':
|
||||
token = Token.OPEN;
|
||||
break;
|
||||
|
@ -1,9 +1,6 @@
|
||||
package de.neemann.digital.analyse.parser;
|
||||
|
||||
import de.neemann.digital.analyse.expression.Expression;
|
||||
import de.neemann.digital.analyse.expression.Not;
|
||||
import de.neemann.digital.analyse.expression.Operation;
|
||||
import de.neemann.digital.analyse.expression.Variable;
|
||||
import de.neemann.digital.analyse.expression.*;
|
||||
import de.neemann.digital.analyse.quinemc.QuineMcCluskey;
|
||||
import junit.framework.TestCase;
|
||||
|
||||
@ -20,6 +17,11 @@ public class ParserTest extends TestCase {
|
||||
assertEquals(new Variable("A^1"), new Parser("A^1").parse());
|
||||
}
|
||||
|
||||
public void testConst() throws Exception {
|
||||
assertEquals(Constant.ZERO, new Parser("0").parse());
|
||||
assertEquals(Constant.ONE, new Parser("1").parse());
|
||||
}
|
||||
|
||||
public void testParseOr() throws Exception {
|
||||
assertTrue(new Parser("a+b").parse() instanceof Operation.Or);
|
||||
assertTrue(new Parser("a∨b").parse() instanceof Operation.Or);
|
||||
|
Loading…
x
Reference in New Issue
Block a user