Ejemplo n.º 1
0
 def __init__(self):
     StateDescription.__init__(
         self, ConstraintStartState(), _ConstraintDefaultTransition(), [
             TransitionWithoutAction(
                 Configuration(ConstraintStartState(), ' '),
                 Configuration(VariableState(), ''))
         ])
Ejemplo n.º 2
0
 def __init__(self):
     StateDescription.__init__(
         self, ValueState(), SimpleForwardDefaultTransition(ValueState()), [
             TransitionWithoutAction(Configuration(ValueState(), '\\'),
                                     Configuration(ValueEscapeState(), '')),
             _StringEndTransition()
         ])
Ejemplo n.º 3
0
 def __init__(self):
     StateDescription.__init__(
         self, VariableEndState(), _InvalidOperatorTransition(), [
             TransitionWithAction(Configuration(VariableEndState(), '='),
                                  Configuration(OperatorState(), ''),
                                  lambda stack: stack.add_level())
         ])
Ejemplo n.º 4
0
 def __init__(self):
     StateDescription.__init__(
         self, OperatorEndState(), _InvalidValueTransition(), [
             TransitionWithAction(Configuration(OperatorEndState(), '"'),
                                  Configuration(ValueState(), ''),
                                  lambda stack: stack.add_level())
         ])
Ejemplo n.º 5
0
 def __init__(self):
     StateDescription.__init__(
         self, StartState(), _InvalidStartTransition(), [
             TransitionWithAction(Configuration(StartState(), '"'),
                                  Configuration(MessageState(), ''),
                                  lambda stack: stack.add_level())
         ])
Ejemplo n.º 6
0
 def __init__(self):
     StateDescription.__init__(
         self, RequiredArgumentState(), _RequiredArgumentDefaultTransition(), [
             TransitionWithAction(Configuration(RequiredArgumentState(), '*'),
                                  Configuration(FreeArgumentState(), ''),
                                  lambda stack: stack.add_level())
         ])
Ejemplo n.º 7
0
 def __init__(self):
     StateDescription.__init__(
         self, ExpressionState(), _ExpressionDefaultTransition(), [
             TransitionWithoutAction(Configuration(ExpressionState(), ' '),
                                     Configuration(ExpressionState(), '')),
             TransitionWithAction(Configuration(ExpressionState(), '"'),
                                  Configuration(StringState(), ''),
                                  lambda stack: stack.add_level())
         ])
Ejemplo n.º 8
0
 def __init__(self):
     StateDescription.__init__(
         self, AdviserState(),
         SimpleForwardDefaultTransition(AdviserState()), [
             TransitionWithoutAction(
                 Configuration(AdviserState(), '"'),
                 Configuration(CodeStringState(AdviserState()), '"')),
             _AdviserEndTransition()
         ])
Ejemplo n.º 9
0
 def __init__(self):
     StateDescription.__init__(
         self, ArgumentStartState(), _ArgumentStartDefaultTransition(), [
             TransitionWithAction(Configuration(ArgumentStartState(), ')'),
                                  Configuration(AcceptState(), ''),
                                  AcceptState.add_function_to_stack),
             TransitionWithAction(Configuration(ArgumentStartState(), '*'),
                                  Configuration(FreeArgumentState(), ''),
                                  lambda stack: stack.add_level())
         ])
Ejemplo n.º 10
0
 def __init__(self):
     StateDescription.__init__(
         self, MessageState(),
         SimpleForwardDefaultTransition(MessageState()), [
             TransitionWithoutAction(
                 Configuration(MessageState(), '\\'),
                 Configuration(EscapeState(MessageState()), '')),
             _TransitionFromMessageToCode(),
             _TransitionFromMessageToAccept()
         ])
Ejemplo n.º 11
0
 def __init__(self):
     StateDescription.__init__(
         self, ConstraintEndState(), _InvalidConstraintTransition(), [
             TransitionWithAction(Configuration(ConstraintEndState(), '&'),
                                  Configuration(ConstraintStartState(), ''),
                                  lambda stack: stack.add_level()),
             TransitionWithoutAction(
                 Configuration(ConstraintEndState(), ' '),
                 Configuration(ConstraintEndState(), ''))
         ])
Ejemplo n.º 12
0
 def __init__(self):
     StateDescription.__init__(
         self, PythonState(), SimpleForwardDefaultTransition(PythonState()),
         [
             TransitionWithoutAction(
                 Configuration(PythonState(), '"'),
                 Configuration(CodeStringState(PythonState()), '"')),
             TransitionWithoutAction(
                 Configuration(PythonState(), '}'),
                 Configuration(PythonClosingBraceState(), ''))
         ])
Ejemplo n.º 13
0
 def get_output_configuration(
         self, input_configuration: Configuration) -> Configuration:
     if not input_configuration.character.isalpha(
     ) and input_configuration.character != '_':
         raise ParsingError(
             f'Non-alpha character "{input_configuration.character}" detected.'
         )
     return Configuration(ArgumentState(), input_configuration.character)
Ejemplo n.º 14
0
 def __init__(self):
     StateDescription.__init__(
         self, ExpressionEndState(), _ExpressionEndDefaultTransition(), [
             TransitionWithoutAction(
                 Configuration(ExpressionEndState(), ' '),
                 Configuration(ExpressionEndState(), '')),
             TransitionWithAction(Configuration(ExpressionEndState(), '$'),
                                  Configuration(AcceptState(), ''),
                                  AcceptState.check_stack),
             TransitionWithoutAction(
                 Configuration(ExpressionEndState(), ','),
                 Configuration(ExpressionState(), '')),
             _ConversionFromVariableToFunctionName(),
             TransitionWithAction(Configuration(ExpressionEndState(), ')'),
                                  Configuration(ExpressionEndState(), ''),
                                  ExpressionEndState.add_function_to_stack)
         ])
Ejemplo n.º 15
0
    def parse(self, input_tape: str) -> List[object]:
        self.stack.clear()
        current_state = self.start_state
        input_tape_index = 0

        for input_char in input_tape:
            try:
                configuration = Configuration(current_state, input_char)
                transition = self._find_transition(configuration)
                current_state = self._apply_transition(transition, configuration)
                input_tape_index += 1
            except ParsingError as error:
                print('State:', current_state.name)
                print('Index:', input_tape_index)
                print('Original Input:', input_tape)
                raise error

        if current_state not in self.accept_states:
            print('State:', current_state.name)
            raise ParsingError(f'Parser was not in a final state after the input tape was read.')

        return self.stack.data_stack[:]
Ejemplo n.º 16
0
 def __init__(self):
     TransitionWithoutAction.__init__(
         self, Configuration(MemberState(), ')'),
         Configuration(ExpressionEndState(), ''))
Ejemplo n.º 17
0
 def __init__(self):
     TransitionWithoutAction.__init__(self,
                                      Configuration(MemberState(), '$'),
                                      Configuration(AcceptState(), ''))
Ejemplo n.º 18
0
 def __init__(self):
     TransitionWithoutAction.__init__(
         self, Configuration(ValueState(), '"'),
         Configuration(ConstraintEndState(), ''))
Ejemplo n.º 19
0
 def get_output_configuration(
         self, input_configuration: Configuration) -> Configuration:
     output_state = EscapeState(input_configuration.state)
     return Configuration(output_state, '\\')
Ejemplo n.º 20
0
 def __init__(self):
     TransitionWithoutAction.__init__(self,
                                      Configuration(ArgumentState(), ')'),
                                      Configuration(AcceptState(), ''))
Ejemplo n.º 21
0
 def __init__(self):
     TransitionWithoutAction.__init__(
         self, Configuration(PythonClosingBraceState(), '}'),
         Configuration(MessageState(), ''))
Ejemplo n.º 22
0
 def get_output_configuration(
         self, input_configuration: Configuration) -> Configuration:
     return Configuration(AdviserState(), input_configuration.character)
Ejemplo n.º 23
0
 def get_output_configuration(
         self, input_configuration: Configuration) -> Configuration:
     assert isinstance(input_configuration.state, CodeStringState)
     return Configuration(input_configuration.state.parent_state, '"')
Ejemplo n.º 24
0
 def get_output_configuration(
         self, input_configuration: Configuration) -> Configuration:
     assert isinstance(input_configuration.state, EscapeState)
     return Configuration(input_configuration.state.parent_state,
                          input_configuration.character)
Ejemplo n.º 25
0
 def __init__(self):
     TransitionWithoutAction.__init__(
         self, Configuration(StringState(), '"'),
         Configuration(ExpressionEndState(), ''))
Ejemplo n.º 26
0
 def __init__(self):
     TransitionWithoutAction.__init__(self,
                                      Configuration(VariableState(), '='),
                                      Configuration(OperatorState(), ''))
Ejemplo n.º 27
0
 def __init__(self):
     TransitionWithoutAction.__init__(self,
                                      Configuration(MessageState(), '{'),
                                      Configuration(CodeState(), ''))
Ejemplo n.º 28
0
 def __init__(self):
     TransitionWithoutAction.__init__(self,
                                      Configuration(MessageState(), '"'),
                                      Configuration(AcceptState(), ''))
Ejemplo n.º 29
0
 def __init__(self):
     StateDescription.__init__(
         self, CodeState(), _CodeDefaultTransition(), [
             TransitionWithoutAction(Configuration(CodeState(), '{'),
                                     Configuration(PythonState(), ''))
         ])
Ejemplo n.º 30
0
 def __init__(self):
     Transition.__init__(self, Configuration(CodeStringState(None), '\\'))