recognize function

State recognize(
  1. State state, {
  2. required String position,
  3. required String substring,
})

Implementation

State recognize(
  State state, {
  required String position,
  required String substring,
}) {
  const template = '''
final {{pos}} = {{position}};
var {{tmp}} = false;
{{@state}}
if ({{tmp}}) {
  final {{res}} = {{substring}}({{pos}}, {{position}});
  {{@accept}}
}
{{@reject}}
''';
  const automaton = Automaton(
    accept: '{{tmp}} = true;',
    reject: '',
    result: '{{res}}',
    template: template,
  );
  const generator = AutomatonGenerator(automaton);
  final start = generator.generate('String', state, values: {
    'position': position,
    'substring': substring,
  });
  return start;
}