Ast diagram
classDiagram
class Option {
expr: Expression
}
class Literal {
value: str
}
class Expression {
terms: list[Term]
paren: bool = False
}
class Identifier {
value: str
}
class Syntax {
production: list[Production]
}
class Node {
}
class Repetition {
expr: Expression
}
class Production {
identifier: Identifier
expression: Expression
}
class Term {
factors: list[Factor]
}
class Factor {
}
Term ..> Factor
Expression ..> Term
Option ..> Expression
Repetition ..> Expression
Production ..> Expression
Production ..> Identifier
Syntax ..> Production
Node <|-- Production
Node <|-- Syntax
Node <|-- Term
Node <|-- Factor
Factor <|-- Option
Factor <|-- Literal
Factor <|-- Expression
Factor <|-- Identifier
Factor <|-- Repetition