mirror of
https://github.com/hneemann/Digital.git
synced 2025-09-17 00:44:40 -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;
|
package de.neemann.digital.analyse.parser;
|
||||||
|
|
||||||
import de.neemann.digital.analyse.expression.Expression;
|
import de.neemann.digital.analyse.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.lang.Lang;
|
import de.neemann.digital.lang.Lang;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@ -82,6 +79,10 @@ public class Parser {
|
|||||||
return exp;
|
return exp;
|
||||||
case IDENT:
|
case IDENT:
|
||||||
return new Variable(tokenizer.getIdent());
|
return new Variable(tokenizer.getIdent());
|
||||||
|
case ONE:
|
||||||
|
return Constant.ONE;
|
||||||
|
case ZERO:
|
||||||
|
return Constant.ZERO;
|
||||||
default:
|
default:
|
||||||
throw new ParseException(Lang.get("err_parserUnexpectedToken_N", tokenizer.toString()));
|
throw new ParseException(Lang.get("err_parserUnexpectedToken_N", tokenizer.toString()));
|
||||||
}
|
}
|
||||||
|
@ -11,7 +11,7 @@ import java.io.Reader;
|
|||||||
public class Tokenizer {
|
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 final Reader in;
|
||||||
private Token token;
|
private Token token;
|
||||||
@ -64,6 +64,12 @@ public class Tokenizer {
|
|||||||
case -1:
|
case -1:
|
||||||
token = Token.EOF;
|
token = Token.EOF;
|
||||||
break;
|
break;
|
||||||
|
case '0':
|
||||||
|
token = Token.ZERO;
|
||||||
|
break;
|
||||||
|
case '1':
|
||||||
|
token = Token.ONE;
|
||||||
|
break;
|
||||||
case '(':
|
case '(':
|
||||||
token = Token.OPEN;
|
token = Token.OPEN;
|
||||||
break;
|
break;
|
||||||
|
@ -1,9 +1,6 @@
|
|||||||
package de.neemann.digital.analyse.parser;
|
package de.neemann.digital.analyse.parser;
|
||||||
|
|
||||||
import de.neemann.digital.analyse.expression.Expression;
|
import de.neemann.digital.analyse.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.quinemc.QuineMcCluskey;
|
import de.neemann.digital.analyse.quinemc.QuineMcCluskey;
|
||||||
import junit.framework.TestCase;
|
import junit.framework.TestCase;
|
||||||
|
|
||||||
@ -20,6 +17,11 @@ public class ParserTest extends TestCase {
|
|||||||
assertEquals(new Variable("A^1"), new Parser("A^1").parse());
|
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 {
|
public void testParseOr() throws Exception {
|
||||||
assertTrue(new Parser("a+b").parse() instanceof Operation.Or);
|
assertTrue(new Parser("a+b").parse() instanceof Operation.Or);
|
||||||
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