Skip to content
Snippets Groups Projects
Commit acfa97d0 authored by Dominic Daniel Krämer's avatar Dominic Daniel Krämer
Browse files

Merge branch 'dominicsbranch' into 'main'

Dominicsbranch

See merge request !8
parents cd41355c 3ecdfbdc
No related branches found
No related tags found
1 merge request!8Dominicsbranch
x+2/5223+y+44+4+2^12/222
\ No newline at end of file
40.2+3*x
\ No newline at end of file
......@@ -101,6 +101,39 @@ public class Parser {
if(ts.size()==1) {
return null;
}
int index;
for(index=0; index<ts.size(); index++) {
if(ts.get(index).getType()== Lexer.TokenType.SPECIAL) {
if(!parseCharacter(ts.get(index).getData(), ".")) {
break;
}
}
}
if(index==ts.size()) {
return null;
}
//0
//1
//2
//3
//4 * => index=4
//5
//6
//7
List<Lexer.Token> leftList = new LinkedList<>();
for(int i=0; i<index; i++) {
leftList.add(ts.remove(0));
}
Expression leftExpression = parseExpression(leftList);
String operator = ts.remove(0).getData();
parseOperator(operator);
Expression rightExpression = parseExpression(ts);
/*
if(parseCharacter(ts.get(1).getData(), ".")) {
return null;
}
BinaryOperation operation;
if(ts.get(1).getType()!= Lexer.TokenType.SPECIAL) {
throw new ParserException("SyntaxError: unexpected operator: " + ts.get(1).getData());
......@@ -111,6 +144,8 @@ public class Parser {
String operator = ts.remove(0).getData();
parseOperator(operator);
Expression rightExpression = parseExpression(ts);
*/
return new BinaryOperation(leftExpression, operator, rightExpression);
}
......@@ -151,7 +186,7 @@ public class Parser {
if (ts.size()>1) {
//if the next token is of TokenType.SPECIAL, check if it's a comma
//if it is, create a decimal
if(ts.get(0).getType() == Lexer.TokenType.SPECIAL) {
if(ts.get(1).getType() == Lexer.TokenType.SPECIAL) {
if(parseComma(ts)) {
value = parseDecimal(ts);
}
......@@ -191,8 +226,8 @@ public class Parser {
return new Number(data);
}
parseDigitWithoutZero(data);
parseDigit(data);
parseDigitWithoutZero(data.substring(0,1));
parseDigit(data.substring(1));
return new Number(data);
}
......@@ -219,9 +254,9 @@ public class Parser {
}
private Boolean parseComma(List<Lexer.Token> ts) throws ParserException {
String data = ts.get(0).getData();
String data = ts.get(1).getData();
if(parseCharacter(data, ".")) {
if(ts.get(1).getType()!= Lexer.TokenType.NUMBER) {
if(ts.get(2).getType()!= Lexer.TokenType.NUMBER) {
throw new ParserException("SyntaxError: no number after comma");
}
return true;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment