@@ -103,8 +103,8 @@ public abstract class PrologParser implements Iterable<PrologTerm>, AutoCloseabl
103
103
protected final ParserContext context ;
104
104
protected final int parserFlags ;
105
105
private final Tokenizer tokenizer ;
106
- private boolean autoCloseReaderFlag ;
107
106
private final List <TokenizedCommentListener > commentTokenListeners ;
107
+ private PrologTermReadResult deferredReadTerm ;
108
108
109
109
protected PrologParser (
110
110
final Reader source ,
@@ -149,17 +149,18 @@ public static Koi7CharOpMap findMetaOps() {
149
149
return Koi7CharOpMap .copyOf (META_OP_MAP );
150
150
}
151
151
152
+ private static boolean isComment (final TokenizerResult tokenizerResult ) {
153
+ return tokenizerResult != null
154
+ && tokenizerResult .getResult ().getType () == TermType .ATOM
155
+ && (tokenizerResult .getResult ().getQuotation () == Quotation .COMMENT_LINE
156
+ || tokenizerResult .getResult ().getQuotation () == Quotation .COMMENT_BLOCK );
157
+ }
158
+
152
159
/**
153
- * Set flag to close provided reader automatically during close .
160
+ * Access to the internal tokenizer, it is mainly for test purposes because parser makes reading into internal buffers .
154
161
*
155
- * @return the parser instance
156
- * @see PrologParser#close()
162
+ * @return the internal tokenizer in use by the parser
157
163
*/
158
- public PrologParser autoCloseReader () {
159
- this .autoCloseReaderFlag = true ;
160
- return this ;
161
- }
162
-
163
164
public Tokenizer getInternalTokenizer () {
164
165
return this .tokenizer ;
165
166
}
@@ -180,15 +181,6 @@ public ParserContext getContext() {
180
181
return context ;
181
182
}
182
183
183
- private PrologTermReadResult deferredReadTerm ;
184
-
185
- private static boolean isComment (final TokenizerResult tokenizerResult ) {
186
- return tokenizerResult != null
187
- && tokenizerResult .getResult ().getType () == TermType .ATOM
188
- && (tokenizerResult .getResult ().getQuotation () == Quotation .COMMENT_LINE
189
- || tokenizerResult .getResult ().getQuotation () == Quotation .COMMENT_BLOCK );
190
- }
191
-
192
184
private void notifyCommentTokenListeners (final TokenizerResult commentToken ) {
193
185
for (final TokenizedCommentListener listener : this .commentTokenListeners ) {
194
186
listener .onCommentToken (this , commentToken );
@@ -688,7 +680,18 @@ private void checkForNull(final Object obj, final String message,
688
680
@ Override
689
681
public void close () throws IOException {
690
682
this .deferredReadTerm = null ;
691
- this .tokenizer .close (this .autoCloseReaderFlag );
683
+ this .tokenizer .close (this .isCloseReader ());
684
+ }
685
+
686
+ /**
687
+ * Returns flag to close the base reader. By default the reader will be closed.
688
+ *
689
+ * @return true if close base reader during its close, false to not close reader
690
+ * @see PrologParser#close()
691
+ * @since 2.2.0
692
+ */
693
+ protected boolean isCloseReader () {
694
+ return true ;
692
695
}
693
696
694
697
@ Override
0 commit comments