[gtksourceview: 1/3] * Made package and import externals, like in Java * Fixed escape characters: Go octal escapes take e
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtksourceview: 1/3] * Made package and import externals, like in Java * Fixed escape characters: Go octal escapes take e
- Date: Tue, 17 Sep 2019 17:26:40 +0000 (UTC)
commit ab6418faef7cd9a6c6216cb1d5a9194136d185f0
Author: Pile Trade <pile trade gmail com>
Date: Tue Sep 17 02:20:04 2019 +0000
* Made package and import externals, like in Java
* Fixed escape characters: Go octal escapes take exactly three digits, hex escapes take exactly two
digits, added Unicode escape characters
* Added the printf verbs %O and %F plus support the 1-indexing of arguments within fmt e.g. %[1]d
* Added support for Go 1.13's new integer literal syntaxes: 0b for binary, 0o/0O for octal, hex floating
point literals like 0x1.fp-2, underscores between digits, and the imaginary suffix i which can now attach to
any literal
data/language-specs/go.lang | 104 +++++++++++++++++++++++++++++---------------
1 file changed, 70 insertions(+), 34 deletions(-)
---
diff --git a/data/language-specs/go.lang b/data/language-specs/go.lang
index bfe31ed0..353181ea 100644
--- a/data/language-specs/go.lang
+++ b/data/language-specs/go.lang
@@ -31,41 +31,61 @@
</metadata>
<styles>
- <style id="comment" name="Comment" map-to="def:comment"/>
- <style id="error" name="Error" map-to="def:error"/>
- <style id="string" name="String" map-to="def:string"/>
- <style id="char" name="Character" map-to="def:character"/>
- <style id="keyword" name="Keyword" map-to="def:keyword"/>
- <style id="type" name="Data Type" map-to="def:type"/>
- <style id="printf" name="printf Conversion" map-to="def:special-char"/>
- <style id="escaped-character" name="Escaped Character" map-to="def:special-char"/>
+ <style id="comment" name="Comment" map-to="def:comment"/>
+ <style id="error" name="Error" map-to="def:error"/>
+ <style id="string" name="String" map-to="def:string"/>
+ <style id="char" name="Character" map-to="def:character"/>
+ <style id="keyword" name="Keyword" map-to="def:keyword"/>
+ <style id="external" name="External" map-to="def:preprocessor"/>
+ <style id="type" name="Data Type" map-to="def:type"/>
+ <style id="printf" name="printf Conversion" map-to="def:special-char"/>
+ <style id="escaped-character" name="Escaped Character" map-to="def:special-char"/>
<style id="floating-point" name="Floating point number" map-to="def:floating-point"/>
- <style id="imaginary" name="Imaginary number" map-to="def:number"/>
- <style id="decimal" name="Decimal number" map-to="def:decimal"/>
- <style id="octal" name="Octal number" map-to="def:base-n-integer"/>
- <style id="hexadecimal" name="Hexadecimal number" map-to="def:base-n-integer"/>
- <style id="boolean" name="Boolean value" map-to="def:boolean"/>
- <style id="builtin-constant" name="Builtin Constant" map-to="def:special-constant"/>
- <style id="builtin-function" name="Builtin Function" map-to="def:builtin"/>
+ <style id="imaginary" name="Imaginary number" map-to="def:number"/>
+ <style id="binary" name="Binary number" map-to="def:base-n-integer"/>
+ <style id="decimal" name="Decimal number" map-to="def:decimal"/>
+ <style id="octal" name="Octal number" map-to="def:base-n-integer"/>
+ <style id="hexadecimal" name="Hexadecimal number" map-to="def:base-n-integer"/>
+ <style id="boolean" name="Boolean value" map-to="def:boolean"/>
+ <style id="builtin-constant" name="Builtin Constant" map-to="def:special-constant"/>
+ <style id="builtin-function" name="Builtin Function" map-to="def:builtin"/>
</styles>
<definitions>
<define-regex id="escaped-character" extended="true">
- \\( # leading backslash
- [\\\"\'nrbtfav\?] | # escaped character
- [0-7]{1,3} | # one, two, or three octal digits
- x[0-9A-Fa-f]+ # 'x' followed by hex digits
+ \\( # leading backslash
+ [\\\"\'nrbtfav\?] | # escaped character
+ [0-7]{3} | # three octal digits
+ x[0-9A-Fa-f]{2} | # 'x' followed by two hex digits
+ u[0-9A-Fa-f]{4} | # Little Unicode escape, 'u' followed by four hex digits
+ U[0-9A-Fa-f]{8} # Big Unicode escape, 'U' followed by eight hex digits
)
</define-regex>
+
+ <define-regex id="oct" extended="true">
+ 0[Oo]?(_?[0-7])+
+ </define-regex>
+
+ <define-regex id="dec" extended="true">
+ (0|[1-9](_?[0-9])*)
+ </define-regex>
+
+ <define-regex id="bin" extended="true">
+ 0[Bb](_?[01])+
+ </define-regex>
+
+ <define-regex id="hex" extended="true">
+ 0[Xx](_?[0-9A-Fa-f])+
+ </define-regex>
<!--contexts NOT used on the main context-->
<context id="printf" style-ref="printf" extend-parent="false">
<match extended="true">
\%\%|\%
- [#0\-\ \+\*]* # flags
- (?:[1-9][0-9]*|\*)? # width
- (?:\.(?:[0-9]+|\*))? # precision
- [vTtbcdoqxXUeEfgGsp] # conversion specifier
+ [#0\-\ \+]* # flags
+ (?:[1-9][0-9]*|\[[1-9][0-9]*\]\*)? # width
+ (?:\.(?:[0-9]+|\[[1-9][0-9]*\]\*))? # precision
+ (\[[1-9][0-9]*\])?[vTtbcdoOqxXUeEfFgGsp] # conversion specifier
</match>
</context>
@@ -115,12 +135,14 @@
</context>
<define-regex id="float" extended="true">
- ((\.[0-9]+ | [0-9]+\.[0-9]*) ([Ee][+-]?[0-9]+)? |
- ([0-9]+[Ee][+-]?[0-9]+))
+ ((\.[0-9](_?[0-9])* | [0-9](_?[0-9])*\.[0-9]?(_?[0-9])*) ([Ee][+-]?[0-9](_?[0-9])*)? |
+ ([0-9](_?[0-9])*[Ee][+-]?[0-9](_?[0-9])*) |
+ 0[Xx]_?(\.[0-9A-Fa-f](_?[0-9A-Fa-f])* |
[0-9A-Fa-f](_?[0-9A-Fa-f])*\.?([0-9A-Fa-f](_?[0-9A-Fa-f])*)?)[Pp][+-]?[0-9](_?[0-9])*
+ )
</define-regex>
<context id="imaginary" style-ref="imaginary">
- <match>(?<![\w\.])(\%{float}|\[0-9]+)[i]\b</match>
+ <match>(?<![\w\.])(\%{float}|\%{oct}|\%{bin}|\%{hex}|\[0-9]+)[i]\b</match>
</context>
<context id="float" style-ref="floating-point">
@@ -130,7 +152,15 @@
<context id="hexadecimal" style-ref="hexadecimal">
<match extended="true">
(?<![\w\.])
- 0[xX][a-fA-F0-9]+
+ \%{hex}
+ (?![\w\.])
+ </match>
+ </context>
+
+ <context id="binary" style-ref="binary">
+ <match extended="true">
+ (?<![\w\.])
+ \%{bin}
(?![\w\.])
</match>
</context>
@@ -138,7 +168,7 @@
<context id="invalid-hexadecimal" style-ref="error">
<match extended="true">
(?<![\w\.])
- 0[xX][a-fA-F0-9]*[g-zG-Z][a-zA-Z0-9]*
+ 0[xX][a-fA-F0-9]*[ghj-zGHJ-Z][a-zA-Z0-9]*
(?![\w\.])
</match>
</context>
@@ -146,7 +176,7 @@
<context id="octal" style-ref="octal">
<match extended="true">
(?<![\w\.])
- 0[0-7]+
+ \%{oct}
(?![\w\.])
</match>
</context>
@@ -154,7 +184,7 @@
<context id="invalid-octal" style-ref="error">
<match extended="true">
(?<![\w\.])
- 0[0-7]*[89][0-9]*
+ 0[Oo]?[0-7]*[89][0-9]*
(?![\w\.])
</match>
</context>
@@ -162,7 +192,7 @@
<context id="decimal" style-ref="decimal">
<match extended="true">
(?<![\w\.])
- (0|[1-9][0-9]*)
+ \%{dec}
(?![\w\.])
</match>
</context>
@@ -175,6 +205,11 @@
</match>
</context>
+ <context id="externals" style-ref="external">
+ <keyword>import</keyword>
+ <keyword>package</keyword>
+ </context>
+
<context id="keywords" style-ref="keyword">
<keyword>break</keyword>
<keyword>case</keyword>
@@ -189,9 +224,7 @@
<keyword>go</keyword>
<keyword>goto</keyword>
<keyword>if</keyword>
- <keyword>import</keyword>
<keyword>interface</keyword>
- <keyword>package</keyword>
<keyword>range</keyword>
<keyword>return</keyword>
<keyword>select</keyword>
@@ -256,14 +289,17 @@
<context ref="quoted-string"/>
<context ref="backquote-string"/>
<context ref="char"/>
+ <context ref="binary"/>
<context ref="float"/>
<context ref="hexadecimal"/>
+ <context ref="imaginary"/>
<context ref="invalid-hexadecimal"/>
<context ref="octal"/>
<context ref="invalid-octal"/>
<context ref="decimal"/>
<context ref="boolean"/>
<context ref="keywords"/>
+ <context ref="externals"/>
<context ref="types"/>
<context ref="builtin-constant"/>
<context ref="builtin-function"/>
@@ -271,4 +307,4 @@
</context>
</definitions>
-</language>
+</language>
\ No newline at end of file
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]