KO Basic - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki

Basic Runtime ๋ฐ IDE

Home ยท BASIC ยท UO API ยท Aโ€“Z ยท Examples ยท Languages

Basic Runtime์€ Basic ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  UO.* ํ˜ธ์ถœ์„ ClassicUO์˜ ์‹ค์ œ ๊ธฐ๋Šฅ์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ๋‚ด์žฅ IDE๋Š” Eclipse Theia์™€ Monaco editor๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ง„์ž…์ 

์ผ๋ฐ˜ ์‹คํ–‰ ์Šคํฌ๋ฆฝํŠธ์—๋Š” ๋‹ค์Œ ๊ตฌ์กฐ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

SUB Main()
    UO.Print('Hello from Basic')
END SUB

ํŒŒ์ผ์„ ์—ด๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•˜๋ฉด Runtime/language service๊ฐ€ ๋ฌธ์„œ ์ „์ฒด๋ฅผ ์ธ๋ฑ์‹ฑํ•ฉ๋‹ˆ๋‹ค. procedures, functions, parameters, local/global declarations, API calls ๋ฐ diagnostics๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. SUB Main()์ด ํŒŒ์ผ ์•ž์ด๋‚˜ ๋’ค ์–ด๋””์— ์žˆ์–ด๋„ ๋˜๋ฉฐ editor์˜ ์Šคํฌ๋กค ์œ„์น˜์— ์˜์กดํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

IDE ์ฃผ์š” ํŒจ๋„

  • Explorer: ํŒŒ์ผ ๋ฐ ํ˜„์žฌ ์Šคํฌ๋ฆฝํŠธ;
  • Editor: Basic ํŽธ์ง‘;
  • Outline: ์„ ํƒ๋œ ํŒŒ์ผ์˜ SUB์™€ FUNCTION;
  • Problems: ๊ฒ€์ฆ ์˜ค๋ฅ˜ ๋ฐ ์†Œ์Šค ์ค„ ์ด๋™;
  • Output / Debug Console: ์‹œ๊ฐ„์ˆœ ์‹คํ–‰ ์ถœ๋ ฅ;
  • API Inspector: ์„ ํƒ API์˜ ์‹œ๊ทธ๋‹ˆ์ฒ˜์™€ ์„ค๋ช…;
  • Variables / Watch / Call Stack: ๋””๋ฒ„๊ทธ ์ค‘์ง€ ์ƒํƒœ์˜ ๊ฐ’๊ณผ frame;
  • API Manual: Runtime registration์—์„œ ๋งŒ๋“  ์ „์ฒด ์นดํƒˆ๋กœ๊ทธ.

ํŒจ๋„์€ ํฌ๊ธฐ๋ฅผ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ํŒจ๋„์„ ์„ ํƒํ•ด๋„ ๋‚˜๋จธ์ง€ ํŒจ๋„์˜ ๊ทธ๋ฆฌ๊ธฐ์™€ ์—…๋ฐ์ดํŠธ๊ฐ€ ๊ณ„์†๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์Šคํฌ๋ฆฝํŠธ ์ƒํƒœ

์ƒํƒœ ํ‘œ์‹œ ์ƒ‰์ƒ
running ๋…น์ƒ‰
paused ๋…ธ๋ž€์ƒ‰
stopped์ด๋ฉฐ ์„ ํƒ๋จ ๊ฒ€์ •/ํ˜„์žฌ ํ…Œ๋งˆ์˜ ์ผ๋ฐ˜ ์ƒ‰์ƒ
debugging ๋””๋ฒ„๊ทธ ์ƒํƒœ์™€ ํ˜„์žฌ ์ค‘์ง€ ์ค„์„ ํ•จ๊ป˜ ํ‘œ์‹œ

์—ฌ๋Ÿฌ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋™์‹œ์— ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Explorer์—์„œ ์„ ํƒํ•œ ์ธ์Šคํ„ด์Šค์— Run, Pause, Stop ๋ฐ step command๊ฐ€ ์ ์šฉ๋˜๊ณ  ๋‹ค๋ฅธ ์ธ์Šคํ„ด์Šค์˜ ์ƒํƒœ๋Š” ๋ฐ”๋€Œ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Run ๋ฐ ๋””๋ฒ„๊ทธ ๋‹จ์ถ•ํ‚ค

๋™์ž‘ ํ‚ค ๊ธฐ๋Šฅ
Run Current Script F5 ํ˜„์žฌ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๊ฒ€์ฆํ•˜๊ณ  ์‹คํ–‰
Start Script (SUB Main) / Run Without Debugging Ctrl+F5 breakpoint ์—†์ด SUB Main() ์‹คํ–‰
Start Debugging F4 debugger ์•„๋ž˜์—์„œ SUB Main() ์‹คํ–‰
Validate F6 ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  ๋ฌธ๋ฒ• ๊ฒ€์ฆ
Pause/Resume Current Script F7 ์„ ํƒ๋œ ์ธ์Šคํ„ด์Šค ์ผ์‹œ ์ •์ง€/์žฌ๊ฐœ
Continue F8 pause ๋˜๋Š” breakpoint์—์„œ ๊ณ„์†
Toggle Breakpoint F9 ํ˜„์žฌ ์ค„ breakpoint ์ถ”๊ฐ€/์ œ๊ฑฐ
Step Over F10 ํ˜„์žฌ ๋ฌธ์žฅ์„ ์‹คํ–‰ํ•˜๊ณ  ๋‹ค์Œ ์‹ค์ œ ๋ฌธ์žฅ์œผ๋กœ ์ด๋™
Step Into F11 ํ˜ธ์ถœ๋œ SUB/FUNCTION ์•ˆ์œผ๋กœ ์ด๋™
Step Out Shift+F11 ํ˜„์žฌ procedure๋ฅผ ๋๋‚ด๊ณ  ํ˜ธ์ถœ ์œ„์น˜๋กœ ๋ณต๊ท€
Stop Shift+F5 ์„ ํƒ๋œ ์Šคํฌ๋ฆฝํŠธ ์ค‘์ง€
Restart Debugging Ctrl+Shift+F5 ์„ ํƒ๋œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ debug๋กœ ์žฌ์‹œ์ž‘
API Documentation for Symbol Ctrl+F1 ์ปค์„œ symbol์˜ Manual ํ•ญ๋ชฉ ์—ด๊ธฐ

Run ๋ฉ”๋‰ด์˜ Stop All Scripts์™€ Pause All Scripts๋Š” ์ ์šฉ ๊ฐ€๋Šฅํ•œ running/paused ์ธ์Šคํ„ด์Šค๊ฐ€ ์žˆ์„ ๋•Œ๋งŒ ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค. ํšŒ์ƒ‰ ํ•ญ๋ชฉ์€ ํ˜„์žฌ ์ƒํƒœ์—์„œ ๋™์ž‘์„ ์ ์šฉํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค.

๋‹จ๊ณ„ ์‹คํ–‰๊ณผ ๋Ÿฐํƒ€์ž„ ๊ฐ’

F10, F11, Shift+F11์€ debugger๊ฐ€ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๋ฌธ์žฅ์—์„œ ๋ฉˆ์ถ˜ ๊ฒฝ์šฐ์—๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ ์‹คํ–‰ ์ค„์€ Editor์—์„œ ๊ฐ•์กฐ๋ฉ๋‹ˆ๋‹ค. ์ค‘์ง€ ์ƒํƒœ์—์„œ๋Š” Variables, Watch, Call Stack์ด ์ •ํ™•ํ•œ frame snapshot์„ ํ‘œ์‹œํ•˜๊ณ , ์—ฐ์† ์‹คํ–‰ ์ค‘์—๋Š” ๋งˆ์ง€๋ง‰์œผ๋กœ ์•ˆ์ „ํ•˜๊ฒŒ ์บก์ฒ˜ํ•œ snapshot๋งŒ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

API ํ˜ธ์ถœ์˜ ์‹ค์ œ ๋ฐ˜ํ™˜๊ฐ’์„ ๋ณด๋ ค๋ฉด ๊ฒฐ๊ณผ๋ฅผ ๋ณ€์ˆ˜์— ์ €์žฅํ•˜๊ณ  ๋‹ค์Œ ์ค„์—์„œ breakpoint๋กœ ๋ฉˆ์ถ˜ ๋’ค Variables/Watch์—์„œ ํ™•์ธํ•˜๊ฑฐ๋‚˜ UO.Print(...)๋กœ ์ถœ๋ ฅํ•˜์‹ญ์‹œ์˜ค.

ํŽธ์ง‘ ์ง€์› ๋ฐ ์ €์žฅ

  • completion์€ ์™„์ „ํ•œ UO.* ๊ตฌ๋ฌธ์„ ํ‘œ์‹œ;
  • API ํ•ญ๋ชฉ์„ ํ•œ ๋ฒˆ ํด๋ฆญํ•˜๋ฉด Inspector์— ์„ค๋ช…, ๋‘ ๋ฒˆ ํด๋ฆญํ•˜๋ฉด ์™„์ „ํ•œ ํ˜•ํƒœ ์‚ฝ์ž…;
  • Ctrl์„ ๋ˆ„๋ฅด๊ณ  ์žˆ์„ ๋•Œ๋งŒ Ctrl-hover ๋ฌธ์„œ ํ‘œ์‹œ;
  • tooltip์€ ์ค„๋ฐ”๊ฟˆ๋˜๋ฉฐ ํ™”๋ฉด ๋ฐ–์œผ๋กœ ๋‚˜๊ฐ€์ง€ ์•Š์Œ;
  • ์ƒˆ ์ด๋ฆ„ ์—†๋Š” ํŒŒ์ผ์€ Autoload\Scripts์— Save;
  • ๋””์Šคํฌ์—์„œ ์—ฐ ํŒŒ์ผ์€ ์›๋ž˜ ๊ฒฝ๋กœ์— Save;
  • ClassicUO Runtime์ด ์‹คํ–‰ ์ค‘์ด๋ฉด IDE ์ฐฝ์„ ๋‹ซ์•„๋„ ์Šคํฌ๋ฆฝํŠธ๋Š” ๊ณ„์† ์‹คํ–‰๋˜๋ฉฐ, IDE๋ฅผ ๋‹ค์‹œ ์—ด๋ฉด ์ƒํƒœ๋ฅผ ๋‹ค์‹œ ์ฝ์Œ.

UI ๋ฉˆ์ถค ๋ฐฉ์ง€

Runtime์€ ๊ฒฉ๋ฆฌ๋œ worker, ์ค€๋น„๋œ source cache, ํ˜‘๋ ฅ์  yielding ๋ฐ ๊ฒŒ์ž„ ์Šค๋ ˆ๋“œ๋กœ ์ „๋‹ฌํ•˜๋Š” ์ž‘์—…๋Ÿ‰ ์ œํ•œ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜๋„ ๊ธด ๋ฐ˜๋ณต๋ฌธ์—๋Š” UO.Wait(...)๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๋Œ€๊ธฐ ์—†๋Š” active loop๋ฅผ ๋งŒ๋“ค์ง€ ๋งˆ์‹ญ์‹œ์˜ค.