aboutsummaryrefslogtreecommitdiff
path: root/src/lexer
diff options
context:
space:
mode:
authorbors[bot] <bors[bot]@users.noreply.github.com>2018-01-28 10:52:49 +0000
committerbors[bot] <bors[bot]@users.noreply.github.com>2018-01-28 10:52:49 +0000
commit7a6fa6504c5458dcc32e24327ba0ec597222fc63 (patch)
tree429094453c94f79adf9ed6ad0f69771684d0c7a8 /src/lexer
parent37ee4c4c2afc1df536f50a776ac16dab69a67058 (diff)
parent5982e6d73b600e00d4eb72800e30c3c0700eb75b (diff)
Merge #24
24: Block Comments r=matklad a=CAD97 closes #7
Diffstat (limited to 'src/lexer')
-rw-r--r--src/lexer/comments.rs25
1 files changed, 24 insertions, 1 deletions
diff --git a/src/lexer/comments.rs b/src/lexer/comments.rs
index b70f2c6c6..d1e958817 100644
--- a/src/lexer/comments.rs
+++ b/src/lexer/comments.rs
@@ -14,12 +14,35 @@ pub(crate) fn scan_shebang(ptr: &mut Ptr) -> bool {
14 } 14 }
15} 15}
16 16
17fn scan_block_comment(ptr: &mut Ptr) -> Option<SyntaxKind> {
18 if ptr.next_is('*') {
19 ptr.bump();
20 let mut depth: u32 = 1;
21 while depth > 0 {
22 if ptr.next_is('*') && ptr.nnext_is('/') {
23 depth -= 1;
24 ptr.bump();
25 ptr.bump();
26 } else if ptr.next_is('/') && ptr.nnext_is('*') {
27 depth += 1;
28 ptr.bump();
29 ptr.bump();
30 } else if ptr.bump().is_none() {
31 break;
32 }
33 }
34 Some(COMMENT)
35 } else {
36 None
37 }
38}
39
17pub(crate) fn scan_comment(ptr: &mut Ptr) -> Option<SyntaxKind> { 40pub(crate) fn scan_comment(ptr: &mut Ptr) -> Option<SyntaxKind> {
18 if ptr.next_is('/') { 41 if ptr.next_is('/') {
19 bump_until_eol(ptr); 42 bump_until_eol(ptr);
20 Some(COMMENT) 43 Some(COMMENT)
21 } else { 44 } else {
22 None 45 scan_block_comment(ptr)
23 } 46 }
24} 47}
25 48