Exemple #1
0
 def __init__(self):
     StateDescription.__init__(
         self, ConstraintStartState(), _ConstraintDefaultTransition(), [
             TransitionWithoutAction(
                 Configuration(ConstraintStartState(), ' '),
                 Configuration(VariableState(), ''))
         ])
Exemple #2
0
 def __init__(self):
     StateDescription.__init__(
         self, ValueState(), SimpleForwardDefaultTransition(ValueState()), [
             TransitionWithoutAction(Configuration(ValueState(), '\\'),
                                     Configuration(ValueEscapeState(), '')),
             _StringEndTransition()
         ])
Exemple #3
0
 def __init__(self):
     StateDescription.__init__(
         self, VariableEndState(), _InvalidOperatorTransition(), [
             TransitionWithAction(Configuration(VariableEndState(), '='),
                                  Configuration(OperatorState(), ''),
                                  lambda stack: stack.add_level())
         ])
Exemple #4
0
 def __init__(self):
     StateDescription.__init__(
         self, OperatorEndState(), _InvalidValueTransition(), [
             TransitionWithAction(Configuration(OperatorEndState(), '"'),
                                  Configuration(ValueState(), ''),
                                  lambda stack: stack.add_level())
         ])
Exemple #5
0
 def __init__(self):
     StateDescription.__init__(
         self, StartState(), _InvalidStartTransition(), [
             TransitionWithAction(Configuration(StartState(), '"'),
                                  Configuration(MessageState(), ''),
                                  lambda stack: stack.add_level())
         ])
Exemple #6
0
 def __init__(self):
     StateDescription.__init__(
         self, RequiredArgumentState(), _RequiredArgumentDefaultTransition(), [
             TransitionWithAction(Configuration(RequiredArgumentState(), '*'),
                                  Configuration(FreeArgumentState(), ''),
                                  lambda stack: stack.add_level())
         ])
Exemple #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())
         ])
Exemple #8
0
 def __init__(self):
     StateDescription.__init__(
         self, AdviserState(),
         SimpleForwardDefaultTransition(AdviserState()), [
             TransitionWithoutAction(
                 Configuration(AdviserState(), '"'),
                 Configuration(CodeStringState(AdviserState()), '"')),
             _AdviserEndTransition()
         ])
Exemple #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())
         ])
Exemple #10
0
 def __init__(self):
     StateDescription.__init__(
         self, MessageState(),
         SimpleForwardDefaultTransition(MessageState()), [
             TransitionWithoutAction(
                 Configuration(MessageState(), '\\'),
                 Configuration(EscapeState(MessageState()), '')),
             _TransitionFromMessageToCode(),
             _TransitionFromMessageToAccept()
         ])
Exemple #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(), ''))
         ])
Exemple #12
0
 def __init__(self):
     StateDescription.__init__(
         self, PythonState(), SimpleForwardDefaultTransition(PythonState()),
         [
             TransitionWithoutAction(
                 Configuration(PythonState(), '"'),
                 Configuration(CodeStringState(PythonState()), '"')),
             TransitionWithoutAction(
                 Configuration(PythonState(), '}'),
                 Configuration(PythonClosingBraceState(), ''))
         ])
Exemple #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)
Exemple #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)
         ])
Exemple #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[:]
Exemple #16
0
 def __init__(self):
     TransitionWithoutAction.__init__(
         self, Configuration(MemberState(), ')'),
         Configuration(ExpressionEndState(), ''))
Exemple #17
0
 def __init__(self):
     TransitionWithoutAction.__init__(self,
                                      Configuration(MemberState(), '$'),
                                      Configuration(AcceptState(), ''))
Exemple #18
0
 def __init__(self):
     TransitionWithoutAction.__init__(
         self, Configuration(ValueState(), '"'),
         Configuration(ConstraintEndState(), ''))
Exemple #19
0
 def get_output_configuration(
         self, input_configuration: Configuration) -> Configuration:
     output_state = EscapeState(input_configuration.state)
     return Configuration(output_state, '\\')
Exemple #20
0
 def __init__(self):
     TransitionWithoutAction.__init__(self,
                                      Configuration(ArgumentState(), ')'),
                                      Configuration(AcceptState(), ''))
Exemple #21
0
 def __init__(self):
     TransitionWithoutAction.__init__(
         self, Configuration(PythonClosingBraceState(), '}'),
         Configuration(MessageState(), ''))
Exemple #22
0
 def get_output_configuration(
         self, input_configuration: Configuration) -> Configuration:
     return Configuration(AdviserState(), input_configuration.character)
Exemple #23
0
 def get_output_configuration(
         self, input_configuration: Configuration) -> Configuration:
     assert isinstance(input_configuration.state, CodeStringState)
     return Configuration(input_configuration.state.parent_state, '"')
Exemple #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)
Exemple #25
0
 def __init__(self):
     TransitionWithoutAction.__init__(
         self, Configuration(StringState(), '"'),
         Configuration(ExpressionEndState(), ''))
Exemple #26
0
 def __init__(self):
     TransitionWithoutAction.__init__(self,
                                      Configuration(VariableState(), '='),
                                      Configuration(OperatorState(), ''))
Exemple #27
0
 def __init__(self):
     TransitionWithoutAction.__init__(self,
                                      Configuration(MessageState(), '{'),
                                      Configuration(CodeState(), ''))
Exemple #28
0
 def __init__(self):
     TransitionWithoutAction.__init__(self,
                                      Configuration(MessageState(), '"'),
                                      Configuration(AcceptState(), ''))
Exemple #29
0
 def __init__(self):
     StateDescription.__init__(
         self, CodeState(), _CodeDefaultTransition(), [
             TransitionWithoutAction(Configuration(CodeState(), '{'),
                                     Configuration(PythonState(), ''))
         ])
Exemple #30
0
 def __init__(self):
     Transition.__init__(self, Configuration(CodeStringState(None), '\\'))