Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

(java): #2507 added support for hexadecimal floating point literals #2509

Merged
merged 35 commits into from
Jun 8, 2020
Merged
Show file tree
Hide file tree
Changes from 20 commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
fdf4361
(java): #2507 added support for hexadecimal floating point literals
0xflotus Apr 25, 2020
6b7457d
added more test cases
0xflotus Apr 25, 2020
e5fca84
trying
0xflotus Apr 25, 2020
d56d09d
Merge branch 'master' into 2507-variants
0xflotus Apr 25, 2020
4c6393d
almost
joshgoebel Apr 25, 2020
562e3b0
Merge branch 'master' into 2507-variants
0xflotus Apr 30, 2020
a227e95
changed order
0xflotus Apr 30, 2020
5eb0eb7
Merge branch 'master' into 2507-variants
0xflotus May 7, 2020
7556135
Merge branch 'master' into 2507-variants
0xflotus May 13, 2020
f471eaa
Update java.js
0xflotus May 13, 2020
05bf510
Update java.js
0xflotus May 13, 2020
b83f26e
Update java.js
0xflotus May 13, 2020
f8186ef
Update numbers.txt
0xflotus May 13, 2020
a4d59c3
Update numbers.expect.txt
0xflotus May 13, 2020
129fbff
Merge pull request #1 from 0xflotus/0xflotus-patch-1
0xflotus May 13, 2020
2961a85
Update numbers.txt
0xflotus May 13, 2020
c991895
Update numbers.expect.txt
0xflotus May 13, 2020
43667e6
Merge pull request #2 from 0xflotus/0xflotus-patch-1
0xflotus May 13, 2020
33de3bd
Update numbers.txt
0xflotus May 13, 2020
19b2cdb
Update numbers.expect.txt
0xflotus May 13, 2020
dfc990b
Update java.js
0xflotus May 13, 2020
b4ffefd
Update java.js
0xflotus May 13, 2020
2c4ba66
Update java.js
0xflotus May 13, 2020
ec682f6
Update numbers.txt
0xflotus May 13, 2020
535f04f
Update numbers.expect.txt
0xflotus May 13, 2020
264b09c
Merge branch 'master' into 2507-variants
0xflotus May 16, 2020
57278e6
restructure the Java regex rules
joshgoebel May 22, 2020
2ac08b8
Merge branch 'master' into 2507-variants
joshgoebel May 22, 2020
1f9d80d
improve naming
joshgoebel May 22, 2020
9746dc2
Merge branch 'master' into 2507-variants
0xflotus May 30, 2020
3343075
Merge branch 'master' into 2507-variants
0xflotus Jun 3, 2020
ba0ca7f
take Egors comments into consideration
joshgoebel Jun 8, 2020
06b311e
fix spacing
joshgoebel Jun 8, 2020
8cf665b
fix linting
joshgoebel Jun 8, 2020
0233780
Merge branch 'master' into 2507-variants
joshgoebel Jun 8, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 16 additions & 23 deletions src/languages/java.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ Category: common, enterprise
Website: https://www.java.com/
*/

export default function(hljs) {
export default function (hljs) {
joshgoebel marked this conversation as resolved.
Show resolved Hide resolved
var JAVA_IDENT_RE = '[\u00C0-\u02B8a-zA-Z_$][\u00C0-\u02B8a-zA-Z_$0-9]*';
var GENERIC_IDENT_RE = JAVA_IDENT_RE + '(<' + JAVA_IDENT_RE + '(\\s*,\\s*' + JAVA_IDENT_RE + ')*>)?';
var KEYWORDS =
Expand All @@ -18,32 +18,25 @@ export default function(hljs) {
var ANNOTATION = {
className: 'meta',
begin: '@' + JAVA_IDENT_RE,
contains:[
contains: [
{
begin: /\(/,
end: /\)/,
contains: ["self"] // allow nested () inside our annotation
},
]
}
// https://docs.oracle.com/javase/7/docs/technotes/guides/language/underscores-literals.html
var JAVA_NUMBER_RE = '\\b' +
'(' +
'0[bB]([01]+[01_]+[01]+|[01]+)' + // 0b...
'|' +
'0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)' + // 0x...
'|' +
'(' +
'([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?' +
'|' +
'\\.([\\d]+[\\d_]+[\\d]+|[\\d]+)' +
')' +
'([eE][-+]?\\d+)?' + // octal, decimal, float
')' +
'[lLfF]?';
var JAVA_NUMBER_MODE = {
className: 'number',
begin: JAVA_NUMBER_RE,
variants: [
{ begin: '\\b(0[bB][01]+([01_]*[01]+)?)[lL]?' }, // binary
{ begin: '\\b(0[0-7]+([0-7_]*[0-7]+)?)[dDfFlL]?' }, // octal
{ begin: '\\b[\\d]+([\\d_]*[\\d]+)?[lL]?' }, // decimal
{ begin: '\\b([\\d]*[\\.][\\d_]*[\\d]+|[\\d]+[\\d_]*)[eE][+-]?[\\d]+[dDfF]?' }, // scientific notation
{ begin: '\\b[\\d]+[\\.][\\d_]*[\\d]+[dDfF]?' }, // floating point
{ begin: '\\b0[xX]([a-fA-F0-9]+[a-fA-F0-9_]*[a-fA-F0-9]+)[pP]?[\\d]*[lL]?' }, // hexadecimal
{ begin: '\\b0[xX]((([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)?[\\.]?)?([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)?[pP][+-]?([\\d]+)[dDfF]?|([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+))[fFdD]?' }, // hexadecimal floating point
],
relevance: 0
};

Expand All @@ -57,15 +50,15 @@ export default function(hljs) {
'/\\*\\*',
'\\*/',
{
relevance : 0,
contains : [
relevance: 0,
contains: [
{
// eat up @'s in emails to prevent them to be recognized as doctags
begin: /\w+@/, relevance: 0
},
{
className : 'doctag',
begin : '@[A-Za-z]+'
className: 'doctag',
begin: '@[A-Za-z]+'
}
]
}
Expand All @@ -80,7 +73,7 @@ export default function(hljs) {
keywords: 'class interface',
illegal: /[:"\[\]]/,
contains: [
{beginKeywords: 'extends implements'},
{ beginKeywords: 'extends implements' },
hljs.UNDERSCORE_TITLE_MODE
]
},
Expand Down
21 changes: 21 additions & 0 deletions test/markup/java/numbers.expect.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,24 @@
<span class="hljs-keyword">byte</span> nybbles = <span class="hljs-number">0b0010_0101</span>;
<span class="hljs-keyword">long</span> bytes = <span class="hljs-number">0b11010010_01101001_10010100_10010010</span>;
<span class="hljs-keyword">int</span> n = <span class="hljs-number">1234</span> + Contacts._ID;
<span class="hljs-keyword">float</span> f = <span class="hljs-number">0x1.4p2f</span>;
<span class="hljs-keyword">double</span> d = <span class="hljs-number">0x.ep-6</span>;
<span class="hljs-keyword">int</span> octal = <span class="hljs-number">0777</span>;
<span class="hljs-keyword">float</span> f = <span class="hljs-number">2e3f</span>;
<span class="hljs-keyword">double</span> d = <span class="hljs-number">1.2e4D</span>;
a = <span class="hljs-number">0x4fa6p2</span>;
b = <span class="hljs-number">0x.4p2</span>;
c = <span class="hljs-number">0xa.ffp3f</span>;
d = <span class="hljs-number">0x1.0p2F</span>;
e = <span class="hljs-number">0x1.0p2f</span>;
f = <span class="hljs-number">0x1p1</span>;
g = <span class="hljs-number">0x.3p4d</span>;
h = <span class="hljs-number">0x1.2ep5D</span>;
i = <span class="hljs-number">0x1.p2</span>;
<span class="hljs-keyword">int</span> i = <span class="hljs-number">23</span>;
<span class="hljs-keyword">byte</span> mask = <span class="hljs-number">0x0f</span>;
<span class="hljs-keyword">int</span> i = <span class="hljs-number">4</span>;
<span class="hljs-keyword">byte</span> mask = <span class="hljs-number">0xa</span>;
<span class="hljs-keyword">float</span> f = <span class="hljs-number">5.4</span>;
<span class="hljs-keyword">float</span> f = <span class="hljs-number">2e3</span>;
<span class="hljs-keyword">int</span> n = <span class="hljs-number">0b1</span>;
21 changes: 21 additions & 0 deletions test/markup/java/numbers.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,24 @@ long maxLong = 0x7fff_ffff_ffff_ffffL;
byte nybbles = 0b0010_0101;
long bytes = 0b11010010_01101001_10010100_10010010;
int n = 1234 + Contacts._ID;
float f = 0x1.4p2f;
double d = 0x.ep-6;
int octal = 0777;
float f = 2e3f;
double d = 1.2e4D;
a = 0x4fa6p2;
b = 0x.4p2;
c = 0xa.ffp3f;
d = 0x1.0p2F;
e = 0x1.0p2f;
f = 0x1p1;
g = 0x.3p4d;
h = 0x1.2ep5D;
i = 0x1.p2;
int i = 23;
byte mask = 0x0f;
joshgoebel marked this conversation as resolved.
Show resolved Hide resolved
int i = 4;
byte mask = 0xa;
float f = 5.4;
float f = 2e3;
int n = 0b1;
0xflotus marked this conversation as resolved.
Show resolved Hide resolved