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:
__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()
'''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.
__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.
Further, when writing python code for interviews, the employers usually follow this aspect and grade you in consequence.
Subtitlu
abc
def main(): ... # your code here if __name__ == "__main__": main()