标签: c# parsing syntax compiler-construction
下面的C#代码很高兴被接受,我相信在Java中也是如此,而C ++编译器会对等价物进行barf,因为在声明之前使用了Foo:
class Program { static void Main(string[] args) { Foo foo; } } class Foo { int x; }
这在语法和解析方面如何工作?具体来说,当编译器看到第一次出现Foo时,它如何知道将其解析为声明而不是其他东西?它是否与两个标识符或其他规则并列?