示例#1
0
    def _matcher_sed(self) -> SyntaxElementDescription:
        mandatory_empty_arg = a.Single(a.Multiplicity.MANDATORY,
                                       a.Constant(EMPTY_ARGUMENT))
        quantifier_arg = a.Choice(a.Multiplicity.MANDATORY,
                                  [
                                      a.Constant(
                                          instruction_arguments.EXISTS_QUANTIFIER_ARGUMENT),
                                      a.Constant(
                                          instruction_arguments.ALL_QUANTIFIER_ARGUMENT),
                                  ])
        equals_arg = a.Single(a.Multiplicity.MANDATORY,
                              a.Constant(
                                  matcher_options.EQUALS_ARGUMENT))

        line_arg = a.Single(a.Multiplicity.MANDATORY,
                            a.Constant(matcher_options.LINE_ARGUMENT))

        quantifier_separator_arg = a.Single(a.Multiplicity.MANDATORY,
                                            a.Constant(instruction_arguments.QUANTIFICATION_SEPARATOR_ARGUMENT))

        line_matcher_arg = a.Single(a.Multiplicity.MANDATORY,
                                    instruction_arguments.LINE_MATCHER)
        num_lines_arg = a.Single(a.Multiplicity.MANDATORY,
                                 a.Constant(matcher_options.NUM_LINES_ARGUMENT))

        symbol_argument = a.Single(a.Multiplicity.MANDATORY,
                                   syntax_elements.SYMBOL_NAME_SYNTAX_ELEMENT.argument)

        return SyntaxElementDescription(
            self.matcher_element_name,
            [],
            [
                invokation_variant_from_args([mandatory_empty_arg],
                                             self._parser.fnap(_DESCRIPTION_OF_EMPTY)),

                invokation_variant_from_args([equals_arg,
                                              self.string_or_here_doc_or_file_arg.argument_usage(
                                                  a.Multiplicity.MANDATORY),
                                              ],
                                             self._parser.fnap(_DESCRIPTION_OF_EQUALS_STRING)),

                self._matches_regex_invokation_variant(),

                invokation_variant_from_args([num_lines_arg,
                                              syntax_elements.INTEGER_COMPARISON_SYNTAX_ELEMENT.single_mandatory,
                                              ],
                                             self._parser.fnap(_DESCRIPTION_OF_NUM_LINES)),

                invokation_variant_from_args([quantifier_arg,
                                              line_arg,
                                              quantifier_separator_arg,
                                              line_matcher_arg,
                                              ],
                                             self._parser.fnap(_DESCRIPTION_OF_LINE_MATCHES)),

                invokation_variant_from_args([symbol_argument],
                                             self._parser.fnap(_SYMBOL_REF_DESCRIPTION)),

            ])
示例#2
0
 def invokation_variants(self) -> List[InvokationVariant]:
     primitive_arg = a.single_mandatory(a.Named(self._primitive_name))
     return [
         invokation_variant_from_args([primitive_arg]),
         invokation_variant_from_args([
             a.single_mandatory(a.Constant('(')),
             primitive_arg,
             a.single_mandatory(a.Constant(')')),
         ]),
     ]
 def invokation_variants__stdout_err(self, program_option: a.OptionName) -> List[InvokationVariant]:
     return [
         invokation_variant_from_args(
             file_contents_checker_arguments__non_program(),
             self._tp.fnap(_MAIN_INVOKATION__STDOUT_ERR_ACTION_TO_CHECK__SYNTAX_DESCRIPTION)
         ),
         invokation_variant_from_args(
             file_contents_checker_arguments__program(program_option),
             self._tp.fnap(_MAIN_INVOKATION__STDOUT_ERR_PROGRAM__SYNTAX_DESCRIPTION)
         ),
     ]
示例#4
0
def _file_condition_sed() -> SyntaxElementDescription:
    return SyntaxElementDescription(
        _FILE_CONDITION, _TP.fnap(_FILE_CONDITION_DESCRIPTION_REST), [
            invokation_variant_from_args([
                syntax.FILE_NAME__ARG,
            ]),
            invokation_variant_from_args([
                syntax.FILE_NAME__ARG,
                a.Single(a.Multiplicity.MANDATORY,
                         a.Constant(syntax.FILE_MATCHER_SEPARATOR)),
                syntax_elements.FILE_MATCHER_SYNTAX_ELEMENT.single_mandatory,
            ], _TP.fnap(_FILE_NAME_WITH_MATCHER_DESCRIPTION_REST)),
        ])
示例#5
0
 def invokation_variants(self) -> List[InvokationVariant]:
     arguments = path_syntax.mandatory_path_with_optional_relativity(
         _DST_PATH_ARGUMENT,
         REL_OPT_ARG_CONF.path_suffix_is_required)
     contents_arg = a.Single(a.Multiplicity.MANDATORY,
                             a.Named(CONTENTS_ARGUMENT))
     assignment_arg = a.Single(a.Multiplicity.MANDATORY,
                               a.Constant(CONTENTS_ASSIGNMENT_TOKEN))
     return [
         invokation_variant_from_args(arguments,
                                      docs.paras('Creates an empty file.')),
         invokation_variant_from_args(arguments + [assignment_arg, contents_arg],
                                      self._tp.paras('Creates a file with contents given by {CONTENTS}.')),
     ]
示例#6
0
 def invokation_variants(self) -> List[InvokationVariant]:
     shell_cmd_arg = a.Single(a.Multiplicity.MANDATORY,
                              syntax_elements.SHELL_COMMAND_LINE_SYNTAX_ELEMENT.argument)
     return [
         invokation_variant_from_args([MANDATORY_EQ_ARG,
                                       shell_cmd_arg]),
     ]
示例#7
0
 def _command_line_invokation_variants(self) -> List[InvokationVariant]:
     command_line_actor_arg = a.Single(a.Multiplicity.MANDATORY,
                                       a.Option(COMMAND_LINE_ACTOR_OPTION_NAME))
     return [
         invokation_variant_from_args([MANDATORY_EQ_ARG, command_line_actor_arg],
                                      self._description_of_command_line()),
     ]
示例#8
0
 def _specific_invocation_invokation_variants(self) -> List[syntax_contents_structure.InvokationVariant]:
     return [
         syntax_contents_structure.invokation_variant_from_args([
             a.Single(a.Multiplicity.MANDATORY, a.Option(OUTPUT_FROM_PROGRAM_OPTION_NAME)),
             a.Single(a.Multiplicity.MANDATORY, syntax_elements.PROGRAM_SYNTAX_ELEMENT.argument),
         ]),
     ]
示例#9
0
 def invokation_variants(self) -> List[InvokationVariant]:
     return [
         invokation_variant_from_args([
             syntax_elements.STRING_SYNTAX_ELEMENT.single_mandatory,
             syntax_elements.PROGRAM_ARGUMENT_SYNTAX_ELEMENT.zero_or_more,
         ], []),
     ]
示例#10
0
 def invokation_variants(self) -> List[InvokationVariant]:
     return [
         invokation_variant_from_args([
             a.Single(a.Multiplicity.MANDATORY,
                      self.command_arg)],
             []),
     ]
示例#11
0
 def _sym_ref() -> InvokationVariant:
     return invokation_variant_from_args([
         a.Single(a.Multiplicity.MANDATORY,
                  a.Constant(pgm_syntax_elements.SYMBOL_REF_PROGRAM_TOKEN)),
         a.Single(a.Multiplicity.MANDATORY,
                  syntax_elements.SYMBOL_NAME_SYNTAX_ELEMENT.argument),
     ], _TEXT_PARSER.fnap(_SYM_REF_PROGRAM_DESCRIPTION))
示例#12
0
 def invokation_variants(self) -> List[InvokationVariant]:
     return [
         invokation_variant_from_args([
             a.Single(a.Multiplicity.MANDATORY, self._pgm_and_args.element),
             a.Single(a.Multiplicity.OPTIONAL, instruction_arguments.STRING_TRANSFORMATION_ARGUMENT),
         ]),
     ]
示例#13
0
 def invokation_variants(self) -> List[InvokationVariant]:
     return [
         invokation_variant_from_args([
             negation_of_predicate.optional_negation_argument_usage(),
             syntax_elements.INTEGER_COMPARISON_SYNTAX_ELEMENT.single_mandatory,
         ]),
     ]
示例#14
0
 def invokation_variants(self) -> List[InvokationVariant]:
     return [
         invokation_variant_from_args([
             a.Single(a.Multiplicity.OPTIONAL,
                      _DIR_ARGUMENT),
         ]),
     ]
示例#15
0
 def invokation_variants(self) -> List[InvokationVariant]:
     return [
         invokation_variant_from_args([
             a.Single(a.Multiplicity.MANDATORY,
                      _DIR_ARGUMENT),
         ]),
     ]
示例#16
0
 def invokation_variants(self) -> List[InvokationVariant]:
     arguments = path_syntax.mandatory_path_with_optional_relativity(
         _PATH_ARGUMENT,
         RELATIVITY_VARIANTS.path_suffix_is_required)
     return [
         invokation_variant_from_args(arguments,
                                      []),
     ]
示例#17
0
 def _exe_file() -> InvokationVariant:
     return invokation_variant_from_args(
         [
             a.Single(a.Multiplicity.MANDATORY,
                      instruction_arguments.PATH_ARGUMENT)
         ],
         _TEXT_PARSER.fnap(_EXE_FILE_DESCRIPTION)
     )
示例#18
0
 def invokation_variant_of(
         operator_name: str,
         syntax: OperatorDescription) -> InvokationVariant:
     operator_argument = a.Single(a.Multiplicity.MANDATORY,
                                  a.Constant(operator_name))
     all_arguments = [operator_argument, self.concept_argument]
     return invokation_variant_from_args(all_arguments,
                                         syntax.description_rest)
 def invokation_variants__file(self, actual_file: a.Named) -> List[InvokationVariant]:
     actual_file_arg = a.Single(a.Multiplicity.MANDATORY,
                                actual_file)
     return [
         invokation_variant_from_args(
             [actual_file_arg] + file_contents_checker_arguments__non_program(),
             self._tp.fnap(_MAIN_INVOKATION__FILE__SYNTAX_DESCRIPTION)),
     ]
示例#20
0
 def _python() -> InvokationVariant:
     return invokation_variant_from_args(
         [
             a.Single(a.Multiplicity.MANDATORY,
                      a.Option(pgm_syntax_elements.PYTHON_EXECUTABLE_OPTION_NAME))
         ],
         _TEXT_PARSER.fnap(_PYTHON_EXECUTABLE_DESCRIPTION)
     )
示例#21
0
 def _invokation_variants_parentheses(self) -> List[InvokationVariant]:
     arguments = [
         a.Single(a.Multiplicity.MANDATORY, a.Constant('(')),
         self.concept_argument,
         a.Single(a.Multiplicity.MANDATORY, a.Constant(')')),
     ]
     iv = invokation_variant_from_args(arguments)
     return [iv]
示例#22
0
def text_until_end_of_line() -> InvokationVariant:
    return invokation_variant_from_args([
        a.Single(
            a.Multiplicity.MANDATORY,
            a.Constant(pgm_syntax_elements.
                       REMAINING_PART_OF_CURRENT_LINE_AS_LITERAL_MARKER)),
        a.Single(a.Multiplicity.MANDATORY, TEXT_UNTIL_END_OF_LINE_ARGUMENT)
    ], _TEXT_PARSER.fnap(_TEXT_UNTIL_END_OF_LINE_DESCRIPTION))
示例#23
0
 def _interpreter_actor_invokation_variant(
         self, actor_w_interpreter: SingularNameAndCrossReferenceId,
         cli_option: a.Single) -> InvokationVariant:
     return invokation_variant_from_args([
         MANDATORY_EQ_ARG,
         cli_option,
         syntax_elements.ACT_INTERPRETER_SYNTAX_ELEMENT.single_mandatory,
     ], self._description_of_actor_with_interpreter(actor_w_interpreter))
示例#24
0
 def _exe_file() -> InvokationVariant:
     return invokation_variant_from_args(
         [syntax_elements.PATH_SYNTAX_ELEMENT.single_mandatory],
         rel_path_doc.path_element_relativity_paragraphs(
             path_relativities.REL_OPTIONS_CONFIGURATION,
             _TEXT_PARSER.paras(the_path_of('{executable_file:a}.')),
             _TEXT_PARSER.fnap(_DIFFERENT_RELATIVITIES_FOR_PROGRAM_ACTOR),
         ))
 def invokation_variants(self) -> List[InvokationVariant]:
     executable_arg = a.Single(a.Multiplicity.MANDATORY, self.file)
     return [
         invokation_variant_from_args([
             executable_arg,
             syntax_elements.PROGRAM_ARGUMENT_SYNTAX_ELEMENT.zero_or_more,
         ]),
     ]
示例#26
0
 def _pgm_for_arg_list_variant(self) -> InvokationVariant:
     return invokation_variant_from_args(
         [
             a.single_mandatory(self._pgm_for_arg_list.element),
             syntax_elements.PROGRAM_ARGUMENT_SYNTAX_ELEMENT.zero_or_more,
         ],
         self._pgm_for_arg_list_variant_description(),
     )
示例#27
0
def python_interpreter(arguments: List[a.ArgumentUsage]) -> InvokationVariant:
    return invokation_variant_from_args(
        [
            a.Single(a.Multiplicity.MANDATORY,
                     a.Option(pgm_syntax_elements.PYTHON_EXECUTABLE_OPTION_NAME))
        ] +
        arguments,
        _TEXT_PARSER.fnap(_PYTHON_INTERPRETER_DESCRIPTION)
    )
示例#28
0
 def invokation_variants(self) -> Sequence[InvokationVariant]:
     return [
         invokation_variant_from_args([
             a.Single(a.Multiplicity.MANDATORY,
                      a.Constant(
                          instruction_arguments.ASSIGNMENT_OPERATOR)),
             syntax_elements.STRING_SOURCE_SYNTAX_ELEMENT.single_mandatory,
         ]),
     ]
示例#29
0
 def invokation_variants(self) -> List[InvokationVariant]:
     return [
         invokation_variant_from_args([
             a.Single(a.Multiplicity.MANDATORY,
                      self._src_rel_opt_arg_conf.argument),
             a.Single(a.Multiplicity.OPTIONAL,
                      REL_OPTION_ARG_CONF_FOR_DESTINATION.argument)]
         ),
     ]
示例#30
0
 def invokation_variants(self) -> List[InvokationVariant]:
     return [
         invokation_variant_from_args([
             a.Single(a.Multiplicity.MANDATORY,
                      instruction_arguments.SOURCE_PATH_ARGUMENT),
             a.Single(a.Multiplicity.OPTIONAL,
                      instruction_arguments.DESTINATION_PATH_ARGUMENT)]
         ),
     ]
示例#31
0
文件: doc.py 项目: emilkarlen/exactly
 def _name_sed(self) -> SyntaxElementDescription:
     return SyntaxElementDescription(
         defs.VAR_NAME_ELEMENT,
         (),
         [
             invokation_variant_from_args(
                 [syntax_elements.STRING_SYNTAX_ELEMENT.single_mandatory])
         ],
     )
示例#32
0
 def invokation_variants(self) -> List[InvokationVariant]:
     return [
         invokation_variant_from_args([
             a.single_mandatory(self._pgm_and_args.element),
             a.Single(a.Multiplicity.OPTIONAL, _STDIN_ARGUMENT),
             a.Single(a.Multiplicity.OPTIONAL,
                      a.Named(_OUTPUT_TRANSFORMATION)),
         ]),
     ]
示例#33
0
 def _transformation_sed(self) -> SyntaxElementDescription:
     return cli_argument_syntax_element_description(
         instruction_arguments.STRING_TRANSFORMATION_ARGUMENT,
         _TEXT_PARSER.fnap(_TRANSFORMATION_DESCRIPTION),
         [
             invokation_variant_from_args([a.Single(a.Multiplicity.MANDATORY,
                                                    instruction_arguments.TRANSFORMATION_OPTION)]),
         ]
     )
示例#34
0
文件: run.py 项目: emilkarlen/exactly
 def invokation_variants(self) -> List[InvokationVariant]:
     return [
         invokation_variant_from_args([
             a.Single(a.Multiplicity.OPTIONAL,
                      a.Option(IGNORE_EXIT_CODE_OPTION_NAME)),
             a.Single(a.Multiplicity.MANDATORY,
                      syntax_elements.PROGRAM_SYNTAX_ELEMENT.argument),
         ]),
     ]
示例#35
0
def _constant_sed(name: str) -> SyntaxElementDescription:
    return SyntaxElementDescription(name, _TP.fnap(_LITERAL__HEADER), [
        invokation_variant_from_args([
            a.Single(a.Multiplicity.MANDATORY, a.Constant(
                syntax.LITERAL_BEGIN)),
            a.Single(a.Multiplicity.ONE_OR_MORE, a.Named(_FILE_CONDITION)),
            a.Single(a.Multiplicity.MANDATORY, a.Constant(syntax.LITERAL_END)),
        ], _TP.fnap(_LITERAL__DESCRIPTION_REST)),
    ])
示例#36
0
 def _text_until_end_of_line() -> InvokationVariant:
     return invokation_variant_from_args([
         a.Single(a.Multiplicity.MANDATORY,
                  a.Constant(pgm_syntax_elements.REMAINING_PART_OF_CURRENT_LINE_AS_LITERAL_MARKER)),
         a.Single(a.Multiplicity.MANDATORY,
                  instruction_arguments.TEXT_UNTIL_END_OF_LINE_ARGUMENT)
     ],
         _TEXT_PARSER.fnap(_ARGUMENT__TEXT_UNTIL_END_OF_LINE_DESCRIPTION)
     )
示例#37
0
 def _existing_file() -> InvokationVariant:
     return invokation_variant_from_args([
         a.Single(a.Multiplicity.MANDATORY,
                  a.Option(pgm_syntax_elements.EXISTING_FILE_OPTION_NAME)),
         a.Single(a.Multiplicity.MANDATORY,
                  PATH_OF_EXISTING_FILE_OPT_CONFIG.argument)
     ],
         _TEXT_PARSER.fnap(_ARGUMENT__EXISTING_FILE_DESCRIPTION)
     )
示例#38
0
    def invokation_variants(self) -> List[InvokationVariant]:
        optional_transformation_option = a.Single(
            a.Multiplicity.OPTIONAL,
            string_transformer.STRING_TRANSFORMATION_ARGUMENT)

        program_token = syntax_elements.PROGRAM_SYNTAX_ELEMENT.single_mandatory
        output_channel_token = a.Choice.of_single_argument_choices(
            a.Multiplicity.MANDATORY, [
                a.Option(option_name)
                for option_name in defs.PROGRAM_OUTPUT_OPTIONS.values()
            ])

        ignore_exit_code_token = a.Single(a.Multiplicity.OPTIONAL,
                                          a.Option(defs.IGNORE_EXIT_CODE))

        file_option = a.Single(a.Multiplicity.MANDATORY,
                               a.Option(defs.FILE_OPTION))

        src_file_arg = a.Single(a.Multiplicity.MANDATORY,
                                defs.SOURCE_FILE_ARGUMENT_NAME)

        return [
            invokation_variant_from_args(
                [
                    syntax_elements.SYMBOL_REFERENCE_SYNTAX_ELEMENT.
                    single_mandatory, optional_transformation_option
                ],
                self._tp.fnap(_REFERENCE_DESCRIPTION),
            ),
            invokation_variant_from_args([
                syntax_elements.RICH_STRING_SYNTAX_ELEMENT.single_mandatory,
                optional_transformation_option
            ]),
            invokation_variant_from_args([
                file_option,
                src_file_arg,
                optional_transformation_option,
            ], self._tp.fnap(_FILE_DESCRIPTION)),
            invokation_variant_from_args(
                [output_channel_token, ignore_exit_code_token, program_token],
                self._tp.fnap(_PROGRAM_DESCRIPTION) + texts.
                run_description__with_ignored_exit_code_option__w_str_trans()),
        ]
示例#39
0
文件: doc.py 项目: emilkarlen/exactly
 def _phase_spec_sed(self) -> SyntaxElementDescription:
     phase_spec__act = a.Option(defs.PHASE_SPEC__OPTION_NAME,
                                defs.PHASE_SPEC__ACT)
     phase_spec__non_act = a.Option(defs.PHASE_SPEC__OPTION_NAME,
                                    defs.PHASE_SPEC__NON_ACT)
     return SyntaxElementDescription(
         defs.PHASE_SPEC_ELEMENT,
         invokation_variants=[
             invokation_variant_from_args(
                 [a.Single(a.Multiplicity.MANDATORY, phase_spec__act)],
                 self._tp.fnap(_DESCRIPTION__PHASE_SPEC__ACT),
             ),
             invokation_variant_from_args(
                 [a.Single(a.Multiplicity.MANDATORY, phase_spec__non_act)],
                 self._tp.fnap(_DESCRIPTION__PHASE_SPEC__NON_ACT),
             ),
         ],
         before_invokation_variants=(),
     )
示例#40
0
 def invokation_variants(self) -> List[InvokationVariant]:
     actual_file_arg = a.Single(a.Multiplicity.MANDATORY,
                                self.actual_file_arg)
     return [
         invokation_variant_from_args([
             actual_file_arg,
             common_arguments.RESERVED_WORD__COLON,
             syntax_elements.STRING_MATCHER_SYNTAX_ELEMENT.single_mandatory,
         ], self._tp.fnap(_MAIN_INVOKATION__FILE__SYNTAX_DESCRIPTION)),
     ]
示例#41
0
def _file_name_sed() -> SyntaxElementDescription:
    return SyntaxElementDescription(
        syntax.FILE_NAME.name,
        (),
        [
            invokation_variant_from_args(
                [syntax_elements.STRING_SYNTAX_ELEMENT.single_mandatory])
        ],
        _TP.fnap(_FILE_NAME_DESCRIPTION_REST),
    )
示例#42
0
def _here_doc() -> InvokationVariant:
    return invokation_variant_from_args([
        a.Single(
            a.Multiplicity.MANDATORY,
            a.Constant(string.HERE_DOCUMENT_MARKER_PREFIX +
                       _HERE_DOC_SYNTAX_MARKER)),
        a.Single(a.Multiplicity.ZERO_OR_MORE, a.Named(_HERE_DOC_LINE)),
        a.Single(a.Multiplicity.MANDATORY,
                 a.Constant(_HERE_DOC_SYNTAX_MARKER)),
    ], _TEXT_PARSER.fnap(_DESCRIPTION__HERE_DOC))
示例#43
0
def _existing_path(option: a.OptionName,
                   description_rest: str) -> InvokationVariant:
    return invokation_variant_from_args([
        a.Single(a.Multiplicity.MANDATORY,
                 a.Option(option)),
        a.Single(a.Multiplicity.MANDATORY,
                 PATH_OF_EXISTING_FILE_OPT_CONFIG.argument)
    ],
        _TEXT_PARSER.fnap(description_rest)
    )
示例#44
0
 def syntax_elements(self) -> Sequence[SyntaxElementDescription]:
     from exactly_lib.definitions.primitives import file_matcher
     return [
         SyntaxElementDescription(
             self._ARG_POS.name,
             self._tp().fnap(_PATH_ARG_POS__DESCRIPTION), [
                 invokation_variant_from_args(
                     [
                         a.Single(a.Multiplicity.MANDATORY,
                                  file_matcher.PROGRAM_ARG_OPTION__LAST)
                     ],
                     self._tp().fnap(_PATH_ARG_POS__LAST__DESCRIPTION)),
                 invokation_variant_from_args(
                     [
                         a.Single(a.Multiplicity.MANDATORY,
                                  file_matcher.PROGRAM_ARG_OPTION__MARKER)
                     ],
                     self._tp().fnap(_PATH_ARG_POS__MARKER__DESCRIPTION)),
             ])
     ]
示例#45
0
    def _matches_regex_invokation_variant(self) -> InvokationVariant:
        matches_regex_arg = a.Single(a.Multiplicity.MANDATORY,
                                     a.Constant(
                                         matcher_options.MATCHES_ARGUMENT))

        return invokation_variant_from_args([matches_regex_arg,
                                             a.Single(a.Multiplicity.OPTIONAL,
                                                      a.Option(matcher_options.FULL_MATCH_ARGUMENT_OPTION)),
                                             syntax_elements.REGEX_SYNTAX_ELEMENT.single_mandatory,
                                             ],
                                            self._parser.fnap(_DESCRIPTION_OF_MATCHES_REGEX))
示例#46
0
文件: doc.py 项目: emilkarlen/exactly
 def invokation_variants(self) -> Sequence[InvokationVariant]:
     phase_spec_args = self._phase_spec_args()
     name = a.Single(a.Multiplicity.MANDATORY,
                     a.Named(defs.VAR_NAME_ELEMENT))
     value = a.Single(a.Multiplicity.MANDATORY,
                      a.Named(defs.VAR_VALUE_ELEMENT))
     assignment = a.Single(a.Multiplicity.MANDATORY,
                           a.Constant(defs.ASSIGNMENT_IDENTIFIER))
     unset_kw = a.Single(a.Multiplicity.MANDATORY,
                         a.Constant(defs.UNSET_IDENTIFIER))
     return [
         invokation_variant_from_args(
             phase_spec_args + [name, assignment, value],
             self._tp.fnap(_DESCRIPTION_OF_SET),
         ),
         invokation_variant_from_args(
             phase_spec_args + [unset_kw, name],
             self._tp.fnap(_DESCRIPTION_OF_UNSET),
         ),
     ]
示例#47
0
def _file_list_sed(name: str) -> SyntaxElementDescription:
    return SyntaxElementDescription(name, (), [
        invokation_variant_from_args([
            a.Single(a.Multiplicity.MANDATORY,
                     a.Constant(syntax.FILE_LIST_BEGIN)),
            a.Single(a.Multiplicity.ONE_OR_MORE,
                     a.Named(syntax.FILE_SPEC__SE_STR)),
            a.Single(a.Multiplicity.MANDATORY, a.Constant(
                syntax.FILE_LIST_END)),
        ], _TP.fnap(_FILE_LIST__DESCRIPTION_REST)),
    ])
示例#48
0
 def _sym_ref() -> InvokationVariant:
     return invokation_variant_from_args(
         [
             a.Single(a.Multiplicity.MANDATORY,
                      a.Constant(pgm_syntax_elements.SYMBOL_REF_PROGRAM_TOKEN)
                      ),
             a.Single(a.Multiplicity.MANDATORY,
                      syntax_elements.SYMBOL_NAME_SYNTAX_ELEMENT.argument
                      ),
         ],
         _TEXT_PARSER.fnap(_SYM_REF_PROGRAM_DESCRIPTION)
     )
示例#49
0
 def _system_program() -> InvokationVariant:
     return invokation_variant_from_args(
         [
             a.Single(a.Multiplicity.MANDATORY,
                      a.Constant(pgm_syntax_elements.SYSTEM_PROGRAM_TOKEN)
                      ),
             a.Single(a.Multiplicity.MANDATORY,
                      syntax_elements.STRING_SYNTAX_ELEMENT.argument
                      ),
         ],
         _TEXT_PARSER.fnap(_SYSTEM_PROGRAM_DESCRIPTION)
     )
示例#50
0
    def _interpreter_actor_invokation_variants(self,
                                               actor: SingularNameAndCrossReferenceId,
                                               cli_option: a.Single) -> List[InvokationVariant]:
        shell_interpreter_argument = a.Single(a.Multiplicity.MANDATORY,
                                              a.Constant(SHELL_COMMAND_INTERPRETER_ACTOR_KEYWORD))
        command_argument = a.Single(a.Multiplicity.MANDATORY, self.command_line_syntax.command)
        executable_arg = a.Single(a.Multiplicity.MANDATORY, self.command_line_syntax.executable)
        optional_arguments_arg = a.Single(a.Multiplicity.ZERO_OR_MORE, self.command_line_syntax.argument)
        return [
            invokation_variant_from_args([MANDATORY_EQ_ARG,
                                          cli_option,
                                          executable_arg,
                                          optional_arguments_arg],
                                         self._description_of_executable_program_interpreter(actor)),
            invokation_variant_from_args([MANDATORY_EQ_ARG,
                                          cli_option,
                                          shell_interpreter_argument,
                                          command_argument],
                                         self._description_of_shell_command_interpreter(actor)),

        ]
示例#51
0
def system_program(arguments: List[a.ArgumentUsage]) -> InvokationVariant:
    return invokation_variant_from_args(
        [
            a.Single(a.Multiplicity.MANDATORY,
                     a.Constant(pgm_syntax_elements.SYSTEM_PROGRAM_TOKEN)
                     ),
            a.Single(a.Multiplicity.MANDATORY,
                     syntax_elements.STRING_SYNTAX_ELEMENT.argument
                     ),
        ] + arguments,
        _TEXT_PARSER.paras(misc_texts.SYSTEM_PROGRAM_DESCRIPTION)
    )
示例#52
0
    def invokation_variants(self) -> List[InvokationVariant]:
        matcher_arg = a.Single(a.Multiplicity.MANDATORY,
                               a.Named(self.matcher_element_name))

        optional_transformation_option = a.Single(a.Multiplicity.OPTIONAL,
                                                  instruction_arguments.STRING_TRANSFORMATION_ARGUMENT)
        return [
            invokation_variant_from_args([
                optional_transformation_option,
                negation_of_predicate.optional_negation_argument_usage(),
                matcher_arg,
            ])
        ]
示例#53
0
    def invokation_variants(self) -> List[InvokationVariant]:
        negation_arguments = [negation_of_predicate.optional_negation_argument_usage()]
        path_arguments = path_syntax.mandatory_path_with_optional_relativity(
            _PATH_ARGUMENT,
            _REL_OPTION_CONFIG.path_suffix_is_required)
        file_matcher_arguments = [a.Single(a.Multiplicity.OPTIONAL, self.PROPERTIES)]

        return [
            invokation_variant_from_args(negation_arguments +
                                         path_arguments +
                                         file_matcher_arguments,
                                         []),
        ]
示例#54
0
    def _file_contents_sed(self) -> SyntaxElementDescription:
        optional_transformation_option = a.Single(a.Multiplicity.OPTIONAL,
                                                  instruction_arguments.STRING_TRANSFORMATION_ARGUMENT)

        here_doc_arg = a.Single(a.Multiplicity.MANDATORY,
                                instruction_arguments.HERE_DOCUMENT)

        string_arg = a.Single(a.Multiplicity.MANDATORY,
                              instruction_arguments.STRING)

        program_token = a.Single(a.Multiplicity.MANDATORY,
                                 syntax_elements.PROGRAM_SYNTAX_ELEMENT.argument)

        output_channel_token = a.Choice(a.Multiplicity.MANDATORY,
                                        [a.Option(option_name) for option_name in PROGRAM_OUTPUT_OPTIONS.values()])

        file_option = a.Single(a.Multiplicity.MANDATORY,
                               a.Option(FILE_OPTION))

        src_file_arg = a.Single(a.Multiplicity.MANDATORY,
                                _SRC_PATH_ARGUMENT)

        invokation_variants = [
            invokation_variant_from_args([string_arg]),
            invokation_variant_from_args([here_doc_arg]),
            invokation_variant_from_args([file_option,
                                          src_file_arg,
                                          optional_transformation_option,
                                          ],
                                         self._tp.fnap(_FILE_DESCRIPTION)),
            invokation_variant_from_args([output_channel_token,
                                          program_token],
                                         self._tp.fnap(_PROGRAM_DESCRIPTION)),
        ]
        return SyntaxElementDescription(self._contents_argument_sed,
                                        [],
                                        invokation_variants)
示例#55
0
 def _string() -> InvokationVariant:
     return invokation_variant_from_args([
         a.Single(a.Multiplicity.MANDATORY, syntax_elements.STRING_SYNTAX_ELEMENT.argument),
     ],
         _TEXT_PARSER.fnap(_ARGUMENT__STRING_DESCRIPTION)
     )
示例#56
0
 def _pgm_for_arg_list_variant(self) -> InvokationVariant:
     return invokation_variant_from_args([
         a.Single(a.Multiplicity.MANDATORY, self._pgm_for_arg_list.element),
         a.Single(a.Multiplicity.ZERO_OR_MORE, self._arg.element),
     ],
         _TEXT_PARSER.fnap(_PGM_WITH_ARG_LIST_INVOKATION_VARIANT_DESCRIPTION))
示例#57
0
文件: run.py 项目: emilkarlen/exactly
 def invokation_variants(self) -> List[InvokationVariant]:
     return [
         invokation_variant_from_args([
             a.Single(a.Multiplicity.MANDATORY, syntax_elements.PROGRAM_SYNTAX_ELEMENT.argument),
         ]),
     ]
示例#58
0
 def _properties_invokation_variant() -> InvokationVariant:
     return invokation_variant_from_args([
         a.Single(a.Multiplicity.MANDATORY, a.Constant(PROPERTIES_SEPARATOR)),
         syntax_elements.FILE_MATCHER_SYNTAX_ELEMENT.single_mandatory,
     ])