블록 생성기 만들기
우선 코드 생성기를 생성한다.
export const jsonGenerator = new Blockly.Generator('JSON');
블록 생성하기
- 생성된 제너레이터 이용하여 블록을 생성한다.
jsonGenerator .forBlock['sample_block'] = function(block, generator) {
return 'my code string';
};
Statement 블록
- 명령문 블록은 값을 반환하지 않는 코드를 나타냅니다.
- 명령문 블록의 생성기는 단순히 문자열을 반환합니다.
- 예를 들어, 이 코드는 항상 동일한 함수 호출을 반환하는 블록 생성기를 정의합니다.
jsonGenerator.forBlock['left_turn_block'] = function(block, generator) {
return 'turnLeft()';
};
Value 블록
- 값 블록은 값을 반환하는 코드를 나타냅니다.
- 값 블록의 생성기는 문자열과 우선순위 값을 포함하는 배열을 반환합니다 . 내장 생성기에는 Order열거형으로 내보내진 미리 정의된 연산자 우선순위 값이 있습니다.
- 이 코드는 항상 다음을 반환하는 블록 생성기를 정의합니다 1 + 1.
jsonGenerator.forBlock['two_block'] = function(block, generator) {
return ['1 + 1', Order.ADDITION];
};
연산자 우선순위
- 연산자 우선순위 규칙은 구문 분석 중에 올바른 연산 순서가 유지되는 방식을 결정합니다.
- Blockly의 생성기에서 연산자 우선순위는 괄호를 추가할 시기를 결정합니다.
- JSON은 표현식인 값을 허용하지 않으므로, 이 코드랩에서 빌드되는 생성기에 대한 연산자 우선순위를 고려할 필요가 없습니다.
- 우선순위 값이 필요한 모든 곳에서 동일한 값을 사용할 수 있습니다.
- JSON에 괄호를 추가할 필요가 없으므로 이 값을 호출합니다
const Order = {
ATOMIC: 0,
};