mirror of
https://github.com/GayPizzaSpecifications/pork.git
synced 2025-08-03 21:21:33 +00:00
language: prepare for struct support
This commit is contained in:
@ -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) {
|
||||
|
@ -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!!)
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user