thinking about the unicode characters of a C# source file and how they are combined to represent different lexical elements such as white spaces, line breaks, and comments, which can be used to separate other lexical elements such as tokens, which are the elements that define the actual syntactical structure of a source file (ie: keywords, identifiers,literals,operators, punctuators), and how it is possible to omit all the other lexical elements and just have a program written on a single line, with each token being directly right next to each other in such a way that there is at least one punctuator or operator between each keyword, literal and identifier, i couldn't help but wonder if it's actually possible to concatenate everything including the tokens that make up a declaration statement without using a single white-space (unless it appears in the context of a string or character literal) or delimited comment. for example, this is a syntactically correct source file: class C{static/**/void M(){if(true){int x=10;}}} but notice that I couldn't get away without the spaces or comments between the tokens that make up the type, type member and variable declaration statements. just like it's possible to have white-spaces, line breaks, comments and pre-processing directives between tokens, why is it that white-spaces (or optionally delimited comments) are required to separate tokens that appear in certain statements and yet merely be considered non-token lexical elements?