Ifthenelse stmt ifstmt ifstmt if logicexpr then stmt

  • Slides: 20
Download presentation

If-then-else 문법 • 다음 문법은 모호한가? <stmt> -> <if-stmt> | … <if-stmt> -> if

If-then-else 문법 • 다음 문법은 모호한가? <stmt> -> <if-stmt> | … <if-stmt> -> if <logic_expr> then <stmt> | if <logic_expr> then <stmt> else <stmt> * 다음 문장을 고려하라: if <logic_expr> then <stmt> else<stmt> 11

확장 BNF(EBNF) • 13

확장 BNF(EBNF) • 13

예제: EBNF • 다음 BNF를 EBNF로 나타내라. <expr> + <term> | <expr> - <term>

예제: EBNF • 다음 BNF를 EBNF로 나타내라. <expr> + <term> | <expr> - <term> | <term> * <factor> | <term> / <factor> | <factor> 14

예제: EBNF • 다음 BNF를 EBNF로 표현하라. <assign> <id> = <expr> <id> A |

예제: EBNF • 다음 BNF를 EBNF로 표현하라. <assign> <id> = <expr> <id> A | B |C <expr> + <term> | <expr> - <term> | <term> * <factor> | <term> / <factor> | <factor> <exp> ** <factor> | <exp> (<expr>) | <id> 15

BNF, EBNF의 최근 변경사항 구분 최근 변경사항 => : 선택사항 표현 [] 아랫첨자 opt

BNF, EBNF의 최근 변경사항 구분 최근 변경사항 => : 선택사항 표현 [] 아랫첨자 opt 사용 Ex. proc name(parameter. Listopt) 다중선택표현 () “one of” 사용 Ex. Operator one of + * - / < > 수직바 ‘|’ 각 RHS를 단순히 별도의 줄에 표현 Example: in C statement: for( expr-1 opt ; expr-2 opt; expr-3 opt) statement if (expression) statement while (expression) statement … 16

Test • 문제#1 G: <S> <A> a <B> b <A> b | b <B>

Test • 문제#1 G: <S> <A> a <B> b <A> b | b <B> a<B> | a – 다음에서 L(G)에 속하는 것은? • • bbaabb bbaba bbaaaabb Abaabb 17

Test • 문제#1 G: <S> <A> a <B> b <A> b | b <B>

Test • 문제#1 G: <S> <A> a <B> b <A> b | b <B> a<B> | a – L(G) = ? Note: Given G = (∑, N, T, S, P), L(G) = {s | S =>* s} where s ∈ ∑* 18