Skip to content

Commit

Permalink
Parse: f(a, ,c) as full form f(a, Null, c)
Browse files Browse the repository at this point in the history
- `f(,b,c)` as full form `f(Null, b, c)`
- `f(a,b,)` as full form `f(a, b, Null)`
- ...
  • Loading branch information
axkr committed Aug 4, 2024
1 parent eebbca7 commit 744846a
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -344,7 +344,11 @@ private PrefixExprOperator determinePrefixOperator() {
/** construct the arguments for an expression */
private void getArguments(final IASTAppendable function) throws SyntaxError {
do {
function.append(parseExpression());
if (fToken == TT_COMMA) {
function.append(S.Null);
} else {
function.append(parseExpression());
}

if (fToken != TT_COMMA) {
break;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,11 @@ private PrefixOperator determinePrefixOperator() {
/** construct the arguments for an expression */
private void getArguments(final FunctionNode function) throws SyntaxError {
do {
function.add(parseExpression());
if (fToken == TT_COMMA) {
function.add(fFactory.createSymbol("Null"));
} else {
function.add(parseExpression());
}

if (fToken != TT_COMMA) {
break;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -716,4 +716,22 @@ void testParser84() {
ASTNode obj = PARSE_UNRELAXED.parse("x \\[LessEqual] (x^3)");
assertEquals("LessEqual(x, Power(x, 3))", obj.toString());
}

@Test
void testParser85() {
ASTNode obj = PARSE_UNRELAXED.parse("f[,b,c]");
assertEquals("f(Null, b, c)", obj.toString());
}

@Test
void testParser86() {
ASTNode obj = PARSE_UNRELAXED.parse("f[a, ,c]");
assertEquals("f(a, Null, c)", obj.toString());
}

@Test
void testParser87() {
ASTNode obj = PARSE_UNRELAXED.parse("f[a,b,]");
assertEquals("f(a, b, Null)", obj.toString());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -91,4 +91,22 @@ void testParser12() {
ASTNode obj = PARSE_RELAXED.parse("I_m==a*c");
assertEquals("Equal(I_m, Times(a, c))", obj.toString());
}

@Test
void testParser13() {
ASTNode obj = PARSE_RELAXED.parse("f(,b,c)");
assertEquals("f(Null, b, c)", obj.toString());
}

@Test
void testParser14() {
ASTNode obj = PARSE_RELAXED.parse("f(a, ,c)");
assertEquals("f(a, Null, c)", obj.toString());
}

@Test
void testParser15() {
ASTNode obj = PARSE_RELAXED.parse("f(a,b,)");
assertEquals("f(a, b, Null)", obj.toString());
}
}

0 comments on commit 744846a

Please sign in to comment.