Version 11/10/17
Educational Objectives: After completing this assignment, the student should be able to accomplish the following:
Operational Objectives: Produce an implementation of the classic grep search facility. A small subset of special characters may be used, but it should include at least wild cards and enough syntax to make searches workable from the command line. An implementation of the classes GREP ("get regular expression pattern") and NFA ("non-deterministic finite automoton") is required.
Deliverables: Files:
nfa.h # definition of class NFA nfa.cpp # implementation of class NFA grep.h # definition of class GREP grep.cpp # implementation of class GREP grepdriver.cpp # driver program (modelled on gnu grep) makefile # builds all project object code and executables manual.txt # operating instructions for software [team document] report.txt # overview of team and project [team document] log.txt # personal log for team member [individual document]
Submit command: submit.sh deliverables.grep
Regular Expression notation: The metacharacters required for a simple implementation consist of concatenation, or ( | ), closure ( * ), parentheses ( ( , ) ), and wildcard ( ( . ) ).
Regular expression "shorthand" characters may aso be implemented, and may make the project easier: [, ], {, }, +, ^.
A small proof of concept that includes wildcards is required, but full implementation of grep is not required
NFA should be as general as reasonable so that expansion to a full grep would be straightforward [if also a big expansion in scope].