Ok, so as to the how: I cannot give you any exact answer, but the case is almost impossible in the way you have stated it.
The CODE compiler is completely.. hm.. sealed. It is monolithic, with some minor extension points (see ExtensionMethods and the LINQ sublangauge). If you ever actually find how the LINQ sublanguage plugin is attached to the compiler, drop me a note, pretty I please. I doubt it, I believe LINQ syntax is hardcoded into the compiler ,but maybe I'm wrong.
But if I'm not wrong - then adding an operator is completely impossible, at least in the way you view it. There are other ways of course.
See the XAML or ASPX files, or RESX? How they are processed by the compiler, hm? Building a project is a multistep process. Parsing the XAML/ASPX/RESX files is before C#-code-compiling. That files are read, a tool generates .g.cs /.Designer.cs /aspx.cs/.resx.cs files that are then added to the compilation set, and the XAML/ASPX/RESX are not actually compiled by the C# compiler.
What does it mean? It means that you could change the extension of your files to, for example, .blargh, then write a plugin like XAML/ASPX/RESX parser/generator to preprocess the .blargh into .cs, and voila. In the .blargh you have your own extra syntax goodies, translated to verbose C# which is then compiled by normal C# compiler.
But note that while it would actually work very well, changing the file extension would most surely unbind the Intellisense and other csharpy IDE utilities and I bet you do not want to rewrite them almost from scratch for your pretty new code file extension - actually, pretty new languge..
But wait, there is more and it is way simpler!
You do not even need the .blargh file class. The project structure is build upon MSBuild build system. Somewhere on your drive there is a bunch of XML scripts that describe every single step that the build system does during "solution build" or "project build". They are editable and even better, they are extensible. You are able to write a plugin to the build system and inject it in between virtually any existing step of the build process.
Imagine the simplicity: you write a simple search-replace utility that loads a C# file with your extra markup, processes it, and writes back "expanded", translated to normal C#. You can inject it before "compile" phase and you are done with your problem.
One thing to remember: you cannot OVERWRITE the ORIGINAL file. It would be not wise, as it would mean that everything you briefly wrote with yout new operators - would be autoexpanded and replaced upon the build - permanently. :) You will want to write the expanded to some temporary file, add that file to the current temporary compilation file set under build (and also remove the original file, as it is not neeeded anymore).
You should notice that this is again exactly what happens with XAML/RESX/.. files and .g.cs/.resx.cs/... temporaries. It is because this is the normal way of handling such cases in the VS/MSBuild system :) If you do not want to build new language support, you translate between your and some known language, and then add it as a preprocesing step. Thats all.