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

@@ -24,7 +24,7 @@ func _init() -> void:
self.opChars = "+*/-=!><&|^%~"
self.identChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_"
var priorities: Array[Array[String]] = ([(["%"] as Array[String]), (["*", "/"] as Array[String]), (["+", "-"] as Array[String]), (["<<", ">>", ">>>"] as Array[String]), (["|", "&", "^"] as Array[String]), (["==", "!=", ">", "<", ">=", "<="] as Array[String]), (["..."] as Array[String]), (["&&"] as Array[String]), (["||"] as Array[String]), (["=", "+=", "-=", "*=", "/=", "%=", "<<=", ">>=", ">>>=", "|=", "&=", "^=", "=>"] as Array[String]), (["->"] as Array[String])] as Array[Array[String]])
var priorities: Array[Variant] = ([(["%"] as Array[Variant]), (["*", "/"] as Array[Variant]), (["+", "-"] as Array[Variant]), (["<<", ">>", ">>>"] as Array[Variant]), (["|", "&", "^"] as Array[Variant]), (["==", "!=", ">", "<", ">=", "<="] as Array[Variant]), (["..."] as Array[Variant]), (["&&"] as Array[Variant]), (["||"] as Array[Variant]), (["=", "+=", "-=", "*=", "/=", "%=", "<<=", ">>=", ">>>=", "|=", "&=", "^=", "=>"] as Array[Variant]), (["->"] as Array[Variant])] as Array[Variant])
self.opPriority = haxe_ds_StringMap.new()
self.opRightAssoc = haxe_ds_StringMap.new()
@@ -37,10 +37,10 @@ func _init() -> void:
_g += 1
tempNumber = _g - 1
var i: int = tempNumber
var p: Array[Variant] = (priorities[i] as Array[Variant])
var _g2: int = 0
var _g3: Array[String] = priorities[i]
while (_g2 < _g3.size()):
var x: String = _g3[_g2]
while (_g2 < p.size()):
var x = p[_g2]
_g2 += 1
self.opPriority.__set(x, i)
if (i == 9):
@@ -173,13 +173,13 @@ func ensure(tk) -> void:
if (t != tk):
self.unexpected(t)
func ensureToken(tk) -> void:
func ensureToken(tk: Variant) -> void:
var t = self.token()
if (!Type.enumEq(t, tk)):
self.unexpected(t)
func maybe(tk) -> bool:
func maybe(tk: Variant) -> bool:
var t = self.token()
if (Type.enumEq(t, tk)):
@@ -196,7 +196,7 @@ func getIdent() -> String:
if (tk == null):
self.unexpected(tk)
return null
return ""
else:
if (tk._index == 2):
var _g: String = tk.s
@@ -204,7 +204,7 @@ func getIdent() -> String:
return id
else:
self.unexpected(tk)
return null
return ""
func expr(e: Variant) -> Variant:
return e
@@ -475,7 +475,7 @@ func parseExpr():
tk = self.token()
if (tk == { "_index": 5 }):
if true:
var tk2 = { "_index": 3, "s": "->" }
var tk2: Variant = { "_index": 3, "s": "->" }
var t = self.token()
if (!Type.enumEq(t, tk2)):
self.unexpected(t)
@@ -706,7 +706,7 @@ func parseLambda(args: Array[Variant], pmin) -> Variant:
break
if true:
var tk = { "_index": 3, "s": "->" }
var tk: Variant = { "_index": 3, "s": "->" }
var t = self.token()
if (!Type.enumEq(t, tk)):
self.unexpected(t)
@@ -937,7 +937,7 @@ func parseStructure(id: String):
self.unexpected(t)
var vname: String = self.getIdent()
if true:
var tk = { "_index": 2, "s": "in" }
var tk: Variant = { "_index": 2, "s": "in" }
var t = self.token()
if (!Type.enumEq(t, tk)):
self.unexpected(t)
@@ -1180,7 +1180,7 @@ func parseStructure(id: String):
"try":
var e = self.parseExpr()
if true:
var tk = { "_index": 2, "s": "catch" }
var tk: Variant = { "_index": 2, "s": "catch" }
var t = self.token()
if (!Type.enumEq(t, tk)):
self.unexpected(t)
@@ -1197,7 +1197,7 @@ func parseStructure(id: String):
if (self.allowTypes):
t = self.parseType()
else:
var tk = { "_index": 2, "s": "Dynamic" }
var tk: Variant = { "_index": 2, "s": "Dynamic" }
var t2 = self.token()
if (!Type.enumEq(t2, tk)):
self.unexpected(t2)
@@ -1756,6 +1756,8 @@ func parseType() -> Variant:
_:
return self.unexpected(t)
return null
func parseTypeNext(t: Variant) -> Variant:
var tk = self.token()
@@ -1980,7 +1982,7 @@ func parseModuleDecl() -> Variant:
var name: String = self.getIdent()
var params: Variant = self.parseParams()
if true:
var tk = { "_index": 3, "s": "=" }
var tk: Variant = { "_index": 3, "s": "=" }
var t = self.token()
if (!Type.enumEq(t, tk)):
self.unexpected(t)
@@ -2655,6 +2657,8 @@ func evalPreproCond(e: Variant) -> bool:
assert(false, str(err))
return false
return false
func preprocess(id: String) -> Variant:
match (id):
"else", "elseif":
@@ -2846,4 +2850,3 @@ func tokenString(t: Variant) -> String:
tempResult = "#" + id
return tempResult