Skip to content

5. 현재 실행중인 코드의 위치 가져오기(코드 실행 속도 늦추기)

현재 실행중인 코드의 위치 가져오기(코드 실행 속도 늦추기)

Section titled “현재 실행중인 코드의 위치 가져오기(코드 실행 속도 늦추기)”

달빛약속 런타임은 코드 실행 과정을 시각화할 수 있도록, 현재 실행중인 코드의 위치를 알리는 기능을 제공합니다. 이 기능은 흐름제어 문법(조건문, 반복문)를 배우거나, 코드 오류를 수정할 때 유용하게 사용할 수 있습니다.

::: warning 달빛약속 런타임은 코드 실행 위치 시각화를 직접 제공하지 않고, 실행중인 코드의 위치를 가져오는 이벤트를 제공합니다. 코드 실행 위치 시각화는 각 서비스의 개발자가 직접 구현해야 합니다. :::

프로그램이 실행되는 속도는 매우 빠르기에, 코드 실행 과정을 시각화하기 위해서는 코드 실행 속도를 늦춰야 합니다. 코드 실행 속도는 각 모듈별로 설정되며, addModule 메소드와 executionDelay 속성을 사용하여 지정합니다. executionDelay 속성은 코드 실행 속도를 늦추는 시간을 밀리초 단위로 설정합니다.

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 이벤트를 사용하여 현재 실행중인 코드의 위치를 가져올 수 있습니다.

import { SessionConfig, yaksok } 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 이벤트를 사용하여 현재 실행중인 코드의 위치를 콘솔에 출력합니다.