37 *err += message +
"\n";
40 const int kTruncateColumn = 72;
41 if (col > 0 && col < kTruncateColumn) {
43 bool truncated =
true;
44 for (len = 0; len < kTruncateColumn; ++len) {
45 if (context[len] == 0 || context[len] ==
'\n') {
50 *err += string(context, len);
54 *err += string(col,
' ');
55 *err +=
"^ near here";
62 Start(
"input", input);
74 case ERROR:
return "lexing error";
75 case BUILD:
return "'build'";
76 case COLON:
return "':'";
77 case DEFAULT:
return "'default'";
79 case IDENT:
return "identifier";
80 case INCLUDE:
return "'include'";
81 case INDENT:
return "indent";
83 case PIPE2:
return "'||'";
84 case PIPE:
return "'|'";
85 case POOL:
return "'pool'";
86 case RULE:
return "'rule'";
88 case TEOF:
return "eof";
96 return " ($ also escapes ':')";
106 return "carriage returns are not allowed, use newlines";
108 return "tabs are not allowed, use spaces";
111 return "lexing error";
119 const char* p =
ofs_;
170 const char* p =
ofs_;
183 const char* p =
ofs_;
185 const char* start = p;
200 const char* p =
ofs_;