Categories:
Audio (13)
Biotech (29)
Bytecode (36)
Database (77)
Framework (7)
Game (7)
General (507)
Graphics (53)
I/O (35)
IDE (2)
JAR Tools (101)
JavaBeans (21)
JDBC (121)
JDK (426)
JSP (20)
Logging (108)
Mail (58)
Messaging (8)
Network (84)
PDF (97)
Report (7)
Scripting (84)
Security (32)
Server (121)
Servlet (26)
SOAP (24)
Testing (54)
Web (15)
XML (309)
Collections:
Other Resources:
JDK 11 jdk.jshell.jmod - JShell Tool
JDK 11 jdk.jshell.jmod is the JMOD file for JDK 11 JShell tool, which can be invoked by the "jshell" command.
JDK 11 JShell tool compiled class files are stored in \fyicenter\jdk-11.0.1\jmods\jdk.jshell.jmod.
JDK 11 JShell tool compiled class files are also linked and stored in the \fyicenter\jdk-11.0.1\lib\modules JImage file.
JDK 11 JShell tool source code files are stored in \fyicenter\jdk-11.0.1\lib\src.zip\jdk.jshell.
You can click and view the content of each source code file in the list below.
✍: FYIcenter
⏎ jdk/jshell/ReplParser.java
/* * Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * * * * * * * * * * * * * * * * * * * * */ package jdk.jshell; import com.sun.tools.javac.code.Source.Feature; import com.sun.tools.javac.code.TypeTag; import com.sun.tools.javac.parser.JavacParser; import com.sun.tools.javac.parser.ParserFactory; import com.sun.tools.javac.parser.Tokens.Comment; import com.sun.tools.javac.parser.Tokens.Comment.CommentStyle; import com.sun.tools.javac.parser.Tokens.Token; import com.sun.tools.javac.resources.CompilerProperties; import com.sun.tools.javac.resources.CompilerProperties.Errors; import static com.sun.tools.javac.parser.Tokens.TokenKind.CLASS; import static com.sun.tools.javac.parser.Tokens.TokenKind.COLON; import static com.sun.tools.javac.parser.Tokens.TokenKind.ENUM; import static com.sun.tools.javac.parser.Tokens.TokenKind.EOF; import static com.sun.tools.javac.parser.Tokens.TokenKind.IMPORT; import static com.sun.tools.javac.parser.Tokens.TokenKind.INTERFACE; import static com.sun.tools.javac.parser.Tokens.TokenKind.LPAREN; import static com.sun.tools.javac.parser.Tokens.TokenKind.MONKEYS_AT; import static com.sun.tools.javac.parser.Tokens.TokenKind.SEMI; import static com.sun.tools.javac.parser.Tokens.TokenKind.VOID; import com.sun.tools.javac.tree.JCTree; import com.sun.tools.javac.tree.JCTree.JCAnnotation; import com.sun.tools.javac.tree.JCTree.JCCompilationUnit; import com.sun.tools.javac.tree.JCTree.JCExpression; import com.sun.tools.javac.tree.JCTree.JCExpressionStatement; import com.sun.tools.javac.tree.JCTree.JCModifiers; import com.sun.tools.javac.tree.JCTree.JCStatement; import com.sun.tools.javac.tree.JCTree.JCTypeParameter; import com.sun.tools.javac.tree.JCTree.Tag; import static com.sun.tools.javac.tree.JCTree.Tag.IDENT; import com.sun.tools.javac.util.List; import com.sun.tools.javac.util.ListBuffer; import com.sun.tools.javac.util.Name; import com.sun.tools.javac.util.Position; /** * This is a subclass of JavacParser which overrides one method with a modified * verson of that method designed to allow parsing of one "snippet" of Java * code without the surrounding context of class, method, etc. * Accepts an expression, a statement, an import, or the declaration of a * method, variable, or type (class, interface, ...). */ class ReplParser extends JavacParser { // force starting in expression mode private final boolean forceExpression; public ReplParser(ParserFactory fac, com.sun.tools.javac.parser.Lexer S, boolean keepDocComments, boolean keepLineMap, boolean keepEndPositions, boolean forceExpression) { super(fac, S, keepDocComments, keepLineMap, keepEndPositions); this.forceExpression = forceExpression; } /** * As faithful a clone of the overridden method as possible while still * achieving the goal of allowing the parse of a stand-alone snippet. * As a result, some variables are assigned and never used, tests are * always true, loops don't, etc. This is to allow easy transition as the * underlying method changes. * @return a snippet wrapped in a compilation unit */ @Override public JCCompilationUnit parseCompilationUnit() { Token firstToken = token; JCModifiers mods = null; boolean seenImport = false; boolean seenPackage = false; ListBuffer<JCTree> defs = new ListBuffer<>(); if (token.kind == MONKEYS_AT) { mods = modifiersOpt(); } boolean firstTypeDecl = true; while (token.kind != EOF) { if (token.pos > 0 && token.pos <= endPosTable.errorEndPos) { // error recovery skip(true, false, false, false); if (token.kind == EOF) { break; } } if (mods == null && token.kind == IMPORT) { seenImport = true; defs.append(importDeclaration()); } else { Comment docComment = token.comment(CommentStyle.JAVADOC); if (firstTypeDecl && !seenImport && !seenPackage) { docComment = firstToken.comment(CommentStyle.JAVADOC); } List<? extends JCTree> udefs = replUnit(mods, docComment); // if (def instanceof JCExpressionStatement) // def = ((JCExpressionStatement)def).expr; for (JCTree def : udefs) { defs.append(def); } mods = null; firstTypeDecl = false; } break; // Remove to process more than one snippet } List<JCTree> rdefs = defs.toList(); class ReplUnit extends JCCompilationUnit { public ReplUnit(List<JCTree> defs) { super(defs); } } JCCompilationUnit toplevel = new ReplUnit(rdefs); if (rdefs.isEmpty()) { storeEnd(toplevel, S.prevToken().endPos); } toplevel.lineMap = S.getLineMap(); this.endPosTable.setParser(null); // remove reference to parser toplevel.endPositions = this.endPosTable; return toplevel; } @SuppressWarnings("fallthrough") List<? extends JCTree> replUnit(JCModifiers pmods, Comment dc) { switch (token.kind) { case EOF: return List.nil(); case RBRACE: case CASE: case DEFAULT: // These are illegal, fall through to handle as illegal statement case LBRACE: case IF: case FOR: case WHILE: case DO: case TRY: case SWITCH: case RETURN: case THROW: case BREAK: case CONTINUE: case SEMI: case ELSE: case FINALLY: case CATCH: case ASSERT: return List.<JCTree>of(parseStatement()); case SYNCHRONIZED: if (peekToken(LPAREN)) { return List.<JCTree>of(parseStatement()); } //fall-through default: JCModifiers mods = modifiersOpt(pmods); if (token.kind == CLASS || token.kind == INTERFACE || token.kind == ENUM) { return List.<JCTree>of(classOrInterfaceOrEnumDeclaration(mods, dc)); } else { int pos = token.pos; List<JCTypeParameter> typarams = typeParametersOpt(); // if there are type parameters but no modifiers, save the start // position of the method in the modifiers. if (typarams.nonEmpty() && mods.pos == Position.NOPOS) { mods.pos = pos; storeEnd(mods, pos); } List<JCAnnotation> annosAfterParams = annotationsOpt(Tag.ANNOTATION); if (annosAfterParams.nonEmpty()) { checkSourceLevel(annosAfterParams.head.pos, Feature.ANNOTATIONS_AFTER_TYPE_PARAMS); mods.annotations = mods.annotations.appendList(annosAfterParams); if (mods.pos == Position.NOPOS) { mods.pos = mods.annotations.head.pos; } } Token prevToken = token; pos = token.pos; JCExpression t; boolean isVoid = token.kind == VOID; if (isVoid) { t = to(F.at(pos).TypeIdent(TypeTag.VOID)); nextToken(); } else { // return type of method, declared type of variable, or an expression // unless expression is being forced t = term(forceExpression ? EXPR : EXPR | TYPE); } if (token.kind == COLON && t.hasTag(IDENT)) { // labelled statement nextToken(); JCStatement stat = parseStatement(); return List.<JCTree>of(F.at(pos).Labelled(prevToken.name(), stat)); } else if ((isVoid || (lastmode & TYPE) != 0) && LAX_IDENTIFIER.accepts(token.kind)) { // we have "Type Ident", so we can assume it is variable or method declaration pos = token.pos; Name name = ident(); if (token.kind == LPAREN) { // method declaration //mods.flags |= Flags.STATIC; return List.of(methodDeclaratorRest( pos, mods, t, name, typarams, false, isVoid, dc)); } else if (!isVoid && typarams.isEmpty()) { // variable declaration //mods.flags |= Flags.STATIC; List<JCTree> defs = variableDeclaratorsRest(pos, mods, t, name, false, dc, new ListBuffer<JCTree>(), true).toList(); accept(SEMI); storeEnd(defs.last(), S.prevToken().endPos); return defs; } else { // malformed declaration, return error pos = token.pos; List<JCTree> err = isVoid ? List.of(toP(F.at(pos).MethodDef(mods, name, t, typarams, List.nil(), List.nil(), null, null))) : null; return List.<JCTree>of(syntaxError(token.pos, err, Errors.Expected(LPAREN))); } } else if (!typarams.isEmpty()) { // type parameters on non-variable non-method -- error return List.<JCTree>of(syntaxError(token.pos, Errors.IllegalStartOfType)); } else { // expression-statement or expression to evaluate JCExpressionStatement expr = toP(F.at(pos).Exec(t)); return List.<JCTree>of(expr); } } } } }
⏎ jdk/jshell/ReplParser.java
Or download all of them as a single archive file:
File name: jdk.jshell-11.0.1-src.zip File size: 283093 bytes Release date: 2018-11-04 Download
⇒ JDK 11 jdk.jsobject.jmod - JS Object Module
2020-06-30, 31247👍, 0💬
Popular Posts:
What JAR files are required to run dom\Counter.java provided in the Apache Xerces package? You can f...
maven-core-3.8.6.jar is the JAR file for Apache Maven 3.8.6 Core module. Apache Maven is a software ...
What Is commons-logging-1.2.jar? commons-logging-1.2.jar is the JAR file for Apache Commons Logging ...
ASM is an all purpose Java bytecode manipulation and analysis framework. It can be used to modify ex...
ANTLR is a powerful parser generator for multiple programming languages including Java. ANTLR contai...