Make hank work in GDScript
Some checks failed
/ test (push) Failing after 41s

This commit is contained in:
2025-10-30 21:42:19 -05:00
parent 20c38dbe4c
commit b0a3c0b3d9
29 changed files with 2663 additions and 715 deletions

View File

@@ -8,54 +8,6 @@ var ast: Array[Variant] = []
func _init() -> void:
choices = 0
symbols.push_back({
"key": "INCLUDE ",
"value": HParser.include
})
symbols.push_back({
"key": "<-",
"value": HParser.thread
})
symbols.push_back({
"key": "->",
"value": HParser.divert
})
symbols.push_back({
"key": "===",
"value": HParser.knot
})
symbols.push_back({
"key": "==",
"value": HParser.knot
})
symbols.push_back({
"key": "=",
"value": HParser.stitch
})
symbols.push_back({
"key": "~",
"value": HParser.haxeLine
})
symbols.push_back({
"key": "```",
"value": HParser.haxeBlock
})
symbols.push_back({
"key": "-",
"value": HParser.gather
})
symbols.push_back({
"key": "*",
"value": HParser.choice
})
symbols.push_back({
"key": "+",
"value": HParser.choice
})
symbols.push_back({
"key": "#",
"value": HParser.tag
})
func parseString(h: String) -> Array[Variant]:
var stringBuffer: HankBuffer = HankBuffer.Dummy(h)
@@ -148,6 +100,56 @@ func parseFile(f: String, files = null, includedFile: bool = false) -> Array[Var
return parsedAST
static func parseExpr(buffer: HankBuffer, position: Position) -> Variant:
if (symbols.size() == 0):
symbols.push_back({
"key": "INCLUDE ",
"value": HParser.include
})
symbols.push_back({
"key": "<-",
"value": HParser.thread
})
symbols.push_back({
"key": "->",
"value": HParser.divert
})
symbols.push_back({
"key": "===",
"value": HParser.knot
})
symbols.push_back({
"key": "==",
"value": HParser.knot
})
symbols.push_back({
"key": "=",
"value": HParser.stitch
})
symbols.push_back({
"key": "~",
"value": HParser.haxeLine
})
symbols.push_back({
"key": "```",
"value": HParser.haxeBlock
})
symbols.push_back({
"key": "-",
"value": HParser.gather
})
symbols.push_back({
"key": "*",
"value": HParser.choice
})
symbols.push_back({
"key": "+",
"value": HParser.choice
})
symbols.push_back({
"key": "#",
"value": HParser.tag
})
var line: Variant = buffer.peekLine("")
match (line._index):
@@ -311,7 +313,7 @@ static func tag(buffer: HankBuffer, position: Position) -> Variant:
else:
haxe_Log.trace.call("Warning! Can't apply tags to " + str(expr), {
"fileName": "../hank/HParser.hx",
"lineNumber": 234,
"lineNumber": 236,
"className": "hank.HParser",
"methodName": "tag"
})