Categories:
Audio (13)
Biotech (29)
Bytecode (36)
Database (77)
Framework (7)
Game (7)
General (507)
Graphics (53)
I/O (35)
IDE (2)
JAR Tools (102)
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 (322)
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, ≈61🔥, 0💬
Popular Posts:
JDK 11 java.desktop.jmod is the JMOD file for JDK 11 Desktop module. JDK 11 Desktop module compiled ...
JavaMail Source Code Files are provided in the source package file, httpcomponents-client-5. 2-src.zi...
JRE 8 plugin.jar is the JAR file for JRE 8 Java Control Panel Plugin interface and tools. JRE (Java ...
What is the sax\Counter.java provided in the Apache Xerces package? I have Apache Xerces 2.11.0 inst...
Apache Commons Lang 3 is the 3rd version of Apache Commons Lang, which provides a host of helper uti...