LangStudies/App/EoI/Scripts/EoI_Viewer.gd

56 lines
1.5 KiB
GDScript3
Raw Normal View History

2022-07-20 06:27:19 -07:00
extends Node
2022-07-23 23:56:37 -07:00
# Eva -------------------------------------------------------
const SLexer = preload("Lexer.gd")
var Lexer : SLexer
2022-07-20 06:27:19 -07:00
2022-07-23 23:56:37 -07:00
const SParser = preload("Parser.gd")
var Parser : SParser
2022-07-20 06:27:19 -07:00
2022-07-23 23:56:37 -07:00
const SEva = preload("Eva.gd")
var Eva : SEva
2022-07-20 06:27:19 -07:00
# UX --------------------------------------------------------
2022-07-24 04:54:17 -07:00
onready var Editor = get_node("Editor_TEdit")
onready var Output = get_node("Output_TEdit")
onready var Debug = get_node("Debug_TEdit")
onready var Eva_Btn = get_node("VBox/Eva_Interpret_Btn")
onready var Eva_Reset_Btn = get_node("VBox/Eva_ResetEnv_Btn")
onready var Clear_Btn = get_node("VBox/ClearOutput_Btn")
onready var Back_Btn = get_node("VBox/Back_Btn")
2022-07-20 06:27:19 -07:00
func evaBtn_pressed():
2022-07-23 23:56:37 -07:00
Lexer = SLexer.new(Editor.text, Output)
Parser = SParser.new(Lexer, Output)
2022-07-24 04:54:17 -07:00
2022-07-23 23:56:37 -07:00
var ast = Parser.parse()
var result = Eva.eval(ast)
2022-07-20 06:27:19 -07:00
2022-07-23 23:56:37 -07:00
if result != null:
Output.text += "\nResult: " + result
Debug.text = JSON.print( Eva.get_EnvSnapshot(), "\t" )
2022-07-24 04:54:17 -07:00
func evaResetBtn_pressed():
Eva = SEva.new(null, Output)
Debug.text = JSON.print( Eva.get_EnvSnapshot(), "\t" )
2022-07-23 23:56:37 -07:00
func clearBtn_pressed():
Output.text = ""
2022-07-20 06:27:19 -07:00
func backBtn_pressed():
queue_free()
2022-07-24 04:54:17 -07:00
2022-07-20 06:27:19 -07:00
func _ready():
2022-07-24 04:54:17 -07:00
Eva = SEva.new(null, Output)
Debug.text = JSON.print( Eva.get_EnvSnapshot(), "\t" )
2022-07-20 06:27:19 -07:00
Eva_Btn.connect("pressed", self, "evaBtn_pressed")
2022-07-24 04:54:17 -07:00
Eva_Reset_Btn.connect("pressed", self, "evaResetBtn_pressed")
2022-07-23 23:56:37 -07:00
Clear_Btn.connect("pressed", self, "clearBtn_pressed")
2022-07-20 06:27:19 -07:00
Back_Btn.connect("pressed", self, "backBtn_pressed")