anchor.diff:  				return new NumberLiteral(val as int);
   				}
   
  -		UnrecognizedStatement =  s:(!'\n' !'\r' any)*
  +		UnrecognizedStatement =  s:(!'\n' !'\r' any)+
   			-> {
   				var result = new UnrecognizedStatement();
  -				result.text = s.ToString();
  +				result.text = (s as Nodes).Select(n=>n.value);
   				return result;
   				}
   
  -		override WhitespaceInterleave = !default;
  +		StatementEnd = WhitespaceOrComment "\r\n" | '\r' | '\n' | Eof;
  +
  +		WhitespaceOrComment = OptionalWhitespace ('#' (!'\r' !'\n' any)*)?;
  +
  +		OptionalWhitespace = (' ' | '\t')*;
  +
  +		Eof = !any;
   
   	end
   end
positive.code: namespace Fools:
  	import Fools.Ast;
  	import MetaSharp.Transformation;
  
  	grammar FoolsStructure < Parser:
  
  		Main = Block;
  
  
negative.code: 				return result;
  				}
  
  		Statement = s:(PrintStatement
  			| AssignmentStatement
  			| UnrecognizedStatement
  			)
  			error unless StatementEnd
  			-> s;
  
  		PrintStatement = "print(" var:(!")" any)* ")"
  			-> {
  				var result = new PrintStatement();
  				result.variable = var as string;
  				return result;
  				}
  
  		AssignmentStatement = var:(!'=' !' ' !'\t' any)+
  			OptionalWhitespace '=' OptionalWhitespace
  			val:Expression
  			-> {
  				var result = new AssignmentStatement();
  				result.variable = (var as string).Trim();
  