[Mono-dev] misc: C# request info

Marek Safar marek.safar at seznam.cz
Mon Feb 23 04:56:23 EST 2009

> well, I was looking into C# some, and admittedly I have much less 
> fammiliarity with the language than with others...
> (I have started looking at ECMA-334 some, but it is long and a little 
> awkward to answer specific questions from absent some digging...).
> so, firstly, it is my guess that in order to compile C# properly, it is 
> required to load a whole group of files at once (I am uncertain whether the 
> term 'assembly' also applies to the collection of input source files, or 
> only to a produced DLL or EXE).
You can load C# source code files as well as assemblies or modules.

> my guess is that it works like this:
> the group of files is loaded;
> each file is preprocessed and parsed (it is looking like C# uses a 
> context-independent syntax?...);
Incorrect, C# uses context dependent keywords.
> all of the namespaces and declarations are "lifted out" of the parse trees;
> each file's parse tree can then be compiled.
> from what I can tell, types are like this:
> type = <qualifiers>* <type-name>
> so, I can type:
> static Foo bar;
> and the parser will know that 'Foo' is the type, even if the type for Foo is 
> not visible at the time of parsing (in C, this can't be done since there is 
> no clear distinction or ordering between types and qualifiers, and so one 
> would not know if 'Foo' is the type, or an intended variable name with the 
> type being assumed to be 'int').
No, parser does not yet know the type of 'Foo'.

> so, in C we can have:
> unsigned int i;
> int unsigned i;
> int volatile i;
> _Complex float f;
> double _Complex g;
> unsigned i;
> short int j;
> int long k;
> ..
> so, my guess then is that C# code is "just parsed", with no need to lookup, 
> for example, is Foo a "struct or class or other typedef'ed type?" ...
> as far as the parser is concerned 'int' or 'byte' is syntactically not 
> different from 'Foo' or 'Bar'?...


More information about the Mono-devel-list mailing list