Index: Source/CobraTokenizer.cobra
===================================================================
--- Source/CobraTokenizer.cobra	(revision 1561)
+++ Source/CobraTokenizer.cobra	(working copy)
@@ -50,6 +50,7 @@
 	var _inSubstStringSingle = false
 	var _inSubstStringDouble = false
 	var _inDocString = false
+	var _inCommentBlock = false
 
 	def init
 		base.init
@@ -65,6 +66,7 @@
 		sb.append('_inSubstStringSingle=[_inSubstStringSingle], ')
 		sb.append('_inSubstStringDouble=[_inSubstStringDouble], ')
 		sb.append('_inDocString=[_inDocString]')
+		sb.append('_inCommentBlock=[_inCommentBlock]')
 
 	# Note: The Tokenizer class handles it's input one line at a time,
 	#       and retains the \n at the end of the line. This affects
@@ -81,11 +83,12 @@
 			r'INDENT_MIXED_ST		^[ ]+[\t]+',
 			r'INDENT_ALL_TABS		^[\t]+',
 			r'INDENT_ALL_SPACES		^[ ]+',
-			r'NO_INDENT				^(?=[^\t\n#])',
+			r'NO_INDENT				^(?=[^\t\n#\/])',
 			r'EOL					\n',
+			r'COMMENT_BLOCK_START	^\/\#.*$',  
 			r'SINGLE_LINE_COMMENT	\#.*',
 			r'SPACE					[ \t]+',
-
+			
 			r'OPEN_GENERIC			[A-Za-z_][A-Za-z0-9_]*<of[ \n\r\t]',
 			r'OPEN_IF				if\(',
 			r'OPEN_CALL				[A-Za-z_][A-Za-z0-9_]*\(',
@@ -380,6 +383,33 @@
 		#print '<> onWHITESPACE_COMMENT_2'
 		return nil
 
+	##
+	## Comment out block
+	##
+	def onCOMMENT_BLOCK_START(tok as IToken) as IToken?
+		#print '<> onCOMMENT_BLOCK_START', tok.lineNum
+		assert not _inCommentBlock
+		# narrow the tokenizer's token defs to a new shorter set
+		# TODO: cache the tokens below
+		t = List<of TokenDef>()
+		t.add(TokenRegexDef('COMMENT_BLOCK_STOP', r'[^# \t]?\#\/.*$'))
+		t.add(TokenRegexDef('COMMENT_BLOCK_LINE', '.*\n'))
+		.pushTokenDefs(t)
+		_inCommentBlock = true
+		return nil
+		
+	def onCOMMENT_BLOCK_LINE(tok as IToken) as IToken?
+		#print '<> onCOMMENT_BLOCK_LINE', tok.lineNum 
+		assert _inCommentBlock, tok
+		return nil
+		
+	def onCOMMENT_BLOCK_STOP(tok as IToken) as IToken?
+		#print '<> onCOMMENT_BLOCK_STOP', tok.lineNum
+		assert _inCommentBlock, tok
+		_inCommentBlock = false
+		.popTokenDefs
+		return nil
+	
 	def onINDENT_MIXED_TSNS(tok as IToken) as IToken?
 		# expecting tabs, spaces, non-whitespace
 		assert tok.text.startsWith('\t')
@@ -817,8 +847,7 @@
 	def onDOC_STRING_BODY_TEXT(tok as IToken) as IToken
 		assert _inDocString, tok
 		return tok
-
-
+		
 	##
 	## Simple string literals
 	##
Index: Tests/100-basics/018-multiline-comment.cobra
===================================================================
--- Tests/100-basics/018-multiline-comment.cobra	(revision 0)
+++ Tests/100-basics/018-multiline-comment.cobra	(revision 0)
@@ -0,0 +1,103 @@
+# Testing multiline/block  comments - /# and #/ on SOL
+namespace Test
+/# 1
+This section won't compile if uncommented
+a comment line
+	another comment line
+    x=55 + 2         
+}#/
+	
+	class Test
+/# 2
+		_foo as int = 9 is shared
+		_bar as String is shared 
+#/
+		var foo1 as int = 9 
+			is shared, private
+
+
+/#{ 3
+	a comment TAB
+ 	# a comment SPACE TAB
+	 # a comment TAB SPACE
+    # a comment 4 SPACEs
+     # a comment 5 SPACEs
+}#/
+		def main is shared
+			a = 1
+/#
+			# test
+			a += 1
+			a += 1
+			assert a==3
+			a += _foo
+#/			
+            assert a==1
+			
+			a = .foo1
+			assert a == 9   # resolve to class var
+			
+			a = .x
+			assert a == 99
+		
+			a = .x1
+			assert a == 48
+			return 
+			
+		def x as int is shared
+			ret=99
+/#{	        ret += 1  
+            ret += 1
+#/			ret += 1  # rest of line after block comment termin ignored
+            return ret
+		
+/#		
+		def foo1 as in is shared
+			return 99
+#/				
+/#     # Comment out a method 
+		def whatTimeIsLove is shared
+			return nil
+#/
+
+		def x1 as int is shared
+			a =47
+/#
+            # comment across 2 methods
+
+            a += 1
+			return a
+		
+		def  x2 is shared
+			a = 48
+			a += 2
+#/			
+
+			a += 1
+            return a
+
+/#
+
+interface Stringy
+    def toStringX
+	
+class String
+	implements Stringy
+		_s 
+
+		def init()
+			_s = 'xxxx'
+			
+		def toString
+			return _s
+		
+#/
+
+/#
+    test
+/#  these dont nest
+	assert _foo == 9
+	# /
+	assert _bar is nil
+#/
+
Index: Developer/IntermediateReleaseNotes.text
===================================================================
--- Developer/IntermediateReleaseNotes.text	(revision 1561)
+++ Developer/IntermediateReleaseNotes.text	(working copy)
@@ -1,5 +1,8 @@
 Post 0.8
 
+* Add support for commenting full blocks of lines
+    '/#' block comment start and  '#/' block comment end as initial chars on line
+    
 * Added a new built-in doc tool accessible via "cobra -doc ...". The documentation is generated to local HTML files using your declarations, doc strings, contracts, etc.
 
 * Added support for declaring and raising events.

