introduction to parsing exercise ||create suitable bnf and then write simple program for parsing basic bibtex book referencesand that produces output in the form of dictionary of dictionaries for examplegiven input like this@book{blanchette+summerfield author "jasmin blanchette and mark summerfield"title " +gui programming with qt second edition"year publisher "prentice hallthe expected output would be dictionary like this (herepretty printed){'blanchette+summerfield ''author''jasmin blanchette and mark summerfield''publisher''prentice hall''title'' +gui programming with qt second edition''year' each book has an identifier and this should be used as the key for the outer dictionary the value should itself be dictionary of key-value items each book' identifier can contain any characters except whitespaceand each key=value field' value can either be an integer or double-quoted string string values can include arbitrary whitespace including newlinesso replace every internal sequence of whitespace (including newlineswith single spaceand of course strip whitespace from the ends note that the last key=value for given book is not followed by comma create the parser using either pyparsing or ply if using pyparsingthe regex(class will be useful for the identifier and the quotedstring(class will be useful when defining the value use the delimitedlist(function for handling the list of key=values if using plythe lexer is sufficientproviding you use separate tokens for integer and string values solution using pyparsing should take around lineswhile one using ply might take about lines solution that includes both pyparsing and ply functions is provided in bibtex py