anchor.diff:        expect(parser.accept('(1 + 2) * 3'), isTrue);
       });
     });
  -}
  +  group('definition parser', () {
  +    final definition = ExpressionGrammarDefinition();
  +    final parser = GrammarParser(definition);
  +    expectCommon(parser);
  +    test('expression', () {
  +      expect(parser.accept('1'), isTrue);
  +      expect(parser.accept('12'), isTrue);
  +      expect(parser.accept('1.23'), isTrue);
  +      expect(parser.accept('-12.3'), isTrue);
  +      expect(parser.accept('1 + 2'), isTrue);
  +      expect(parser.accept('1 + 2 + 3'), isTrue);
  +      expect(parser.accept('1 - 2'), isTrue);
  +      expect(parser.accept('1 - 2 - 3'), isTrue);
  +      expect(parser.accept('1 * 2'), isTrue);
  +      expect(parser.accept('1 * 2 * 3'), isTrue);
  +      expect(parser.accept('1 / 2'), isTrue);
  +      expect(parser.accept('1 / 2 / 3'), isTrue);
  +      expect(parser.accept('1 ^ 2'), isTrue);
  +      expect(parser.accept('1 ^ 2 ^ 3'), isTrue);
  +      expect(parser.accept('1 + (2 * 3)'), isTrue);
  +      expect(parser.accept('(1 + 2) * 3'), isTrue);
  +    });
  +  });
  +}
  
positive.code: import 'package:petitparser/petitparser.dart';
  import 'package:test/test.dart';
  
  import 'test_utils.dart';
  
  class ListGrammarDefinition extends GrammarDefinition {
  
negative.code:     });
      test('expression example', () {
        final definition = ExpressionGrammarDefinition();
        final parser = definition.build();
        expect(parser.accept('1'), isTrue);
        expect(parser.accept('12'), isTrue);
        expect(parser.accept('1.23'), isTrue);
  