CNUCOM / compilers_CNU_2022

12 stars 1 forks source link

과제 #02 규칙 번호 지정 순서에 대해 질문드립니다. #15

Closed NULL0xFF closed 2 years ago

NULL0xFF commented 2 years ago

규칙 번호 지정 순서

첨부파일 과제_설명.pdf예) MiniGo.g4 부분에

grammar MiniGo;
program: decl+ {System.out.println("202100000 Rule 0");};

decl: var_decl {System.out.println("202100000 Rule 1-1");}
    | fun_decl {System.out.println("202100000 Rule 1-2");};

var_decl:
    dec_spec IDENT type_spec {System.out.println("202100000 Rule 2-1");}
    | dec_spec IDENT '[' LITERAL ']' type_spec {System.out.println("202100000 Rule 2-2");};
...

으로 예시가 제공되어 있습니다.

저희가 제출해야 하는 MiniGo.g4에는 개개인의 학번과 규칙 번호를 출력되게끔 수정해야 하는데

에 대해 질문드립니다.

순차적으로 부여된 규칙번호

...
var_decl:
    dec_spec IDENT type_spec {System.out.println("202100000 Rule 2-1");}
    | dec_spec IDENT type_spec '=' LITERAL {System.out.println("202100000 Rule 2-2");}
    | dec_spec IDENT '[' LITERAL ']' type_spec {System.out.println("202100000 Rule 2-3");};

dec_spec: VAR {System.out.println("202100000 Rule 3");};

type_spec: {System.out.println("202100000 Rule 4-1");}
    | INT {System.out.println("202100000 Rule 4-2");}
    | '[' LITERAL ']' INT {System.out.println("202100000 Rule 4-3");};

fun_decl: FUNC IDENT '(' params ')' type_spec compound_stmt {System.out.println("202100000 Rule 5");};
...

트리 형식으로 부여된 규칙번호

...
var_decl:
    dec_spec IDENT type_spec {System.out.println("202100000 Rule 2-1");}
    | dec_spec IDENT type_spec '=' LITERAL {System.out.println("202100000 Rule 2-2");}
    | dec_spec IDENT '[' LITERAL ']' type_spec {System.out.println("202100000 Rule 2-3");};

dec_spec: VAR {System.out.println("202100000 Rule 4");};

type_spec: {System.out.println("202100000 Rule 5-1");}
    | INT {System.out.println("202100000 Rule 5-2");}
    | '[' LITERAL ']' INT {System.out.println("202100000 Rule 5-3");};

fun_decl: FUNC IDENT '(' params ')' type_spec compound_stmt {System.out.println("202100000 Rule 3");};
...
NULL0xFF commented 2 years ago

답변 감사합니다. 그렇다면 MiniGo의 문법 규칙 번호는 층별 순회를 따르는 것이 맞나요?

PLASLaboratory commented 2 years ago

아! 잘못 설명드렸습니다. 순차적으로 규칙번호를 부여하는 것이 맞습니다.

NULL0xFF commented 2 years ago

확인했습니다. 순차적으로 작성하여 제출하도록 하겠습니다. 감사합니다 :)