Skip to content

Commit 66f8b5d

Browse files
committed
refactoring
1 parent 69bcb39 commit 66f8b5d

File tree

5 files changed

+43
-22
lines changed

5 files changed

+43
-22
lines changed

src/main/java/com/igormaznitsa/prologparser/ParserContext.java

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,34 @@
2626
import java.util.Map;
2727

2828
public interface ParserContext {
29-
29+
/**
30+
* Empty flags, no any flag defined.
31+
*/
3032
int FLAG_NONE = 0;
33+
/**
34+
* Flag allows block comments.
35+
*/
3136
int FLAG_BLOCK_COMMENTS = 1;
32-
int FLAG_ZERO_SINGLE_QUOTATION_CHAR_CODE = 2;
37+
/**
38+
* Flag allows construction 0'{char} to get char code.
39+
* Example: 0'a, 0'\r
40+
*/
41+
int FLAG_ZERO_QUOTATION_CHARCODE = 2;
42+
/**
43+
* Flag allows variable as structure functor.
44+
* Example: Var(a,b,c).
45+
*/
3346
int FLAG_VAR_AS_FUNCTOR = 4;
34-
int FLAG_ZERO_STRUCT_ALLOWED = 8;
35-
int FLAG_CURLY_BRACKETS_ALLOWED = 16;
47+
/**
48+
* Flag allows zero-arity structures.
49+
* Example: a().
50+
*/
51+
int FLAG_ZERO_STRUCT = 8;
52+
/**
53+
* Flag allows blocks bounded by curly brackets.
54+
* Example: {a,{b,!,c}}
55+
*/
56+
int FLAG_CURLY_BRACKETS = 16;
3657

3758
boolean hasOpStartsWith(PrologParser source, String namePrefix);
3859

src/main/java/com/igormaznitsa/prologparser/PrologParser.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -466,7 +466,7 @@ private PrologTerm readBlock(final Koi7CharOpMap endOperators) {
466466
if (onlyCharCode == '(') {
467467
readAtom = readBlock(OPERATORS_SUBBLOCK);
468468
} else {
469-
if ((this.parserFlags & ParserContext.FLAG_CURLY_BRACKETS_ALLOWED) == 0) {
469+
if ((this.parserFlags & ParserContext.FLAG_CURLY_BRACKETS) == 0) {
470470
readAtomPrecedence = readOperator.getPrecedence();
471471
processReadAtom = false;
472472
} else {
@@ -534,7 +534,7 @@ private PrologTerm readBlock(final Koi7CharOpMap endOperators) {
534534
readAtom = readStruct(readAtom);
535535
if (readAtom == null) {
536536
// we have met the empty brackets
537-
if ((this.parserFlags & FLAG_ZERO_STRUCT_ALLOWED) == 0) {
537+
if ((this.parserFlags & FLAG_ZERO_STRUCT) == 0) {
538538
throw new PrologParserException("Empty structure is not allowed",
539539
nextTokenLineNumber, nextTokenStrPosition);
540540
} else {

src/main/java/com/igormaznitsa/prologparser/tokenizer/Tokenizer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ public Tokenizer(final PrologParser parser, final Koi7CharOpMap metaOperators, f
7676

7777
final int maxAllowedCharBufferSize = parser.getContext() == null ? Integer.MAX_VALUE : parser.getContext().getMaxTokenizerBufferLength();
7878
this.blockCommentsAllowed = parser.getContext() != null && ((parser.getContext().getFlags() & ParserContext.FLAG_BLOCK_COMMENTS) != 0);
79-
this.zeroSingleQuotationAllowed = parser.getContext() != null && ((parser.getContext().getFlags() & ParserContext.FLAG_ZERO_SINGLE_QUOTATION_CHAR_CODE) != 0);
79+
this.zeroSingleQuotationAllowed = parser.getContext() != null && ((parser.getContext().getFlags() & ParserContext.FLAG_ZERO_QUOTATION_CHARCODE) != 0);
8080

8181
this.strBuf = new StringBuilderEx(32, maxAllowedCharBufferSize);
8282
this.specCharBuf = new StringBuilderEx(8, maxAllowedCharBufferSize);

src/test/java/com/igormaznitsa/prologparser/IntegrationTest.java

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -47,17 +47,17 @@
4747
public class IntegrationTest {
4848

4949
private static PrologParser parseCpl(final String str) {
50-
return new GenericPrologParser(new StringReader(str), DefaultParserContext.of(FLAG_BLOCK_COMMENTS | FLAG_ZERO_SINGLE_QUOTATION_CHAR_CODE, Op.join(Op.SWI, Op.SWI_CPL)));
50+
return new GenericPrologParser(new StringReader(str), DefaultParserContext.of(FLAG_BLOCK_COMMENTS | FLAG_ZERO_QUOTATION_CHARCODE | FLAG_CURLY_BRACKETS, Op.join(Op.SWI, Op.SWI_CPL)));
5151
}
5252

5353
private static PrologParser parseIso(final String str) {
54-
return new GenericPrologParser(new StringReader(str), DefaultParserContext.of(FLAG_NONE | FLAG_ZERO_SINGLE_QUOTATION_CHAR_CODE, Op.ISO));
54+
return new GenericPrologParser(new StringReader(str), DefaultParserContext.of(FLAG_NONE | FLAG_ZERO_QUOTATION_CHARCODE, Op.ISO));
5555
}
5656

5757
private static PrologParser parseEd(final String str) {
5858
final ParserContext parserContext = mock(ParserContext.class);
5959
when(parserContext.getMaxTokenizerBufferLength()).thenReturn(1024);
60-
when(parserContext.getFlags()).thenReturn(ParserContext.FLAG_BLOCK_COMMENTS | FLAG_ZERO_SINGLE_QUOTATION_CHAR_CODE);
60+
when(parserContext.getFlags()).thenReturn(ParserContext.FLAG_BLOCK_COMMENTS | FLAG_ZERO_QUOTATION_CHARCODE | FLAG_CURLY_BRACKETS);
6161
return parseEd(str, parserContext);
6262
}
6363

@@ -67,20 +67,20 @@ private static PrologParser parseEd(final String str, final ParserContext contex
6767

6868
private static PrologParser parseEd(final Reader reader, final ParserContext context) {
6969
return new GenericPrologParser(reader, ParserContextChain.of(
70-
DefaultParserContext.of(FLAG_BLOCK_COMMENTS | FLAG_ZERO_SINGLE_QUOTATION_CHAR_CODE, Op.SWI), context));
70+
DefaultParserContext.of(FLAG_BLOCK_COMMENTS | FLAG_ZERO_QUOTATION_CHARCODE | FLAG_CURLY_BRACKETS, Op.SWI), context));
7171
}
7272

7373
private static PrologParser parseGen(final String str, final ParserContext context) {
7474
final ParserContext parserContext = mock(ParserContext.class);
7575
when(parserContext.getMaxTokenizerBufferLength()).thenReturn(1024);
76-
when(parserContext.getFlags()).thenReturn(ParserContext.FLAG_BLOCK_COMMENTS | FLAG_ZERO_SINGLE_QUOTATION_CHAR_CODE);
76+
when(parserContext.getFlags()).thenReturn(ParserContext.FLAG_BLOCK_COMMENTS | FLAG_ZERO_QUOTATION_CHARCODE | FLAG_CURLY_BRACKETS);
7777
return new GenericPrologParser(new StringReader(str), ParserContextChain.of(context, parserContext));
7878
}
7979

8080
private static GenericPrologParser parseGen(final String str) {
8181
final ParserContext parserContext = mock(ParserContext.class);
8282
when(parserContext.getMaxTokenizerBufferLength()).thenReturn(1024);
83-
when(parserContext.getFlags()).thenReturn(ParserContext.FLAG_BLOCK_COMMENTS | FLAG_ZERO_SINGLE_QUOTATION_CHAR_CODE);
83+
when(parserContext.getFlags()).thenReturn(ParserContext.FLAG_BLOCK_COMMENTS | FLAG_ZERO_QUOTATION_CHARCODE);
8484
return new GenericPrologParser(new StringReader(str), parserContext);
8585
}
8686

@@ -570,7 +570,7 @@ private void assertReadTerms(final int expected, final String resource, final Op
570570
}
571571

572572
private ParserContext makeSictusContext(final Op... ops) {
573-
return of(ParserContext.FLAG_BLOCK_COMMENTS | ParserContext.FLAG_CURLY_BRACKETS_ALLOWED, Op.join(Op.ISO, Op.SICTUS_SPECIFIC, Arrays.asList(ops)));
573+
return of(ParserContext.FLAG_BLOCK_COMMENTS | ParserContext.FLAG_CURLY_BRACKETS, Op.join(Op.ISO, Op.SICTUS_SPECIFIC, Arrays.asList(ops)));
574574
}
575575

576576
private void assertReadSictusTerms(final int expected, final String resource, final Op... ops) {
@@ -586,9 +586,9 @@ private void assertReadSictusTerms(final int expected, final String resource, fi
586586

587587
@Test
588588
public void testCurlyBracket() {
589-
assertEquals("{1 , 2 , 3 , 4 , 5}", new GenericPrologParser(new StringReader("{1,2,3,4,5}."), of(FLAG_CURLY_BRACKETS_ALLOWED)).next().toString());
590-
assertEquals("{1 , {2 , {3 , {4} , 5}}}", new GenericPrologParser(new StringReader("{1,{2,{3,{4},5}}}."), of(FLAG_CURLY_BRACKETS_ALLOWED)).next().toString());
591-
assertThrows(PrologParserException.class, () -> new GenericPrologParser(new StringReader("test{1,2,3,4,5}."), of(FLAG_CURLY_BRACKETS_ALLOWED)).next());
589+
assertEquals("{1 , 2 , 3 , 4 , 5}", new GenericPrologParser(new StringReader("{1,2,3,4,5}."), of(FLAG_CURLY_BRACKETS)).next().toString());
590+
assertEquals("{1 , {2 , {3 , {4} , 5}}}", new GenericPrologParser(new StringReader("{1,{2,{3,{4},5}}}."), of(FLAG_CURLY_BRACKETS)).next().toString());
591+
assertThrows(PrologParserException.class, () -> new GenericPrologParser(new StringReader("test{1,2,3,4,5}."), of(FLAG_CURLY_BRACKETS)).next());
592592
}
593593

594594
@Test
@@ -1161,19 +1161,19 @@ public void testVarAsFunctor() {
11611161
@Test
11621162
public void testAllowZeroStruct() {
11631163
assertThrows(PrologParserException.class, () -> new GenericPrologParser(new StringReader("a()."), DefaultParserContext.of(FLAG_NONE)).next());
1164-
final PrologStruct struct = (PrologStruct) new GenericPrologParser(new StringReader("a()."), DefaultParserContext.of(FLAG_ZERO_STRUCT_ALLOWED)).next();
1164+
final PrologStruct struct = (PrologStruct) new GenericPrologParser(new StringReader("a()."), DefaultParserContext.of(FLAG_ZERO_STRUCT)).next();
11651165
final PrologAtom functor = (PrologAtom) struct.getFunctor();
11661166
assertEquals("a", functor.getTermText());
11671167
assertEquals(0, struct.getArity());
11681168
assertEquals("a()", struct.toString());
11691169

1170-
final PrologStruct structB = (PrologStruct) new GenericPrologParser(new StringReader("a(/*some comment*/)."), DefaultParserContext.of(FLAG_ZERO_STRUCT_ALLOWED | FLAG_BLOCK_COMMENTS)).next();
1170+
final PrologStruct structB = (PrologStruct) new GenericPrologParser(new StringReader("a(/*some comment*/)."), DefaultParserContext.of(FLAG_ZERO_STRUCT | FLAG_BLOCK_COMMENTS)).next();
11711171
assertEquals("a()", structB.toString());
11721172

1173-
final PrologStruct structC = (PrologStruct) new GenericPrologParser(new StringReader("a(),b(),c()."), DefaultParserContext.of(FLAG_ZERO_STRUCT_ALLOWED | FLAG_BLOCK_COMMENTS)).next();
1173+
final PrologStruct structC = (PrologStruct) new GenericPrologParser(new StringReader("a(),b(),c()."), DefaultParserContext.of(FLAG_ZERO_STRUCT | FLAG_BLOCK_COMMENTS)).next();
11741174
assertEquals("a() , b() , c()", structC.toString());
11751175

1176-
final PrologStruct structD = (PrologStruct) new GenericPrologParser(new StringReader("A(),X(),Z()."), DefaultParserContext.of(FLAG_VAR_AS_FUNCTOR | FLAG_ZERO_STRUCT_ALLOWED | FLAG_BLOCK_COMMENTS)).next();
1176+
final PrologStruct structD = (PrologStruct) new GenericPrologParser(new StringReader("A(),X(),Z()."), DefaultParserContext.of(FLAG_VAR_AS_FUNCTOR | FLAG_ZERO_STRUCT | FLAG_BLOCK_COMMENTS)).next();
11771177
assertEquals("A() , X() , Z()", structD.toString());
11781178

11791179
}

src/test/java/com/igormaznitsa/prologparser/tokenizer/TokenizerTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ private Tokenizer tokenizeOf(final String str, final boolean allowBlockComment)
5050
private Tokenizer tokenizeOf(final String str, final ParserContext context) {
5151
return new Tokenizer(
5252
new GenericPrologParser(new StringReader(str),
53-
new ParserContextChain(new DefaultParserContext(ParserContext.FLAG_BLOCK_COMMENTS | ParserContext.FLAG_ZERO_SINGLE_QUOTATION_CHAR_CODE, Op.SWI), context)),
53+
new ParserContextChain(new DefaultParserContext(ParserContext.FLAG_BLOCK_COMMENTS | ParserContext.FLAG_ZERO_QUOTATION_CHARCODE, Op.SWI), context)),
5454
PrologParser.findMetaOps(),
5555
new StringReader(str));
5656
}

0 commit comments

Comments
 (0)