| #!/bin/bash |
| # Copyright 2015 The Vanadium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style |
| # license that can be found in the LICENSE file. |
| |
| # Generate the grammar.go source file, which contains the parser, by running |
| # this shell script in the same directory, or by running go generate. This also |
| # generates grammar.y.debug, which contains a list of all states produced for |
| # the parser, and some stats. |
| |
| set -e |
| |
| go tool yacc -o grammar.y.tmp.go -v grammar.y.debug.tmp grammar.y |
| gofmt -l -w grammar.y.tmp.go |
| cat - grammar.y.tmp.go > grammar.y.go <<EOF |
| // Copyright 2015 The Vanadium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| EOF |
| cat - grammar.y.debug.tmp > grammar.y.debug <<EOF |
| ***** PLEASE READ THIS! DO NOT DELETE THIS BLOCK! ***** |
| * The main reason this file has been generated and submitted is to try to ensure |
| * we never submit changes that cause shift/reduce or reduce/reduce conflicts. |
| * The Go yacc tool doesn't support the %expect directive, and will happily |
| * generate a parser even if such conflicts exist; it's up to the developer |
| * running the tool to notice that an error message is reported. The bottom of |
| * this file contains stats, including the number of conflicts. If you're |
| * reviewing a change make sure it says 0 conflicts. |
| * |
| * If you're updating the grammar, just cut-and-paste this message from the old |
| * file to the new one, so that this comment block persists. |
| ***** PLEASE READ THIS! DO NOT DELETE THIS BLOCK! ***** |
| EOF |
| |
| rm grammar.y.debug.tmp grammar.y.tmp.go |