language: prepare for struct support

This commit is contained in:
2023-11-06 21:37:27 -08:00
parent e3bfa3fbfc
commit 8c48c93663
18 changed files with 42 additions and 41 deletions

View File

@ -213,10 +213,10 @@ class Parser(source: TokenSource, attribution: NodeAttribution) :
}
expect(TokenType.RightParentheses)
var native: Native? = null
var native: NativeFunctionDescriptor? = null
var block: Block? = null
if (peek(TokenType.Native)) {
native = parseNative()
native = parseNativeFunctionDescriptor()
} else {
block = parseBlock()
}
@ -305,13 +305,13 @@ class Parser(source: TokenSource, attribution: NodeAttribution) :
LongLiteral(it.text.toLong())
}
override fun parseNative(): Native = expect(NodeType.Native, TokenType.Native) {
override fun parseNativeFunctionDescriptor(): NativeFunctionDescriptor = expect(NodeType.NativeFunctionDescriptor, TokenType.Native) {
val form = parseSymbol()
val definitions = mutableListOf<StringLiteral>()
while (peek(TokenType.Quote)) {
definitions.add(parseStringLiteral())
}
Native(form, definitions)
NativeFunctionDescriptor(form, definitions)
}
override fun parseNoneLiteral(): NoneLiteral = expect(NodeType.NoneLiteral, TokenType.None) {

View File

@ -78,7 +78,7 @@ class Printer(buffer: StringBuilder) : NodeVisitor<Unit> {
append(node.value.toString())
}
override fun visitNative(node: Native) {
override fun visitNativeFunctionDescriptor(node: NativeFunctionDescriptor) {
append("native ")
visit(node.form)
append(" ")
@ -208,8 +208,8 @@ class Printer(buffer: StringBuilder) : NodeVisitor<Unit> {
visit(node.block!!)
}
if (node.native != null) {
visit(node.native!!)
if (node.nativeFunctionDescriptor != null) {
visit(node.nativeFunctionDescriptor!!)
}
}