fix Parser for GDScript
This commit is contained in:
@@ -1,30 +1,6 @@
|
||||
class_name Parser
|
||||
|
||||
static var symbols: Array[Variant] = [if true:
|
||||
haxe_ds_StringMap.new().__set("INCLUDE ", Parser.include)
|
||||
haxe_ds_StringMap.new(), if true:
|
||||
haxe_ds_StringMap.new().__set("<-", Parser.thread)
|
||||
haxe_ds_StringMap.new(), if true:
|
||||
haxe_ds_StringMap.new().__set("->", Parser.divert)
|
||||
haxe_ds_StringMap.new(), if true:
|
||||
haxe_ds_StringMap.new().__set("===", Parser.knot)
|
||||
haxe_ds_StringMap.new(), if true:
|
||||
haxe_ds_StringMap.new().__set("==", Parser.knot)
|
||||
haxe_ds_StringMap.new(), if true:
|
||||
haxe_ds_StringMap.new().__set("=", Parser.stitch)
|
||||
haxe_ds_StringMap.new(), if true:
|
||||
haxe_ds_StringMap.new().__set("~", Parser.haxeLine)
|
||||
haxe_ds_StringMap.new(), if true:
|
||||
haxe_ds_StringMap.new().__set("```", Parser.haxeBlock)
|
||||
haxe_ds_StringMap.new(), if true:
|
||||
haxe_ds_StringMap.new().__set("-", Parser.gather)
|
||||
haxe_ds_StringMap.new(), if true:
|
||||
haxe_ds_StringMap.new().__set("*", Parser.choice)
|
||||
haxe_ds_StringMap.new(), if true:
|
||||
haxe_ds_StringMap.new().__set("+", Parser.choice)
|
||||
haxe_ds_StringMap.new(), if true:
|
||||
haxe_ds_StringMap.new().__set("#", Parser.tag)
|
||||
haxe_ds_StringMap.new()]
|
||||
static var symbols: Array[Variant] = []
|
||||
static var choices: int = 0
|
||||
|
||||
var buffers: Array[HankBuffer] = []
|
||||
@@ -32,6 +8,54 @@ var ast: Array[Variant] = []
|
||||
|
||||
func _init() -> void:
|
||||
choices = 0
|
||||
symbols.push_back({
|
||||
"key": "INCLUDE ",
|
||||
"value": Parser.include
|
||||
})
|
||||
symbols.push_back({
|
||||
"key": "<-",
|
||||
"value": Parser.thread
|
||||
})
|
||||
symbols.push_back({
|
||||
"key": "->",
|
||||
"value": Parser.divert
|
||||
})
|
||||
symbols.push_back({
|
||||
"key": "===",
|
||||
"value": Parser.knot
|
||||
})
|
||||
symbols.push_back({
|
||||
"key": "==",
|
||||
"value": Parser.knot
|
||||
})
|
||||
symbols.push_back({
|
||||
"key": "=",
|
||||
"value": Parser.stitch
|
||||
})
|
||||
symbols.push_back({
|
||||
"key": "~",
|
||||
"value": Parser.haxeLine
|
||||
})
|
||||
symbols.push_back({
|
||||
"key": "```",
|
||||
"value": Parser.haxeBlock
|
||||
})
|
||||
symbols.push_back({
|
||||
"key": "-",
|
||||
"value": Parser.gather
|
||||
})
|
||||
symbols.push_back({
|
||||
"key": "*",
|
||||
"value": Parser.choice
|
||||
})
|
||||
symbols.push_back({
|
||||
"key": "+",
|
||||
"value": Parser.choice
|
||||
})
|
||||
symbols.push_back({
|
||||
"key": "#",
|
||||
"value": Parser.tag
|
||||
})
|
||||
|
||||
func parseString(h: String) -> Array[Variant]:
|
||||
var stringBuffer: HankBuffer = HankBuffer.Dummy(h)
|
||||
@@ -137,8 +161,8 @@ static func parseExpr(buffer: HankBuffer, position: Position) -> Variant:
|
||||
while (_g2 < _g1.size()):
|
||||
var rule: Variant = _g1[_g2]
|
||||
_g2 += 1
|
||||
var symbol: String = rule.keys().get("next").call()
|
||||
var rule2 = rule.__get(symbol)
|
||||
var symbol: String = rule.get("key")
|
||||
var rule2 = rule.get("value")
|
||||
if (StringTools.startsWith(StringTools.trim(line2), symbol)):
|
||||
buffer.skipWhitespace("")
|
||||
return rule2.call(buffer, position)
|
||||
@@ -146,6 +170,8 @@ static func parseExpr(buffer: HankBuffer, position: Position) -> Variant:
|
||||
1:
|
||||
assert(false, str("Tried to parse expr when no lines were left in file"))
|
||||
|
||||
return null
|
||||
|
||||
static func lineTokens(buffer: HankBuffer, n: int, position: Position, throwOnMismatch: bool = true, rtrim: bool = true) -> Array[String]:
|
||||
var line: String = Extensions.unwrap(buffer.takeLine(""))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user