This is an old revision of the document!


4. Regex Representation in Python

In this laboratory we will be using Python3 classes to introduce a possible representation of regular expressions inside code and ways to work with those Regexes.

We will start with a base class Regex that will function as an interface for future descendents:

class Regex:
    '''Base class for Regex ADT'''
 
    def __str__(self) -> str:
        '''Returns the string representation of the regular expression'''
        pass
 
    def gen(self) -> [str]:
        '''Return a representative set of strings that the regular expression can generate'''
        pass
 
    def eval_gen(self):
        '''Prints the set of strings that the regular expression can generate'''
        pass

We remark the following aspects:

There is no __init__(self) blueprint, implying that descendants of Regex could be instantiated with Descendent() if we do not specifically overwrite this default functionality.

As we have mentioned in the [second laboratory](“https://ocw.cs.pub.ro/ppcarte/doku.php?id=lfa:2024:lab02”) the corespondences with Java are:

  • self $ \rightarrow $ this
  • __init__ $ \rightarrow $ Class Constructor
  • __str__(self) $ \rightarrow $ toString()
We have structures of type '''comment'''. This is the preferred way of writing documentation for classes and functions in Python, as the structure produces a help dialogue box when hovering over functionalities with this type of comments.
We have interfaced the functionalities for the methods: __str__(self) -> str, gen(self) -> [str], eval_gen(self).

By using the keyword pass we can create empty function/class definitions, otherwise the Python3 interpreter would throw an error for empty structures.

Although Python is dynamically typed, we still encourage you to write the types for parameters and outputs explicitly, as they <b> contribute to documenting the code</b>.

Further, when writing python code for interviews, <b>the employers usually follow this aspect and grade you in consequence.</b>

Subtitlu

abc

Cum arata cod python
def main():
    ...  # your code here
 
if __name__ == "__main__":
    main()