Beispiel #1
0
def make_test_scopes():
    scope0 = Scope(None)
    scope0.add_definition(
        Definition(string_to_signature('Fake sentence for testing.'), 0))
    scope0.add_definition(
        Definition(string_to_signature('Beginning Middle. end.'), 1))
    return [scope0, Scope(scope0)]
Beispiel #2
0
 def test_match_sentence(self):
     pattern = [FirstToken('Test'), WordToken('value')]
     to_match = Sentence(pattern + [PeriodToken()])
     code = None
     test_def = Definition(pattern, code)
     scope = Scope(None)
     scope.add_definition(test_def)
     self.assertIs(test_def, scope.match_sentence(to_match))
Beispiel #3
0
 def eval_function(scope, *args):
     if len(args) != len(params):
         raise LSRunningError('Incorrect number of arguments. expected: ' +
                              str(len(params)) + ' actual: ' +
                              str(len(args)))
     local_scope = Scope(scope)
     for (param, arg) in zip(params, args):
         new_def = Definition(param, arg)
         local_scope.add_definition(new_def)
     # Head should be defined in the parent scope.
     return evaluate(body, local_scope)
Beispiel #4
0
 def test_new_define_scope(self):
     outer_scope = Scope()
     outer_scope.add_definition(
         Definition(string_to_signature('Define Head. to be a built in.'),
                    None))
     inner_scope = outer_scope.new_define_scope(
         string_to_signature(
             'Check that The Sentences. given. are Defined. .'))
     # raises on missing sentence.
     inner_scope.match_sentence(
         string_to_signature('Check that Things. are Something. .'))
     inner_scope.match_sentence(string_to_signature('The Things. given.'))
     inner_scope.match_sentence(string_to_signature('Defined.'))
     with self.assertRaises(NoDefinitionError):
         inner_scope.match_sentence(string_to_signature('Sentences.'))
Beispiel #5
0
 def make_test_scope(self):
     scope = Scope()
     scope.add_definition(Definition(string_to_signature('Unit.'), 0))
     scope.add_definition(Definition(
         string_to_signature('Something with Sub sentence. to parse.'), 1))
     scope.add_definition(Definition(
         string_to_signature('Define New thing. to be a new type.'), 2))
     return scope