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-23 23:56:37 -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 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)
|
|
|
|
Eva = SEva.new(null, Output)
|
2022-07-20 06:27:19 -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" )
|
|
|
|
|
|
|
|
func clearBtn_pressed():
|
|
|
|
Output.text = ""
|
|
|
|
|
2022-07-20 06:27:19 -07:00
|
|
|
func backBtn_pressed():
|
|
|
|
queue_free()
|
|
|
|
|
|
|
|
|
|
|
|
func _ready():
|
|
|
|
Eva_Btn.connect("pressed", self, "evaBtn_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")
|