Project: GREP

Get Regular Expression Pattern

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

Code Requirements and Specifications

  1. Regular Expression notation: The metacharacters required for a simple implementation consist of concatenation, or ( | ), closure ( * ), parentheses ( ( , ) ), and wildcard ( ( . ) ).

  2. Regular expression "shorthand" characters may aso be implemented, and may make the project easier: [, ], {, }, +, ^.

  3. A small proof of concept that includes wildcards is required, but full implementation of grep is not required

  4. NFA should be as general as reasonable so that expansion to a full grep would be straightforward [if also a big expansion in scope].