How to start with creating a program to format C and their derived code into .net style formatted code so that if I input any program. This program can recognize and reformat by properly adding indentation and other things.
1 Answer
This is an extremely complex task because programming languages have complex grammar. If you want to format not just C#, but C and C++ too, it’s even more complex — possibly impossible because there may be syntax in one language that is not valid (or means something different) in another.
If you want to do it just for C#, you need a C# parser. There are a few free-software C# parsers available:
Once you have the parse tree, you will have to walk the tree and progressively output it properly formatted. Some of the C# parsers may already have this functionality.
Regarding the grammar ambiguity: Consider the following line of code:
Method(a<b,c>(d+1)); In C# the correct formatting would be:
Method(a<b, c>(d + 1)); // “a<T1, T2>” is generic; Method has one argument In C and C++ I believe the correct formatting would be:
Method(a < b, c > (d + 1)); // Method has two arguments with binary operators