Question 2: Class Dictionary Design =================================== UNKNOWNS 1 - 25: 1 point each: 25 UNKNOWNS 26 - 29: 4 points each: 16 41 total Consider the following class dictionary "Documents" with UNKNOWNs and an input that is syntactically correct. Find the UNKNOWNs in the class dictionary. Documents = List(Document) EOF. Document = UNKNOWN1 "UNKNOWN2" Comment UNKNOWN3 "UNKNOWN4" Pages ["UNKNOWN5" OptParms] . Pages UNKNOWN6. OptParms = ["UNKNOWN7" TL] ["UNKNOWN8" <vers> Vers] ["UNKNOWN9" <cr> CR] ["UNKNOWN10" <date> DT] ["UNKNOWN11" <bb> BB] ["*postfile*" <pfile> PFILE] ["*plane-modes*" <pl> Planes] ["*no-prolog*" <nopro> NOPRO] . Vers = <v> Number. CR = <creator> String. DT = <date> String. PFILE = <pfilename> String. TL = <tl> String. BB = UNKNOWN12. Page = "UNKNOWN13" <pa> Page_attributes <di> Displayable_items. Displayable_items ~ {Displayable_item}. Displayable_item : Text2 | Rules | Graphics | Patterns. Text2 = "*text*" <ti> Text_slug ["*pl*" <plane> Number]. Rules = "UNKNOWN14" <ri> Rule_item ["*pl*" <plane> Number]. Graphics = "*graphic*" <gi> Graphic_item ["*pl*" <plane> Number]. Patterns = "*pattern*" <pat> Pattern_item ["*pl*" <plane> Number]. Text_slug = [";;" <cm> Comment] <characters> String <pos> Position ["*attributes*" <ta> Text_attributes] . Text_attributes ~ {Text_attribute}. Text_attribute : Pointsize | Typeface | Angle | UNKNOWN15 | Color | Kern | Reverse_video. Rule_item = ["UNKNOWN16" <cm> Comment] <width> Number <pos1> Position <pos2> Position [<tint> Tint] [ <color> Color] ["UNKNOWN17" <dash> Number]. Graphic_item = [";;" <cm> Comment] <width> Number <depth> Number <pos> Position <name> String ["*scx*" <scx> Number] ["*scy*" <scy> Number] [ <angle> Angle]. Pattern_item : Circle_Pattern | Square_Pattern. Circle_Pattern = "*circle*" <patnum> Number <linewidth> Number <pos> Position <radius> Number. Square_Pattern = "*square*" <patnum> Number <leftlowcorner> Position <height> Number <width> Number. Page_attributes = "UNKNOWN18" <width> UNKNOWN19 <depth> UNKNOWN20 [ <color> Color] ["*tint*" <tint> Tint] ["UNKNOWN21" <angle> Number]. Position = <xpos> Number <ypos> Number. Pointsize = "UNKNOWN22" <p> Number. Typeface = "UNKNOWN23" <tface> Tface. Tface : Tnum | Tstring. Tnum = <tnum> Number. Tstring = <tstring> String. Angle = "*angle*" <a> Number. Tint = "*tint*" <tn> Number. Color = "UNKNOWN24" <c1> Number <c2> Number <c3> Number. Kern = "*kern*" <k> Number. Reverse_video = "UNKNOWN25" <rv> Number. Comment = <str> String. Planes = <plmin> Number <plmax> Number. NOPRO = <np> Number. List(S) ~ {S}. Main = <s> String. Sample input: ========================================================== *document* *page* *page_attributes* 200 300 *text* "Hello World" 20 30 *page* *page_attributes* 200 300 *text* "Hello World" 20 30 ;; "abc" *document* *page* *page_attributes* 200 300 *color* 3 5 7 *angle* 30 *text* "Hello World" 20 30 *attributes* *pointsize* 12 *optional* *title* "MyTitle" *version* 9 *creator* "john" *date* "3/17/04" *bbox* 1 2 3 4 *document* *page* *page_attributes* 200 300 *text* ;; "xyz" "Hello World" 20 30 *attributes* *pointsize* 12 *angle* 90 *pl* 6 *document* *page* *page_attributes* 200 300 *text* "Hello World" 20 30 *attributes* *pointsize* 12 *angle* 90 *tint* 7 *document* *page* *page_attributes* 200 300 *text* "Hello World" 20 30 *attributes* *pointsize* 12 *angle* 90 *tint* 7 *color* 220 100 90 *rule* ;; "xyz" 3 400 500 600 700 *dash* 7 *document* *page* *page_attributes* 200 300 *text* "Hello World" 20 30 *attributes* *pointsize* 12 *angle* 90 *tint* 7 *color* 220 100 90 *kern* 2 *document* *page* *page_attributes* 200 300 *text* "Hello World" 20 30 *attributes* *pointsize* 12 *angle* 90 *tint* 7 *color* 220 100 90 *kern* 2 *rv* 8 *typeface* "Daves-Bold-Italic" The class dictionary "Documents" violates the Terminal Buffer rule. Find three violations of the Terminal Buffer rule and explain what is wrong in terms of the three violations. Put your answer into UNKNOWN26. The class dictionary contains duplication that should be eliminated. Consider the classes Text2, Rules, Graphics, Patterns. How can you improve them? Put your answer into UNKNOWN27. Consider the classes: Document, Text_slug, Rule_item, Graphic_item that all refer to a comment. Is there duplication that can be removed? Put your answer into UNKNOWN28. The following input contains a syntactic error related to class Tint: *document* *page* *page_attributes* 500 500 *color* 3 *tint* 4 *angle* 90 *text* "Hello World" 20 30 *attributes* *tint* 12 *kern* 15 *typeface* "DaveBold" *angle* 30 *tint* 5 *graphic* 10 20 30 40 "davesgraphic" Where is the first syntactic error? Put your answer into UNKNOWN29.