Skip to content

Commit 8c8d61d

Browse files
feat: create defaults for Literals
1 parent a10dda4 commit 8c8d61d

File tree

4 files changed

+19
-6
lines changed

4 files changed

+19
-6
lines changed

.idea/compiler.xml

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

core/src/main/kotlin/io/github/cybercodernaj/parkour/lexer/LexerBuilder.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import io.github.cybercodernaj.parkour.lexer.internal.Lexer
1111
*/
1212
class LexerBuilder internal constructor() {
1313
internal var ignorePattern: Regex = Regex("""\s+""")
14+
private set
1415

1516
/**
1617
* ignorePattern is what the lexer will use to skip over.

core/src/main/kotlin/io/github/cybercodernaj/parkour/lexer/internal/Lexer.kt

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,24 @@ import io.github.cybercodernaj.parkour.utils.Position
3131
* @since 0.1.0
3232
*/
3333
class Lexer internal constructor(
34-
private val ignorePattern: Regex = Regex("""\s+"""),
34+
private val ignorePattern: Regex = Defaults.ignorePattern,
3535
private val singleLineComments: Regex? = null,
3636
private val multilineComments: Pair<Regex, Regex>? = null,
37-
private val identifiers: Regex = Regex("""[a-zA-Z_]\w*"""),
37+
private val identifiers: Regex = Defaults.identifiers,
3838
private val hardKeywords: Set<String> = emptySet(),
3939
private val operators: Set<String> = emptySet(),
4040
private val separators: Set<String> = emptySet(),
4141
private val literals: Literals = Literals()
4242
) {
43+
object Defaults {
44+
val ignorePattern = Regex("""\s+""")
45+
val identifiers = Regex("""[a-zA-Z_]\w*""")
46+
val integerLiterals = Regex("""[-+]?[0-9_]+""")
47+
val floatingLiterals = Regex("""[-+]?[0-9_]*\.[0-9_]+(?:[eE][-+]?[0-9_]+)?""")
48+
val singleLineString: Set<String> = setOf("\"", "\'")
49+
val escapeSequences: List<Pair<Regex, (String) -> Char>> = emptyList() // TODO fill this list
50+
}
51+
4352
private var position = Position(0, 0)
4453

4554
internal lateinit var source: TextSource

core/src/main/kotlin/io/github/cybercodernaj/parkour/lexer/internal/Literals.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ import io.github.cybercodernaj.parkour.exceptions.LexicalException
2222
* @since 0.1.0
2323
*/
2424
class Literals internal constructor(
25-
internal val integerLiteral: Regex? = Regex("""[-+]?[0-9_]+"""),
26-
internal val floatingLiteral: Regex? = Regex("""[-+]?[0-9_]*\.[0-9_]+(?:[eE][-+]?[0-9_]+)?"""),
27-
internal val singleLineString: Set<String> = setOf("\"", "\'"),
28-
internal val escapeSequences: List<Pair<Regex, (String) -> Char>> = emptyList(),
25+
internal val integerLiteral: Regex? = Lexer.Defaults.integerLiterals,
26+
internal val floatingLiteral: Regex? = Lexer.Defaults.floatingLiterals,
27+
internal val singleLineString: Set<String> = Lexer.Defaults.singleLineString,
28+
internal val escapeSequences: List<Pair<Regex, (String) -> Char>> = Lexer.Defaults.escapeSequences,
2929
)

0 commit comments

Comments
 (0)