본문내용
*id-&id$
reduce 8
build_tree(8)
3
$P
*id-&id$
reduce 6
build_tree(8)
4
$F
*id-&id$
reduce 4
build_tree(4)
5
$T
*id-&id$
shift *
build_node(*)
6
$T*
id-&id$
shift id
build_node(id)
7
$T*id
id-&id$
reduce 8
build_tree(8)
8
$T*P
-&id$
reduce 6
build_tree(6)
9
$T*F
-&id$
reduce 3
build_tree(3)
10
$T
-&id$
reduce 2
build_tree(2)
11
$E
-&id$
shift -
build_node(-)
12
$E-
&id$
shift &
build_node(&)
13
$E-&
id$
shift id
build_node(id)
14
$E-&id
$
reduce 8
build_tree(8)
15
$E-&P
$
reduce 5
build_tree(5)
16
$E-F
$
reduce 4
build_tree(4)
17
$E-T
$
reduce 1
build_tree(1)
18
$E
$
accept
return tree
파스 트리
☞ 추상 구문 트리의 파싱 과정
step
stack
input
action
parse tree
1
$
id*id-&id$
shift id
build_node(id)
2
$id
*id-&id$
reduce 8
3
$P
*id-&id$
reduce 6
4
$F
*id-&id$
reduce 4
5
$T
*id-&id$
shift *
6
$T*
id-&id$
shift id
build_node(id)
7
$T*id
id-&id$
reduce 8
8
$T*P
-&id$
reduce 6
9
$T*F
-&id$
reduce 3
build_tree(3)
10
$T
-&id$
reduce 2
11
$E
-&id$
shift -
12
$E-
&id$
shift &
13
$E-&
id$
shift id
build_node(id)
14
$E-&id
$
reduce 8
15
$E-&P
$
reduce 5
build_tree(5)
16
$E-F
$
reduce 4
17
$E-T
$
reduce 1
build_tree(1)
18
$E
$
accept
return tree
추상구문 트리
6.14 다음과 같은 문법이 주어졌을 때, 물음에 답하시오.
E → E + T | T
T → T * F | F
F → (E) | a
⑴ 의미있는 terminal과 의미있는 생성규칙을 정하시오.
☞ 의미있는 terminal {+, *}
의미 있는 생성 규칙
1. E → E + T// add
2. E → T
3. T → T * F// mull
4. T → F
5. F → (E)
6. F → a
⑵ 스트링 a*a+a의 bottom-up 파싱 과정을 보이시오.
⑶ 파싱의 결과로 AST를 구성하시오.
6.15 다음은 파스칼 언어의 상수 정의 부분(constant definition part)에 대한 문법이다.
→ CONST ; | ε
→ | ;
→ =
⑴ 의미있는 terminal을 정하시오.
⑵ 추상 구문 트리의 구조가 개략적으로 다음과 같은 형태가 되도록 의미있는 생성 규칙과 그 이름을 명시
하시오.
⑶ 다음 문장을 bottom-up 방법으로 파싱하고 추상 구문 트리를 구성하시오.
CONST ON = TRUE;
OFF = FALSE;
EPSILON = 1.0E-10
reduce 8
build_tree(8)
3
$P
*id-&id$
reduce 6
build_tree(8)
4
$F
*id-&id$
reduce 4
build_tree(4)
5
$T
*id-&id$
shift *
build_node(*)
6
$T*
id-&id$
shift id
build_node(id)
7
$T*id
id-&id$
reduce 8
build_tree(8)
8
$T*P
-&id$
reduce 6
build_tree(6)
9
$T*F
-&id$
reduce 3
build_tree(3)
10
$T
-&id$
reduce 2
build_tree(2)
11
$E
-&id$
shift -
build_node(-)
12
$E-
&id$
shift &
build_node(&)
13
$E-&
id$
shift id
build_node(id)
14
$E-&id
$
reduce 8
build_tree(8)
15
$E-&P
$
reduce 5
build_tree(5)
16
$E-F
$
reduce 4
build_tree(4)
17
$E-T
$
reduce 1
build_tree(1)
18
$E
$
accept
return tree
파스 트리
☞ 추상 구문 트리의 파싱 과정
step
stack
input
action
parse tree
1
$
id*id-&id$
shift id
build_node(id)
2
$id
*id-&id$
reduce 8
3
$P
*id-&id$
reduce 6
4
$F
*id-&id$
reduce 4
5
$T
*id-&id$
shift *
6
$T*
id-&id$
shift id
build_node(id)
7
$T*id
id-&id$
reduce 8
8
$T*P
-&id$
reduce 6
9
$T*F
-&id$
reduce 3
build_tree(3)
10
$T
-&id$
reduce 2
11
$E
-&id$
shift -
12
$E-
&id$
shift &
13
$E-&
id$
shift id
build_node(id)
14
$E-&id
$
reduce 8
15
$E-&P
$
reduce 5
build_tree(5)
16
$E-F
$
reduce 4
17
$E-T
$
reduce 1
build_tree(1)
18
$E
$
accept
return tree
추상구문 트리
6.14 다음과 같은 문법이 주어졌을 때, 물음에 답하시오.
E → E + T | T
T → T * F | F
F → (E) | a
⑴ 의미있는 terminal과 의미있는 생성규칙을 정하시오.
☞ 의미있는 terminal {+, *}
의미 있는 생성 규칙
1. E → E + T// add
2. E → T
3. T → T * F// mull
4. T → F
5. F → (E)
6. F → a
⑵ 스트링 a*a+a의 bottom-up 파싱 과정을 보이시오.
⑶ 파싱의 결과로 AST를 구성하시오.
6.15 다음은 파스칼 언어의 상수 정의 부분(constant definition part)에 대한 문법이다.
⑴ 의미있는 terminal을 정하시오.
⑵ 추상 구문 트리의 구조가 개략적으로 다음과 같은 형태가 되도록 의미있는 생성 규칙과 그 이름을 명시
하시오.
⑶ 다음 문장을 bottom-up 방법으로 파싱하고 추상 구문 트리를 구성하시오.
CONST ON = TRUE;
OFF = FALSE;
EPSILON = 1.0E-10
소개글