Levels Tought:
Elementary,Middle School,High School,College,University,PHD
Teaching Since: | Apr 2017 |
Last Sign in: | 10 Weeks Ago |
Questions Answered: | 4870 |
Tutorials Posted: | 4863 |
MBA IT, Mater in Science and Technology
Devry
Jul-1996 - Jul-2000
Professor
Devry University
Mar-2010 - Oct-2016
Hide Submission Folder Information | |
Submission Folder | Â |
Project 1 | |
Instructions | Â |
Requirements The first programming project involves writing a program that parses, using recursive descent, a GUI definition language defined in an input file and generates the GUI that it defines, using a supplied lexical analyzer. The grammar for this language is defined below: gui ::= Window STRING '(' NUMBER ',' NUMBER ')' layout widgets End '.'layout ::= Layout layout_type ':'layout_type ::= Flow | Grid '(' NUMBER ',' NUMBER [',' NUMBER ',' NUMBER] ')'widgets ::= widget widgets | widgetwidget ::= Button STRING ';' | Group radio_buttons End ';' | Label STRING ';' | Panel layout widgets End ';' | Textfield NUMBER ';'radio_buttons ::= radio_button radio_buttons | radio_buttonradio_button ::= Radio STRING ';' In the above grammar, the red symbols are nonterminals, the blue symbols are tokens and the black punctuation symbols are BNF metasymbols. Among the tokens those in title case are keywords. The character literals are punctuation tokens. Below is an explanation of the meaning of some of the symbols in the above productions that should help you understand the actions that are to be performed when each of the productions is parsed:
Your parser should properly handle the fact that panels can be nested in other panels. Recursive productions must be implemented using recursion. Syntactically incorrect input files should detect and report the first error. Below is an example of an input file: Window "Calculator" (200, 200) Layout Flow: Textfield 20; Panel Layout Grid(4, 3, 5, 5): Button "7"; Button "8"; Button "9"; Button "4"; Button "5"; Button "6"; Button "1"; Button "2"; Button "3"; Label ""; Button "0"; End; End. The above input file should produce the GUI shown below:
|
Â