-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
This makes numerous improvements to the Protobuf grammar adding (almost) full support for PB2 and PB3 syntax.
- Loading branch information
1 parent
36a5fa0
commit de10bd1
Showing
9 changed files
with
279 additions
and
41 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,8 +1,36 @@ | ||
Prism.languages.protobuf = Prism.languages.extend('clike', { | ||
keyword: /\b(?:package|import|message|enum)\b/, | ||
builtin: /\b(?:required|repeated|optional|reserved)\b/, | ||
primitive: { | ||
pattern: /\b(?:double|float|int32|int64|uint32|uint64|sint32|sint64|fixed32|fixed64|sfixed32|sfixed64|bool|string|bytes)\b/, | ||
alias: 'symbol' | ||
} | ||
}); | ||
(function (Prism) { | ||
|
||
var builtinTypes = /\b(?:double|float|[su]?int(?:32|64)|s?fixed(?:32|64)|bool|string|bytes)\b/; | ||
|
||
Prism.languages.protobuf = Prism.languages.extend('clike', { | ||
'class-name': { | ||
pattern: /(\b(?:enum|extend|message|service)\s+)[A-Za-z_]\w*(?=\s*\{)/, | ||
lookbehind: true | ||
}, | ||
'keyword': /\b(?:enum|extend|extensions|import|message|oneof|option|optional|package|public|repeated|required|reserved|service|syntax|to)\b/ | ||
}); | ||
|
||
Prism.languages.insertBefore('protobuf', 'operator', { | ||
'map': { | ||
pattern: /\bmap<\s*[\w.]+\s*,\s*[\w.]+\s*>(?=\s+[A-Za-z_]\w*\s*[=;])/, | ||
alias: 'class-name', | ||
inside: { | ||
'punctuation': /[<>.,]/, | ||
'builtin': builtinTypes | ||
} | ||
}, | ||
'builtin': builtinTypes, | ||
'positional-class-name': { | ||
pattern: /(?:\b|\B\.)[A-Za-z_]\w*(?:\.[A-Za-z_]\w*)*(?=\s+[A-Za-z_]\w*\s*[=;])/, | ||
alias: 'class-name', | ||
inside: { | ||
'punctuation': /\./ | ||
} | ||
}, | ||
'annotation': { | ||
pattern: /(\[\s*)[A-Za-z_]\w*(?=\s*=)/, | ||
lookbehind: true | ||
} | ||
}); | ||
|
||
}(Prism)); |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
<h2>Full example</h2> | ||
<pre><code>syntax = "proto3"; | ||
|
||
package foo.generated; | ||
option java_package = "org.foo.generated"; | ||
option optimize_for = SPEED; | ||
|
||
// What's up with all the foo? | ||
message Foo { | ||
|
||
message Bar { | ||
|
||
optional string key = 1; | ||
optional Foo value = 2; | ||
optional string value_raw = 3 [deprecated=true]; | ||
} | ||
|
||
enum Level { | ||
INFO = 0; | ||
WARN = 1; | ||
ERROR = 2; | ||
} | ||
|
||
repeated Property property = 1; | ||
}</code></pre> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
int32 foo = 1 [deprecated=true]; | ||
|
||
---------------------------------------------------- | ||
|
||
[ | ||
["builtin", "int32"], | ||
" foo ", | ||
["operator", "="], | ||
["number", "1"], | ||
["punctuation", "["], | ||
["annotation", "deprecated"], | ||
["operator", "="], | ||
["boolean", "true"], | ||
["punctuation", "]"], | ||
["punctuation", ";"] | ||
] | ||
|
||
---------------------------------------------------- | ||
|
||
Check for annotations. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
double | ||
float | ||
int32 | ||
int64 | ||
uint32 | ||
uint64 | ||
sint32 | ||
sint64 | ||
fixed32 | ||
fixed64 | ||
sfixed32 | ||
sfixed64 | ||
bool | ||
string | ||
bytes | ||
|
||
---------------------------------------------------- | ||
|
||
[ | ||
["builtin", "double"], | ||
["builtin", "float"], | ||
["builtin", "int32"], | ||
["builtin", "int64"], | ||
["builtin", "uint32"], | ||
["builtin", "uint64"], | ||
["builtin", "sint32"], | ||
["builtin", "sint64"], | ||
["builtin", "fixed32"], | ||
["builtin", "fixed64"], | ||
["builtin", "sfixed32"], | ||
["builtin", "sfixed64"], | ||
["builtin", "bool"], | ||
["builtin", "string"], | ||
["builtin", "bytes"] | ||
] | ||
|
||
---------------------------------------------------- | ||
|
||
Check for builtin types. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,102 @@ | ||
syntax = "proto2"; | ||
syntax = "proto3"; | ||
|
||
option java_multiple_files = true; | ||
|
||
import public "new.proto"; | ||
import "other.proto"; | ||
|
||
enum Foo {} | ||
extend Foo {} | ||
service Foo {} | ||
message Foo { | ||
Bar Bar = 0; | ||
foo.Bar Bar2 = 0; | ||
.baz.Bar Bar3 = 0; | ||
} | ||
|
||
---------------------------------------------------- | ||
|
||
[ | ||
["keyword", "syntax"], | ||
["operator", "="], | ||
["string", "\"proto2\""], | ||
["punctuation", ";"], | ||
|
||
["keyword", "syntax"], | ||
["operator", "="], | ||
["string", "\"proto3\""], | ||
["punctuation", ";"], | ||
|
||
|
||
["keyword", "option"], | ||
" java_multiple_files ", | ||
["operator", "="], | ||
["boolean", "true"], | ||
["punctuation", ";"], | ||
|
||
|
||
["keyword", "import"], | ||
["keyword", "public"], | ||
["string", "\"new.proto\""], | ||
["punctuation", ";"], | ||
|
||
["keyword", "import"], | ||
["string", "\"other.proto\""], | ||
["punctuation", ";"], | ||
|
||
|
||
["keyword", "enum"], | ||
["class-name", "Foo"], | ||
["punctuation", "{"], | ||
["punctuation", "}"], | ||
|
||
["keyword", "extend"], | ||
["class-name", "Foo"], | ||
["punctuation", "{"], | ||
["punctuation", "}"], | ||
|
||
["keyword", "service"], | ||
["class-name", "Foo"], | ||
["punctuation", "{"], | ||
["punctuation", "}"], | ||
|
||
["keyword", "message"], | ||
["class-name", "Foo"], | ||
["punctuation", "{"], | ||
|
||
["positional-class-name", [ | ||
"Bar" | ||
]], | ||
" Bar ", | ||
["operator", "="], | ||
["number", "0"], | ||
["punctuation", ";"], | ||
|
||
["positional-class-name", [ | ||
"foo", | ||
["punctuation", "."], | ||
"Bar" | ||
]], | ||
" Bar2 ", | ||
["operator", "="], | ||
["number", "0"], | ||
["punctuation", ";"], | ||
|
||
["positional-class-name", [ | ||
["punctuation", "."], | ||
"baz", | ||
["punctuation", "."], | ||
"Bar" | ||
]], | ||
" Bar3 ", | ||
["operator", "="], | ||
["number", "0"], | ||
["punctuation", ";"], | ||
|
||
["punctuation", "}"] | ||
] | ||
|
||
---------------------------------------------------- | ||
|
||
Check for class names |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,40 +1,41 @@ | ||
message Point { | ||
required int32 x = 1; | ||
required int32 y = 2; | ||
optional string label = 3; | ||
} | ||
enum | ||
extend | ||
extensions | ||
import | ||
message | ||
oneof | ||
option | ||
optional | ||
package | ||
public | ||
repeated | ||
required | ||
reserved | ||
service | ||
syntax | ||
to | ||
|
||
---------------------------------------------------- | ||
|
||
[ | ||
["keyword", "enum"], | ||
["keyword", "extend"], | ||
["keyword", "extensions"], | ||
["keyword", "import"], | ||
["keyword", "message"], | ||
" Point ", | ||
["punctuation", "{"], | ||
|
||
["builtin", "required"], | ||
["primitive", "int32"], | ||
" x ", | ||
["operator", "="], | ||
["number", "1"], | ||
["punctuation", ";"], | ||
|
||
["builtin", "required"], | ||
["primitive", "int32"], | ||
" y ", | ||
["operator", "="], | ||
["number", "2"], | ||
["punctuation", ";"], | ||
|
||
["builtin", "optional"], | ||
["primitive", "string"], | ||
" label ", | ||
["operator", "="], | ||
["number", "3"], | ||
["punctuation", ";"], | ||
|
||
["punctuation", "}"] | ||
["keyword", "oneof"], | ||
["keyword", "option"], | ||
["keyword", "optional"], | ||
["keyword", "package"], | ||
["keyword", "public"], | ||
["keyword", "repeated"], | ||
["keyword", "required"], | ||
["keyword", "reserved"], | ||
["keyword", "service"], | ||
["keyword", "syntax"], | ||
["keyword", "to"] | ||
] | ||
|
||
---------------------------------------------------- | ||
|
||
Check for keywords and builtins | ||
Check for keywords |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
map<string, .foo.Foo> bar; | ||
|
||
---------------------------------------------------- | ||
|
||
[ | ||
["map", [ | ||
"map", | ||
["punctuation", "<"], | ||
["builtin", "string"], | ||
["punctuation", ","], | ||
["punctuation", "."], | ||
"foo", | ||
["punctuation", "."], | ||
"Foo", | ||
["punctuation", ">"] | ||
]], | ||
" bar", | ||
["punctuation", ";"] | ||
] | ||
|
||
---------------------------------------------------- | ||
|
||
Check for maps. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters