I'm using mesa glsl-compiler as backend for glsl-debugger interface with heavy 
use of locations for graphical representation. Locations proposed by original 
parser is wrong in most cases, because it uses yylloc for all bison rules. This 
patch includes:
1. Change locations setup in glsl_parser.yy from yylloc to appropriate token 
locations.
2. Addition of two fields in ast_node location to hold end position of token.
3. Addition of ast_node method to setup range locations (for aggregate tokens).
4. Fix for glcpp-lex.l. It handled spaces wrong and convert two adjacent spaces 
into one, which added location offset for shaders with indentation.

---
 src/glsl/ast.h                  |  36 +++++--
 src/glsl/glcpp/glcpp-lex.l      |   5 +-
 src/glsl/glsl_lexer.ll          |   3 +-
 src/glsl/glsl_parser.yy         | 215 +++++++++++++++++++++-------------------
 src/glsl/glsl_parser_extras.cpp |   6 +-
 5 files changed, 150 insertions(+), 115 deletions(-)

-- 
1.8.3.2

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to