xhpast can't parse HEREDOC after rPHU610ca9eb. See that commit for some discussion. Repro is:
- Check out that commit.
- Rebuild xhpast.
- Run `arc unit --everything`.
The commit itself failed to build. I've reverted it in rPHU645da2b1.
The fix is likely straightforward, but I can't build xhpast locally on OSX anymore to verify it. I'm using the stock version of flex/bison which are distributed with XCode.
```
$ bison --version
bison (GNU Bison) 2.3
Written by Robert Corbett and Richard Stallman.
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
```
First issue is that this version of bison does not support `-Wall`:
```
epriestley@orbital ~/dev/libphutil/support/xhpast $ make cleanall
rm -f xhpast parser.yacc.output libxhpast.a *.o
rm -f scanner.lex.hpp scanner.lex.cpp parser.yacc.hpp parser.yacc.cpp
rm -f node_names.hpp parser_nodes.php
epriestley@orbital ~/dev/libphutil/support/xhpast $ make
flex -CFr --header-file=scanner.lex.hpp --outfile=scanner.lex.cpp scanner.l
bison --verbose -Wall --defines=parser.yacc.hpp --output=parser.yacc.cpp parser.y
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/bison: invalid option -- W
Try `/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/bison --help' for more information.
make: *** [parser.yacc.hpp] Error 1
```
After removing `-Wall`, I get this:
```
$ make
bison --verbose --defines=parser.yacc.hpp --output=parser.yacc.cpp parser.y
parser.y:60.14-21: syntax error, unexpected string, expecting =
make: *** [parser.yacc.hpp] Error 1
```
This line is:
```
%name-prefix "xhpast"
```
Replacing it with this fixes the warning:
```
%name-prefix = "xhpast"
```
...although that fix seems very odd. Then I get this:
```
$ make
bison --verbose --defines=parser.yacc.hpp --output=parser.yacc.cpp parser.y
parser.y:67.1-11: invalid directive: `%precedence'
parser.y:67.13-21: syntax error, unexpected identifier
make: *** [parser.yacc.hpp] Error 1
```
It looks like `%precedence` is new in Bison 3-ish. This change came from D13974.
I think the value of supporting stock bison on OSX is greater than the value of fixing warnings in Bison 3, if that's all D13974 accomplishes.
If we need bison 3, we should version test in `make` and exit with a better error.