14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26 package com.sun.tools.javac.parser;
27
28 import java.util.*;
29 import java.util.stream.Collectors;
30
31 import com.sun.source.tree.CaseTree.CaseKind;
32 import com.sun.source.tree.MemberReferenceTree.ReferenceMode;
33 import com.sun.source.tree.ModuleTree.ModuleKind;
34 import com.sun.source.tree.Tree;
35
36 import com.sun.tools.javac.code.*;
37 import com.sun.tools.javac.code.Source.Feature;
38 import com.sun.tools.javac.parser.Tokens.*;
39 import com.sun.tools.javac.parser.Tokens.Comment.CommentStyle;
40 import com.sun.tools.javac.resources.CompilerProperties.Errors;
41 import com.sun.tools.javac.resources.CompilerProperties.Fragments;
42 import com.sun.tools.javac.resources.CompilerProperties.Warnings;
43 import com.sun.tools.javac.tree.*;
44 import com.sun.tools.javac.tree.JCTree.*;
45 import com.sun.tools.javac.util.*;
46 import com.sun.tools.javac.util.JCDiagnostic.DiagnosticFlag;
47 import com.sun.tools.javac.util.JCDiagnostic.Error;
48 import com.sun.tools.javac.util.JCDiagnostic.Fragment;
49 import com.sun.tools.javac.util.List;
50
51 import static com.sun.tools.javac.parser.Tokens.TokenKind.*;
52 import static com.sun.tools.javac.parser.Tokens.TokenKind.ASSERT;
53 import static com.sun.tools.javac.parser.Tokens.TokenKind.CASE;
54 import static com.sun.tools.javac.parser.Tokens.TokenKind.CATCH;
55 import static com.sun.tools.javac.parser.Tokens.TokenKind.EQ;
56 import static com.sun.tools.javac.parser.Tokens.TokenKind.GT;
57 import static com.sun.tools.javac.parser.Tokens.TokenKind.IMPORT;
58 import static com.sun.tools.javac.parser.Tokens.TokenKind.LT;
59 import static com.sun.tools.javac.tree.JCTree.Tag.*;
60 import static com.sun.tools.javac.resources.CompilerProperties.Fragments.ImplicitAndExplicitNotAllowed;
61 import static com.sun.tools.javac.resources.CompilerProperties.Fragments.VarAndExplicitNotAllowed;
62 import static com.sun.tools.javac.resources.CompilerProperties.Fragments.VarAndImplicitNotAllowed;
63 import com.sun.tools.javac.tree.JCTree.JCStatement;
64
65 /** The parser maps a token sequence into an abstract syntax
66 * tree. It operates by recursive descent, with code derived
67 * systematically from an LL(1) grammar. For efficiency reasons, an
68 * operator precedence scheme is used for parsing binary operation
69 * expressions.
70 *
71 * <p><b>This is NOT part of any supported API.
72 * If you write code that depends on this, you do so at your own risk.
73 * This code and its internal interfaces are subject to change or
74 * deletion without notice.</b>
75 */
76 public class JavacParser implements Parser {
77
78 /** The number of precedence levels of infix operators.
79 */
80 private static final int infixPrecedenceLevels = 10;
81
82 /** Is the parser instantiated to parse a module-info file ?
83 */
|
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26 package com.sun.tools.javac.parser;
27
28 import java.util.*;
29 import java.util.stream.Collectors;
30
31 import com.sun.source.tree.CaseTree.CaseKind;
32 import com.sun.source.tree.MemberReferenceTree.ReferenceMode;
33 import com.sun.source.tree.ModuleTree.ModuleKind;
34
35 import com.sun.tools.javac.code.*;
36 import com.sun.tools.javac.code.Source.Feature;
37 import com.sun.tools.javac.parser.Tokens.*;
38 import com.sun.tools.javac.parser.Tokens.Comment.CommentStyle;
39 import com.sun.tools.javac.resources.CompilerProperties.Errors;
40 import com.sun.tools.javac.resources.CompilerProperties.Fragments;
41 import com.sun.tools.javac.resources.CompilerProperties.Warnings;
42 import com.sun.tools.javac.tree.*;
43 import com.sun.tools.javac.tree.JCTree.*;
44 import com.sun.tools.javac.util.*;
45 import com.sun.tools.javac.util.JCDiagnostic.DiagnosticFlag;
46 import com.sun.tools.javac.util.JCDiagnostic.Error;
47 import com.sun.tools.javac.util.JCDiagnostic.Fragment;
48 import com.sun.tools.javac.util.List;
49
50 import static com.sun.tools.javac.parser.Tokens.TokenKind.*;
51 import static com.sun.tools.javac.parser.Tokens.TokenKind.ASSERT;
52 import static com.sun.tools.javac.parser.Tokens.TokenKind.CASE;
53 import static com.sun.tools.javac.parser.Tokens.TokenKind.CATCH;
54 import static com.sun.tools.javac.parser.Tokens.TokenKind.EQ;
55 import static com.sun.tools.javac.parser.Tokens.TokenKind.GT;
56 import static com.sun.tools.javac.parser.Tokens.TokenKind.IMPORT;
57 import static com.sun.tools.javac.parser.Tokens.TokenKind.LT;
58 import static com.sun.tools.javac.tree.JCTree.Tag.*;
59 import static com.sun.tools.javac.resources.CompilerProperties.Fragments.ImplicitAndExplicitNotAllowed;
60 import static com.sun.tools.javac.resources.CompilerProperties.Fragments.VarAndExplicitNotAllowed;
61 import static com.sun.tools.javac.resources.CompilerProperties.Fragments.VarAndImplicitNotAllowed;
62
63 /** The parser maps a token sequence into an abstract syntax
64 * tree. It operates by recursive descent, with code derived
65 * systematically from an LL(1) grammar. For efficiency reasons, an
66 * operator precedence scheme is used for parsing binary operation
67 * expressions.
68 *
69 * <p><b>This is NOT part of any supported API.
70 * If you write code that depends on this, you do so at your own risk.
71 * This code and its internal interfaces are subject to change or
72 * deletion without notice.</b>
73 */
74 public class JavacParser implements Parser {
75
76 /** The number of precedence levels of infix operators.
77 */
78 private static final int infixPrecedenceLevels = 10;
79
80 /** Is the parser instantiated to parse a module-info file ?
81 */
|