-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathtestDartGrammar.dart
99 lines (90 loc) · 3.23 KB
/
testDartGrammar.dart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
/*
Copyright 2013 Google Inc.
Licensed under the Apache License, Version 2.0 (the ''License'');
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
*/
library test_dart_grammar;
import 'CombinatorialParsing.dart';
import 'dart_runnable_grammar.dart' as dartRunnableGrammar;
import 'dart_executable_grammar.dart' as dartExecutableGrammar;
accept(production, input) {
try {
production.parse(input);
// print("PASS: Accepted <$input>");
} catch(e) {
print("FAIL: Should have accepted <$input>");
}
}
reject(production, input) {
try {
production.parse(input);
throw "FAIL: Should have rejected <$input>";
} catch(e) {
// print("PASS: Rejected <$input>");
}
}
test(grammar) {
accept(grammar.identifier, 'foo');
accept(grammar.identifier, 'bar9');
accept(grammar.identifier, 'dollar\$');
accept(grammar.identifier, '_foo');
accept(grammar.identifier, '_bar9');
accept(grammar.identifier, '_dollar\$');
accept(grammar.identifier, '\$');
accept(grammar.identifier, ' leadingSpace');
reject(grammar.identifier, '9');
reject(grammar.identifier, '3foo');
reject(grammar.identifier, '');
accept(grammar.numericLiteral, '0');
accept(grammar.numericLiteral, '1984');
accept(grammar.numericLiteral, ' 1984');
accept(grammar.numericLiteral, '-1984');
accept(grammar.numericLiteral, '0xCAFE');
accept(grammar.numericLiteral, '0XCAFE');
accept(grammar.numericLiteral, '0xcafe');
accept(grammar.numericLiteral, '0Xcafe');
accept(grammar.numericLiteral, '0xCaFe');
accept(grammar.numericLiteral, '0XCaFe');
accept(grammar.numericLiteral, '3e4');
accept(grammar.numericLiteral, '3e-4');
accept(grammar.numericLiteral, '-3e4');
accept(grammar.numericLiteral, '-3e-4');
accept(grammar.numericLiteral, '3E4');
accept(grammar.numericLiteral, '3E-4');
accept(grammar.numericLiteral, '-3E4');
accept(grammar.numericLiteral, '-3E-4');
accept(grammar.numericLiteral, '-3.14E4');
accept(grammar.numericLiteral, '-3.14E-4');
accept(grammar.numericLiteral, '-3.14');
accept(grammar.numericLiteral, '3.14');
reject(grammar.numericLiteral, '-3e--4');
reject(grammar.numericLiteral, '5.');
reject(grammar.numericLiteral, '-0xCAFE');
reject(grammar.numericLiteral, '-0XCAFE');
reject(grammar.numericLiteral, 'CAFE');
reject(grammar.numericLiteral, '0xGHIJ');
reject(grammar.numericLiteral, '-');
reject(grammar.numericLiteral, '');
accept(grammar.booleanLiteral, 'true');
accept(grammar.booleanLiteral, 'false');
accept(grammar.booleanLiteral, ' true');
accept(grammar.booleanLiteral, ' false');
reject(grammar.booleanLiteral, '9');
reject(grammar.booleanLiteral, '"foo"');
reject(grammar.booleanLiteral, "'foo'");
reject(grammar.booleanLiteral, 'TRUE');
reject(grammar.booleanLiteral, 'FALSE');
reject(grammar.booleanLiteral, 'null');
reject(grammar.booleanLiteral, '0xCAFE');
// Do we want to use the consuming or non-consuming variant of #not?
//accept(grammar.stringLiteral, '"foo"');
//accept(grammar.stringLiteral, "'foo'");
}
main() {
print('Runnable:');
test(new dartRunnableGrammar.DartGrammar());
print('Executable:');
test(new dartExecutableGrammar.DartGrammar());
}