Cologne is a LR(0) parser created in Python.
- import Cologne.
import Cologne
- create a parser.
parser = Cologne.parser
- create your terminals.
# Terminals.
NUMBER = parser.add_terminal(Cologne.Terminal("NUMBER"))
PLUS = parser.add_terminal(Cologne.Terminal("PLUS"))
MINUS = parser.add_terminal(Cologne.Terminal("MINUS"))
TIMES = parser.add_terminal(Cologne.Terminal("TIMES"))
DIVIDE = parser.add_terminal(Cologne.Terminal("DIVIDE"))
- create your non terminals.
expr = parser.add_non_terminal(Cologne.NonTerminal("expr"))
- create your productions.
parser.add_productions(
Cologne.Production( expr, (expr, PLUS, expr) ),
Cologne.Production( expr, (expr, MINUS, expr) ),
Cologne.Production( expr, (expr, TIMES, expr) ),
Cologne.Production( expr, (expr, DIVIDE, expr) ),
Cologne.Production( expr, (NUMBER, ) )
)
- Generate the closures and the parse table.
parser.generate_closures()
parse_table = Cologne.ParseTable(parser)