summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorAndreas Rumpf <rumpf_a@web.de>2017-11-28 20:00:20 +0100
committerAndreas Rumpf <rumpf_a@web.de>2017-11-29 11:00:25 +0100
commit416a322efb3ce8a90c88f596863cbba89d28bccb (patch)
tree4be551963f1b0dbcab14e771902847143e0e64b3
parent5fdc69dfbdcf0134d3f6a97cde1d802ebdeb0a13 (diff)
downloadNim-416a322efb3ce8a90c88f596863cbba89d28bccb.tar.gz
added lexer.newlineFollows for parser experiments
-rw-r--r--compiler/lexer.nim17
1 files changed, 17 insertions, 0 deletions
diff --git a/compiler/lexer.nim b/compiler/lexer.nim
index 4106494c4..bca07e500 100644
--- a/compiler/lexer.nim
+++ b/compiler/lexer.nim
@@ -860,6 +860,23 @@ proc getOperator(L: var TLexer, tok: var TToken) =
   if buf[pos] in {CR, LF, nimlexbase.EndOfFile}:
     tok.strongSpaceB = -1
 
+proc newlineFollows*(L: var TLexer): bool =
+  var pos = L.bufpos
+  var buf = L.buf
+  while true:
+    case buf[pos]
+    of ' ', '\t':
+      inc(pos)
+    of CR, LF:
+      result = true
+      break
+    of '#':
+      inc(pos)
+      if buf[pos] == '#': inc(pos)
+      if buf[pos] != '[': return true
+    else:
+      break
+
 proc skipMultiLineComment(L: var TLexer; tok: var TToken; start: int;
                           isDoc: bool) =
   var pos = start