================ @@ -833,13 +885,207 @@ class AnnotatingParser { Left->setType(TT_ArrayInitializerLSquare); } FormatToken *Tok = CurrentToken; + if (Style.isTableGen()) { + if (CurrentToken->isOneOf(tok::comma, tok::minus, tok::ellipsis)) { + // '-' and '...' appears as a separator in slice. + next(); + } else { + // In TableGen there must be a list of Values in square brackets. + // It must be ValueList or SliceElements. + if (!parseTableGenValue()) + return false; + } + updateParameterCount(Left, Tok); + continue; + } if (!consumeToken()) return false; updateParameterCount(Left, Tok); } return false; } + void nextTableGenNonComment() { + next(); + while (CurrentToken && CurrentToken->is(tok::comment)) + next(); + } + + bool parseTableGenValue(bool ParseNameMode = false) { ---------------- hnakamura5 wrote:
I added some more comments, here and on tryToParseTableGenTokVar. Actually the behavior of return value is same as other parse functions here such as parseAngle, parseBrace. That is, returning false results in the total failure of parseLine itself. They do not backtrack on fail. https://github.com/llvm/llvm-project/pull/80299 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits