src/cmd/goyacc/goyacc.go | 22 ++++++++++++++++++++-- diff --git a/src/cmd/goyacc/goyacc.go b/src/cmd/goyacc/goyacc.go index 4e4819b40b92a6df40d18a56bcbcb1d0f0c072f8..4d9a515a6062bb9052e08ddc1b3e2cfa33bd22c9 100644 --- a/src/cmd/goyacc/goyacc.go +++ b/src/cmd/goyacc/goyacc.go @@ -1352,13 +1352,31 @@ putrune(ftable, c) return case '/': + nc := getrune(finput) + if nc != '/' && nc != '*' { + ungetrune(finput, nc) + break + } // a comment putrune(ftable, c) + putrune(ftable, nc) c = getrune(finput) for c != EOF { - if c == '\n' { + switch { + case c == '\n': lineno++ - break swt + if nc == '/' { // end of // comment + break swt + } + case c == '*' && nc == '*': // end of /* comment? + nnc := getrune(finput) + if nnc == '/' { + putrune(ftable, '*') + putrune(ftable, '/') + c = getrune(finput) + break swt + } + ungetrune(finput, nnc) } putrune(ftable, c) c = getrune(finput)