文件最后提交记录最后更新时间
[pseudo] Use the prebuilt cxx grammar for the lit tests, NFC. Differential Revision: https://reviews.llvm.org/D1290743 年前
[pseudo] Implement guard extension. - Extend the GLR parser to allow conditional reduction based on the guard functions; - Implement two simple guards (contextual-override/final) for cxx.bnf; - layering: clangPseudoCXX depends on clangPseudo (as the guard function need to access the TokenStream); Differential Revision: https://reviews.llvm.org/D1274483 年前
[pseudo] Eliminate the dangling-else syntax ambiguity. - the grammar ambiguity is eliminated by a guard; - modify the guard function signatures, now all parameters are folded in to a single object, avoid a long parameter list (as we will add more parameters in the near future); Reviewed By: sammccall Differential Revision: https://reviews.llvm.org/D1301603 年前
[pseudo] Eliminate multiple-specified-types ambiguities using guards Motivating case: foo bar; is not a declaration of nothing with foo and bar both types. This is a common and critical ambiguity, clangd/AST.cpp has 20% fewer ambiguous nodes (1674->1332) after this change. Differential Revision: https://reviews.llvm.org/D1303373 年前
[pseudo] Implement a guard to determine function declarator. This eliminates some simple-declaration/function-definition false parses. - implement a function to determine whether a declarator ForestNode is a function declarator; - extend the standard declarator to two guarded function-declarator and non-function-declarator nonterminals; Differential Revision: https://reviews.llvm.org/D1292223 年前
[pseudo] Implement a guard to determine function declarator. This eliminates some simple-declaration/function-definition false parses. - implement a function to determine whether a declarator ForestNode is a function declarator; - extend the standard declarator to two guarded function-declarator and non-function-declarator nonterminals; Differential Revision: https://reviews.llvm.org/D1292223 年前
[pseudo] Apply the function-declarator to member functions. A followup patch of d489b3807f096584175c321ce7f20e9dcd49b1da, but for member functions, this will eliminate a false parse of member declaration. Differential Revision: https://reviews.llvm.org/D1317203 年前
[pseudo] Eliminate an ambiguity for the empty member declaration. We happened to introduce a member-declaration := ; rule when inlining the member-declaration := decl-specifier-seq_opt member-declarator-list_opt ;. And with the member-declaration := empty-declaration rule, we had two parses of ;. This patch is to restrict the grammar to eliminate the member-declaration := ; rule. Differential Revision: https://reviews.llvm.org/D1317243 年前
[pseudo] Define recovery strategy as grammar extension. Differential Revision: https://reviews.llvm.org/D1291583 年前
[pseudo] Use the prebuilt cxx grammar for the lit tests, NFC. Differential Revision: https://reviews.llvm.org/D1290743 年前
[pseudo] Key guards by RuleID, add guards to literals (and 0). After this, NUMERIC_CONSTANT and strings should parse only one way. There are 8 types of literals, and 24 valid (literal, TokenKind) pairs. This means adding 8 new named guards (or 24, if we want to assert the token). It seems fairly clear to me at this point that the guard names are unneccesary indirection: the guards are in fact coupled to the rule signature. (Also add the zero guard I forgot in the previous patch.) Differential Revision: https://reviews.llvm.org/D1300663 年前
[pseudo] Key guards by RuleID, add guards to literals (and 0). After this, NUMERIC_CONSTANT and strings should parse only one way. There are 8 types of literals, and 24 valid (literal, TokenKind) pairs. This means adding 8 new named guards (or 24, if we want to assert the token). It seems fairly clear to me at this point that the guard names are unneccesary indirection: the guards are in fact coupled to the rule signature. (Also add the zero guard I forgot in the previous patch.) Differential Revision: https://reviews.llvm.org/D1300663 年前
[pseudo] Eliminate the false :: nested-name-specifier ambiguity The solution is to favor the longest possible nest-name-specifier, and drop other alternatives by using the guard, per per C++ [basic.lookup.qual.general]. Motivated cases: Foo::Foo() {}; // the constructor can be parsed as: // - Foo ::Foo(); // where the first Foo is return-type, and ::Foo is the function declarator // + Foo::Foo(); // where Foo::Foo is the function declarator void test() { // a very slow parsing case when there are many qualifers! X::Y::Z; // The statement can be parsed as: // - X ::Y::Z; // ::Y::Z is the declarator // - X::Y ::Z; // ::Z is the declarator // + X::Y::Z; // a declaration without declarator (X::Y::Z is decl-specifier-seq) // + X::Y::Z; // a qualifed-id expression } Differential Revision: https://reviews.llvm.org/D1305113 年前
[pseudo] Add bracket recovery for function parameters.3 年前
[pseudo] Use the prebuilt cxx grammar for the lit tests, NFC. Differential Revision: https://reviews.llvm.org/D1290743 年前
[pseudo] Implement a guard to determine function declarator. This eliminates some simple-declaration/function-definition false parses. - implement a function to determine whether a declarator ForestNode is a function declarator; - extend the standard declarator to two guarded function-declarator and non-function-declarator nonterminals; Differential Revision: https://reviews.llvm.org/D1292223 年前
[pseudo] Implement a guard to determine function declarator. This eliminates some simple-declaration/function-definition false parses. - implement a function to determine whether a declarator ForestNode is a function declarator; - extend the standard declarator to two guarded function-declarator and non-function-declarator nonterminals; Differential Revision: https://reviews.llvm.org/D1292223 年前
[pseudo] Eliminate a false parse of structured binding declaration. Using the guard to implement part of the rule https://eel.is/c++draft/dcl.pre#6. void foo() { // can be parsed as // - structured-binding declaration (a false parse) // - assignment expression array[index] = value; } Differential Revision: https://reviews.llvm.org/D1322603 年前
[pseudo] Use the prebuilt cxx grammar for the lit tests, NFC. Differential Revision: https://reviews.llvm.org/D1290743 年前
[pseudo] Use the prebuilt cxx grammar for the lit tests, NFC. Differential Revision: https://reviews.llvm.org/D1290743 年前