From 38202de114b6cf25f4ad900f64cd73bf24147484 Mon Sep 17 00:00:00 2001 From: Rob Pike Date: Tue, 23 Feb 2010 16:00:14 +1100 Subject: [PATCH] goyacc: fix handling of / and comments in goyacc Fixes #618. R=rsc CC=golang-dev https://golang.org/cl/217094 --- src/cmd/goyacc/goyacc.go | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/cmd/goyacc/goyacc.go b/src/cmd/goyacc/goyacc.go index 4e4819b40b..4d9a515a60 100644 --- a/src/cmd/goyacc/goyacc.go +++ b/src/cmd/goyacc/goyacc.go @@ -1352,13 +1352,31 @@ loop: 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) -- 2.50.0