@@ 178,12 178,12 @@ rule field {
}
# fieldOptions = fieldOption { "," fieldOption }
-regex fieldOptions {
+rule fieldOptions {
<fieldOption>+ % ','
}
# fieldOption = optionName "=" constant
-regex fieldOption {
+rule fieldOption {
<optionName> '=' <constant>
}
@@ 237,7 237,7 @@ rule enum {
# enumBody = "{" { option | enumField | emptyStatement } "}"
rule enumBody {
- '{' [ <option> | <enumField> | <emptyStatement> ]* '}'
+ '{' [ <option> | <enumField> | <emptyStatement> | <reserved> ]* '}'
}
# enumField = ident "=" intLit [ "[" enumValueOption { "," enumValueOption } "]" ]";"
@@ 26,8 26,7 @@ ok protobuf.parse('map<string, Project> projects = 3;',:rule<mapField>), 'mapFie
ok protobuf.parse('9 to 11',:rule<range>), 'range';
ok protobuf.parse('reserved 2, 15, 9 to 11;',:rule<reserved>), 'reserved';
ok protobuf.parse('2, 9 to 11',:rule<ranges>), 'ranges';
-# ok protobuf.parse('reserved "foo", "bar";',:rule<reserved>), 'reserved';
-# ok protobuf.parse('"foo", "bar"',:rule<fieldNames>), 'fieldNames';
+ok protobuf.parse('reserved 12;',:rule<reserved>), 'reserved';
ok protobuf.parse('UNKNOWN = 0;',:rule<enumField>), 'enumField';
ok protobuf.parse('EnumAllowingAlias',:rule<enumName>), 'enumName';
@@ 39,6 38,7 @@ ok protobuf.parse(q:to/X/, :rule<enum>), 'enum';
UNKNOWN = 0;
STARTED = 1;
RUNNING = 2 [(custom_option) = "hello world"];
+ reserved 100;
}
X
ok protobuf.parse(q:to/X/,:rule<field>), 'field';