현재 실행중인 코드의 위치 가져오기(코드 실행 속도 늦추기)
달빛약속 런타임은 코드 실행 과정을 시각화할 수 있도록, 현재 실행중인 코드의 위치를 알리는 기능을 제공합니다. 이 기능은 흐름제어 문법(조건문, 반복문)를 배우거나, 코드 오류를 수정할 때 유용하게 사용할 수 있습니다.
WARNING
달빛약속 런타임은 코드 실행 위치 시각화를 직접 제공하지 않고, 실행중인 코드의 위치를 가져오는 이벤트를 제공합니다. 코드 실행 위치 시각화는 각 서비스의 개발자가 직접 구현해야 합니다.
코드 실행 속도 늦추기
프로그램이 실행되는 속도는 매우 빠르기에, 코드 실행 과정을 시각화하기 위해서는 코드 실행 속도를 늦춰야 합니다. 코드 실행 속도는 각 모듈별로 설정되며, addModule 메소드와 executionDelay
속성을 사용하여 지정합니다. executionDelay
속성은 코드 실행 속도를 늦추는 시간을 밀리초 단위로 설정합니다.
ts
import { YaksokSession } from '@dalbit-yaksok/core'
const session = new YaksokSession()
session.addModule(
'main',
`
"안녕, 세상!" 보여주기
"잠시 후에 출력됩니다" 보여주기
`,
{
executionDelay: 500, // 코드 실행 속도를 500밀리초로 설정
},
)
await session.runModule('main')
위 코드는 코드 실행 속도를 500밀리초로 설정합니다. 이제 코드는 500ms에 한 줄씩 실행됩니다.
실행중인 코드 위치 가져오기
sessionConfig
객체의 events.runningCode
이벤트를 사용하여 현재 실행중인 코드의 위치를 가져올 수 있습니다.
ts
import { yaksok, SessionConfig } from '@dalbit-yaksok/core'
const sessionConfig: SessionConfig = {
events: {
runningCode: (start, end, scope, tokens) => {
console.log(start, end, scope, tokens)
},
},
}
const session = new YaksokSession(sessionConfig)
session.addModule(
'main',
`
1 보여주기
1 + 2 보여주기
`,
)
await session.runModule('main')
/*
{ line: 2, column: 1 } { line: 2, column: 7 } Scope { .. } [{ type: "NUMBER_LITERAL", value: "1" } ... ]
{ line: 3, column: 1 } { line: 3, column: 11 } Scope { .. } [{ type: "NUMBER_LITERAL", value: "1" } ... ]
*/
위 코드는 runningCode
이벤트를 사용하여 현재 실행중인 코드의 위치를 콘솔에 출력합니다.