go/test/syntax
Robert Griesemer b569b87ca1 cmd/compile/internal/gc: recursive-descent parser
This is a translation of the yacc-based parser with adjustements
to make the grammar work for a recursive-descent parser followed
by cleanups and simplifications.

The yacc actions were mostly literally copied for correctness
with better temporary names.

A few of the syntax tests were adjusted for slightly different
error messages (it is very difficult to match the yacc-based
error messages in all cases, and sometimes the new parser could
produce better errors).

The new parser is enabled by default.
To switch back to the yacc-based parser, set -oldparser.
To hardwire the switch back, uncomment "oldparser = 1" in lex.go.

- passes all.bash
- ~18% reduced parse time per file on average for make.bash
- ~3% reduced compile time for building cmd/compile

Change-Id: Icb5651bb9d8b9f66261762d2c94a03793050d4ce
Reviewed-on: https://go-review.googlesource.com/16665
Run-TryBot: Robert Griesemer <gri@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Russ Cox <rsc@golang.org>
2015-11-13 14:53:57 +00:00
..
chan.go cmd/compile/internal/gc: recursive-descent parser 2015-11-13 14:53:57 +00:00
chan1.go test: fix build (update for new error message) 2013-09-06 16:15:30 -04:00
composite.go gc: improve error message for composite literals with unexpected newlines 2012-04-02 11:00:55 -04:00
else.go test: use testlib (final 61) 2012-02-16 23:51:04 -05:00
forvar.go cmd/compile/internal/gc: recursive-descent parser 2015-11-13 14:53:57 +00:00
if.go test: use testlib (final 61) 2012-02-16 23:51:04 -05:00
import.go test: use testlib (final 61) 2012-02-16 23:51:04 -05:00
interface.go test: use testlib (final 61) 2012-02-16 23:51:04 -05:00
semi1.go test: match gccgo error messages 2013-12-12 17:18:12 -08:00
semi2.go test: match gccgo error messages 2013-12-12 17:18:12 -08:00
semi3.go test: match gccgo error messages 2013-12-12 17:18:12 -08:00
semi4.go cmd/compile/internal/gc: recursive-descent parser 2015-11-13 14:53:57 +00:00
semi5.go test: use testlib (final 61) 2012-02-16 23:51:04 -05:00
semi6.go cmd/compile/internal/gc: recursive-descent parser 2015-11-13 14:53:57 +00:00
semi7.go cmd/compile/internal/gc: recursive-descent parser 2015-11-13 14:53:57 +00:00
topexpr.go test: use testlib (final 61) 2012-02-16 23:51:04 -05:00
typesw.go test: use testlib (final 61) 2012-02-16 23:51:04 -05:00
vareq.go test: use testlib (final 61) 2012-02-16 23:51:04 -05:00
vareq1.go cmd/compile/internal/gc: recursive-descent parser 2015-11-13 14:53:57 +00:00