Commit 957dcbf0 authored by Wander Lairson Costa's avatar Wander Lairson Costa Committed by Gabriele Monaco
Browse files

rv/rvgen: enforce presence of initial state



The __get_state_variables() method parses DOT files to identify the
automaton's initial state. If the input file lacks a node with the
required initialization prefix, the initial_state variable is referenced
before assignment, causing an UnboundLocalError or a generic error
during the state removal step.

Initialize the variable explicitly and validate that a start node was
found after parsing. Raise a descriptive AutomataError if the definition
is missing to improve debugging and ensure the automaton is valid.

Signed-off-by: default avatarWander Lairson Costa <wander@redhat.com>
Reviewed-by: default avatarGabriele Monaco <gmonaco@redhat.com>
Link: https://lore.kernel.org/r/20260223162407.147003-18-wander@redhat.com


Signed-off-by: default avatarGabriele Monaco <gmonaco@redhat.com>
parent 2074723f
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -145,6 +145,7 @@ class Automata:
        # wait for node declaration
        states = []
        final_states = []
        initial_state = ""

        has_final_states = False
        cursor = self.__get_cursor_begin_states()
@@ -171,6 +172,9 @@ class Automata:
                    final_states.append(state)
                    has_final_states = True

        if not initial_state:
            raise AutomataError("The automaton doesn't have an initial state")

        states = sorted(set(states))
        states.remove(initial_state)