Checkpoint

This commit is contained in:
Tibo De Peuter 2025-04-17 17:49:53 +02:00
parent e749f8c6cb
commit 48f94c30df
Signed by: tdpeuter
GPG key ID: 38297DE43F75FFE2
15 changed files with 175 additions and 67 deletions

View file

@ -1,11 +1,10 @@
package parser
import lexer.Token
import lexer.TokenPosition
import lexer.state.TokenPosition
import lexer.TokenType
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Assertions.assertTrue
import org.junit.jupiter.api.Disabled
import org.junit.jupiter.api.Test
import prolog.ast.terms.Atom
import prolog.ast.terms.CompoundTerm
@ -73,4 +72,20 @@ class ParseTests {
assertEquals(1, result.size, "Expected 1 term")
assertEquals(Atom(name), result[0], "Expected atom 'my_FooBar1'")
}
@Test
fun `parse compound term f()`() {
val input = listOf(
Token(TokenType.ALPHANUMERIC, "f", TokenPosition(0, 0, 1)),
Token(TokenType.PARENTHESIS_LEFT, "(", TokenPosition(0, 1, 2)),
Token(TokenType.PARENTHESIS_RIGHT, ")", TokenPosition(0, 3, 4))
)
val result = Parser(input).parse()
assertEquals(1, result.size, "Expected 1 term")
assertTrue(result[0] is CompoundTerm)
assertEquals("f", (result[0] as CompoundTerm).name)
assertEquals(0, (result[0] as CompoundTerm).arguments.size)
}
}