language: none support

This commit is contained in:
2023-09-12 02:03:41 -04:00
parent ca111f8e4b
commit a6f9a82e5e
12 changed files with 61 additions and 6 deletions

View File

@ -192,6 +192,11 @@ class Parser(source: PeekableSource<Token>, val attribution: NodeAttribution) {
Continue()
}
TokenType.None -> {
expect(TokenType.None)
NoneLiteral()
}
else -> {
throw ParseError(
"Failed to parse token: ${token.type} '${token.text}' as" +

View File

@ -81,6 +81,10 @@ class Printer(buffer: StringBuilder) : NodeVisitor<Unit> {
visit(node.definition)
}
override fun visitNoneLiteral(node: NoneLiteral) {
append("none")
}
override fun visitSymbol(node: Symbol) {
append(node.id)
}

View File

@ -14,7 +14,8 @@ enum class TokenType(vararg properties: TokenTypeProperty) {
StringLiteral(StringLiteralFamily),
Equality(OperatorFamily),
Inequality(ManyChars("!="), OperatorFamily),
ExclaimationPoint(SingleChar('!'), Promotion('=', Inequality)),
ExclamationPoint(SingleChar('!'), Promotion('=', Inequality)),
None(ManyChars("None"), KeywordFamily),
Equals(SingleChar('='), Promotion('=', Equality)),
PlusPlus(ManyChars("++"), OperatorFamily),
MinusMinus(ManyChars("--"), OperatorFamily),