Google's new language "Go" says on its website:
the language has been designed to be easy to analyze and can be parsed without a symbol table
I'm certainly no expert on these matters, but I thought a symbol table was a basic construct common to all compilers for languages that use variables, and Go clearly uses variables. What am I not understanding?
Parsing means just figuring out the program structure: separating the module into statements/declarations, breaking expressions down to sub-expressions, etc. You end up with a tree structure, known as a "parse tree", or "abstract syntax tree" (AST).
Apparently, C++ requires a symbol table to do parsing.
This page discusses some reasons why C++ requires a symbol table for parsing.
Of course, parsing is only a part of compilation, and you will need a symbol table to do a full compilation.
However, parsing itself can be useful in writing analysis tools (e.g. which module imports which modules). So, simplifying the parsing process means it's easier to write code analysis tools.