Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 Simplifications of Context-Free Grammars. 2 A Substitution Rule Substitute Equivalent grammar.

Similar presentations


Presentation on theme: "1 Simplifications of Context-Free Grammars. 2 A Substitution Rule Substitute Equivalent grammar."— Presentation transcript:

1 1 Simplifications of Context-Free Grammars

2 2 A Substitution Rule Substitute Equivalent grammar

3 3 A Substitution Rule Equivalent grammar Substitute

4 4 In general: Substitute equivalent grammar

5 5 Nullable Variables Nullable Variable:

6 6 Removing Nullable Variables Example Grammar: Nullable variable

7 7 Substitute Final Grammar

8 8 Unit-Productions Unit Production: (a single variable in both sides)

9 9 Removing Unit Productions Observation: Is removed immediately

10 10 Example Grammar:

11 11 Substitute

12 12 Remove

13 13 Substitute

14 14 Remove repeated productions Final grammar

15 15 Useless Productions Some derivations never terminate... Useless Production

16 16 Another grammar: Not reachable from S Useless Production

17 17 In general: if then variable is useful otherwise, variable is useless contains only terminals

18 18 A production is useless if any of its variables is useless Productions useless Variables useless

19 19 Removing Useless Productions Example Grammar:

20 20 First: find all variables that can produce strings with only terminals Round 1: Round 2:

21 21 Keep only the variables that produce terminal symbols: (the rest variables are useless) Remove useless productions

22 22 Second: Find all variables reachable from Use a Dependency Graph not reachable

23 23 Keep only the variables reachable from S Final Grammar (the rest variables are useless) Remove useless productions

24 24 Removing All Step 1: Remove Nullable Variables Step 2: Remove Unit-Productions Step 3: Remove Useless Variables

25 25 Normal Forms for Context-free Grammars

26 26 Chomsky Normal Form Each productions has form: variable or terminal

27 27 Examples: Not Chomsky Normal Form Chomsky Normal Form

28 28 Convertion to Chomsky Normal Form Example: Not Chomsky Normal Form

29 29 Introduce variables for terminals:

30 30 Introduce intermediate variable:

31 31 Introduce intermediate variable:

32 32 Final grammar in Chomsky Normal Form: Initial grammar

33 33 From any context-free grammar (which doesnt produce ) not in Chomsky Normal Form we can obtain: An equivalent grammar in Chomsky Normal Form In general:

34 34 The Procedure First remove: Nullable variables Unit productions

35 35 Then, for every symbol : In productions: replace with Add production New variable:

36 36 Replace any production with New intermediate variables:

37 37 Theorem: For any context-free grammar (which doesnt produce ) there is an equivalent grammar in Chomsky Normal Form

38 38 Observations Chomsky normal forms are good for parsing and proving theorems It is very easy to find the Chomsky normal form for any context-free grammar

39 39 Greinbach Normal Form All productions have form: symbolvariables

40 40 Observations Greinbach normal forms are very good for parsing It is hard to find the Greinbach normal form of any context-free grammar

41 41 Compilers

42 42 Compiler Program v = 5; if (v>5) x = 12 + v; while (x !=3) { x = x - 3; v = 10; } Add v,v,0 cmp v,5 jmplt ELSE THEN: add x, 12,v ELSE: WHILE: cmp x,3... Machine Code

43 43 Lexical analyzer parser Compiler program machine code input output

44 44 A parser knows the grammar of the programming language

45 45 Parser PROGRAM STMT_LIST STMT_LIST STMT; STMT_LIST | STMT; STMT EXPR | IF_STMT | WHILE_STMT | { STMT_LIST } EXPR EXPR + EXPR | EXPR - EXPR | ID IF_STMT if (EXPR) then STMT | if (EXPR) then STMT else STMT WHILE_STMT while (EXPR) do STMT

46 46 The parser finds the derivation of a particular input * 5 Parser E -> E + E | E * E | INT E => E + E => E + E * E => 10 + E*E => * E => * 5 input derivation

47 47 10 E 25 E => E + E => E + E * E => 10 + E*E => * E => * 5 derivation derivation tree EE EE + *

48 48 10 E 25 derivation tree EE EE + * mult a, 2, 5 add b, 10, a machine code

49 49 Parsing

50 50 grammar Parser input string derivation

51 51 Example: Parser derivation input ?

52 52 Exhaustive Search Phase 1: All possible derivations of length 1 Find derivation of

53 53

54 54 Phase 2 Phase 1

55 55 Phase 2 Phase 3

56 56 Final result of exhaustive search Parser derivation input (top-down parsing)

57 57 Time complexity of exhaustive search Suppose there are no productions of the form Number of phases for string : approx. |w|

58 58 Time for phase 1: possible derivations For grammar with rules

59 59 Time for phase 2: possible derivations

60 60 Time for phase |w| is 2 |w| : A total of 2 |w| possible derivations

61 61 Total time needed for string : Extremely bad!!! phase 1 phase 2 phase |w|

62 62 For general context-free grammars: There exists a parsing algorithm that parses a string in time The CYK parser


Download ppt "1 Simplifications of Context-Free Grammars. 2 A Substitution Rule Substitute Equivalent grammar."

Similar presentations


Ads by Google