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.

Subtitlu

abc

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