@@ -187,7 +187,7 @@ public void testEndOfStream() {
187187 assertEquals (ATOM , term .getTermType ());
188188 assertEquals ("world" , term .getTermText ());
189189
190- assertThrows (NoSuchElementException .class , () -> parser . next () );
190+ assertThrows (NoSuchElementException .class , parser :: next );
191191 }
192192
193193 private void checkWrongClauseReadingWithPPE (final String readClause , final int stringPosition ) {
@@ -430,10 +430,10 @@ public void testParseOperator() {
430430 ((Op ) struct .getFunctor ()).getOpAssoc ());
431431 assertEquals ("X" , struct .getTermAt (0 ).getTermText ());
432432 assertEquals (TermType .STRUCT , struct .getTermAt (1 ).getTermType ());
433- assertEquals ("+" , (( PrologStruct ) struct .getTermAt (1 ) ).getFunctor ().getTermText ());
433+ assertEquals ("+" , struct .getTermAt (1 ).getFunctor ().getTermText ());
434434 assertEquals (OpAssoc .YFX ,
435- ((Op ) (( PrologStruct ) struct .getTermAt (1 ) ).getFunctor ()).getOpAssoc ());
436- assertEquals (2 , (( PrologStruct ) struct .getTermAt (1 ) ).getArity ());
435+ ((Op ) struct .getTermAt (1 ).getFunctor ()).getOpAssoc ());
436+ assertEquals (2 , struct .getTermAt (1 ).getArity ());
437437 assertEquals ("X" , ((PrologStruct ) struct .getTermAt (1 )).getTermAt (0 ).getTermText ());
438438 assertEquals ("1" , ((PrologStruct ) struct .getTermAt (1 )).getTermAt (1 ).getTermText ());
439439
@@ -470,9 +470,9 @@ public void testSimilarOperatorInterpretation() {
470470 final StubContext contextStub = new StubContext (operators );
471471 final PrologTerm term = parseEd ("+++++++++++ 3." , contextStub ).next ();
472472
473- assertSame (firstOperator , (( PrologStruct ) term ) .getFunctor ());
474- assertSame (secondOperator , ((PrologStruct ) ((( PrologStruct ) term ).getTermAt (0 )) ).getFunctor ());
475- assertSame (thirdOperator , ((PrologStruct ) ((PrologStruct ) ((( PrologStruct ) term ).getTermAt (0 ))).getTermAt (0 ) ).getFunctor ());
473+ assertSame (firstOperator , term .getFunctor ());
474+ assertSame (secondOperator , ((PrologStruct ) term ).getTermAt (0 ).getFunctor ());
475+ assertSame (thirdOperator , ((PrologStruct ) ((( PrologStruct ) term ).getTermAt (0 ))).getTermAt (0 ).getFunctor ());
476476
477477 }
478478
@@ -517,7 +517,7 @@ public void testOperatorHierarchy() {
517517
518518 assertEquals (TermType .STRUCT , term .getTermType ());
519519 assertEquals ("<===>" , term .getTermText ());
520- assertEquals (2 , (( PrologStruct ) term ) .getArity ());
520+ assertEquals (2 , term .getArity ());
521521 assertEquals (800 , term .getPrecedence ());
522522
523523 final PrologStruct leftBranch = (PrologStruct ) ((PrologStruct ) term ).getTermAt (0 );
@@ -569,8 +569,12 @@ private void assertReadTerms(final int expected, final String resource, final Op
569569 }
570570 }
571571
572+ 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 )));
574+ }
575+
572576 private void assertReadSictusTerms (final int expected , final String resource , final Op ... ops ) {
573- final ParserContext defaultContext = of ( ParserContext . FLAG_BLOCK_COMMENTS | ParserContext . FLAG_CURLY_BRACKETS_ALLOWED , Op . join ( Op . ISO , Op . SICTUS_SPECIFIC , Arrays . asList ( ops )) );
577+ final ParserContext defaultContext = makeSictusContext ( ops );
574578 try (Reader reader = new InputStreamReader (getClass ().getResourceAsStream ("bench/" + resource ), StandardCharsets .UTF_8 )) {
575579 final PrologParser parser = new GenericPrologParser (reader , defaultContext );
576580 assertEquals (expected , parser .stream ().count ());
@@ -587,6 +591,28 @@ public void testCurlyBracket() {
587591 assertThrows (PrologParserException .class , () -> new GenericPrologParser (new StringReader ("test{1,2,3,4,5}." ), of (FLAG_CURLY_BRACKETS_ALLOWED )).next ());
588592 }
589593
594+ @ Test
595+ public void testOperatorExamplesFromSictusManual () {
596+ final ParserContext sictusContext = makeSictusContext ();
597+
598+ PrologParser parser = new GenericPrologParser (new StringReader (":-(p;q),r." ), sictusContext );
599+
600+ PrologTerm term = parser .next ();
601+ assertFalse (parser .hasNext ());
602+
603+ assertEquals (":-" , term .getFunctor ().getTermText ());
604+ assertEquals (1 , term .getArity ());
605+ term = ((PrologStruct ) term ).getTermAt (0 );
606+ assertEquals ("," , term .getFunctor ().getTermText ());
607+ assertEquals ("r" , ((PrologStruct ) term ).getTermAt (1 ).getTermText ());
608+ term = ((PrologStruct ) term ).getTermAt (0 );
609+ assertEquals ("()" , term .getFunctor ().getTermText ());
610+ term = ((PrologStruct ) term ).getTermAt (0 );
611+ assertEquals (";" , term .getFunctor ().getTermText ());
612+ assertEquals ("p" , ((PrologStruct ) term ).getTermAt (0 ).getTermText ());
613+ assertEquals ("q" , ((PrologStruct ) term ).getTermAt (1 ).getTermText ());
614+ }
615+
590616 @ Test
591617 public void testParseSictusBench () {
592618 assertReadSictusTerms (136 , "boyer.pl" );
@@ -786,7 +812,7 @@ public void testRecognizingUserOperatorsWhichSimilarMetaOperators() {
786812
787813 final PrologStruct structure = (PrologStruct ) parseEd ("(((hello...." , stubContext ).next ();
788814 assertEquals ("..." , structure .getFunctor ().getTermText ());
789- assertEquals ("(((" , (( PrologStruct ) structure .getTermAt (0 ) ).getFunctor ().getTermText ());
815+ assertEquals ("(((" , structure .getTermAt (0 ).getFunctor ().getTermText ());
790816 assertEquals ("hello" , ((PrologStruct ) structure .getTermAt (0 )).getTermAt (0 ).getTermText ());
791817 }
792818
@@ -890,9 +916,9 @@ public void testVeryLongStructure() {
890916 @ Test
891917 public void testParserStream () {
892918 PrologParser parser = parseEd ("z(some).a(X):-[X].b('\\ 'hello world\\ '').list([_|Tail]) :- list(Tail)." );
893- final String joined = parser .stream ().map (x -> x . toString () ).collect (joining (". " , "" , "." ));
919+ final String joined = parser .stream ().map (PrologTerm :: toString ).collect (joining (". " , "" , "." ));
894920 parser = parseEd (joined );
895- assertEquals (joined , parser .stream ().map (x -> x . toString () ).collect (joining (". " , "" , "." )));
921+ assertEquals (joined , parser .stream ().map (PrologTerm :: toString ).collect (joining (". " , "" , "." )));
896922 assertEquals ("z(some). a(X) :- [X]. b('\\ 'hello world\\ ''). list([_|Tail]) :- list(Tail)." , joined );
897923 }
898924
@@ -906,7 +932,7 @@ public void testStructStream() {
906932 "5\n " +
907933 "6\n " +
908934 "7\n " +
909- "8" , parser .next ().stream ().map (x -> x . toString () ).collect (joining ("\n " )));
935+ "8" , parser .next ().stream ().map (PrologTerm :: toString ).collect (joining ("\n " )));
910936 }
911937
912938 @ Test
@@ -920,7 +946,7 @@ public void testListStream() {
920946 "6\n " +
921947 "7\n " +
922948 "8\n " +
923- "_" , parser .next ().stream ().map (x -> x . toString () ).collect (joining ("\n " )));
949+ "_" , parser .next ().stream ().map (PrologTerm :: toString ).collect (joining ("\n " )));
924950 }
925951
926952
@@ -978,22 +1004,22 @@ public void testSignedNumerics_GenericParser() {
9781004 }
9791005
9801006 @ Test
981- public void testMisc () throws Exception {
1007+ public void testMisc () {
9821008 assertNotNull (parseEd ("''(123_345)**[]." ).next ());
9831009 assertEquals ("'+'" , parseEd ("+." ).next ().toString ());
9841010 assertEquals ("some(a, '+', b)" , parseEd ("some(a,+,b)." ).next ().toString ());
9851011 assertEquals ("some('+', '+', '+')" , parseEd ("some(+,+,+)." ).next ().toString ());
9861012 }
9871013
9881014 @ Test
989- public void testParseBigGeneratedPrologSource () throws Exception {
1015+ public void testParseBigGeneratedPrologSource () {
9901016 final int CLAUSES = 1000 ;
9911017 assertEquals (CLAUSES , new GenericPrologParser (new InputStreamReader (new PrologSourceKoi7Generator (CLAUSES , true )), DefaultParserContext .of (FLAG_NONE , Op .SWI )).stream ().count ());
9921018 assertEquals (CLAUSES , new GenericPrologParser (new InputStreamReader (new PrologSourceKoi7Generator (CLAUSES , false )), DefaultParserContext .of (FLAG_NONE , Op .SWI )).stream ().count ());
9931019 }
9941020
9951021 @ Test
996- public void testNonCompletedClause () throws Exception {
1022+ public void testNonCompletedClause () {
9971023 assertThrows (PrologParserException .class , () -> parseEd ("a" ).next ());
9981024 assertThrows (PrologParserException .class , () -> parseEd ("123" ).next ());
9991025 assertThrows (PrologParserException .class , () -> parseEd ("\" dsdsd\" " ).next ());
@@ -1008,12 +1034,12 @@ private void assertOperatorAsFunctor(final String expected, final PrologTerm ter
10081034 assertTrue (term instanceof PrologStruct );
10091035 final PrologStruct struct = (PrologStruct ) term ;
10101036 assertEquals (TermType .OPERATOR , struct .getFunctor ().getTermType ());
1011- assertEquals ((( Op ) struct .getFunctor () ).getArity (), struct .getArity ());
1037+ assertEquals (struct .getFunctor ().getArity (), struct .getArity ());
10121038 assertEquals (expected , term .toString ());
10131039 }
10141040
10151041 @ Test
1016- public void testOperatorAsFunctor () throws Exception {
1042+ public void testOperatorAsFunctor () {
10171043 assertOperatorAsFunctor ("1 + 2" , parseEd ("+(1,2)." ).next ());
10181044 assertOperatorAsFunctor ("1 + 2" , parseEd ("+(1,2)." ).next ());
10191045 assertOperatorAsFunctor ("+ 1" , parseEd ("+(1)." ).next ());
@@ -1027,7 +1053,7 @@ public void testOperatorAsFunctor() throws Exception {
10271053 }
10281054
10291055 @ Test
1030- public void testPairOfOperatorsWithIncompatiblePrecedence () throws Exception {
1056+ public void testPairOfOperatorsWithIncompatiblePrecedence () {
10311057 assertEquals ("- (discontiguous)" , parseEd ("-discontiguous." ).next ().toString ());
10321058 assertEquals ("aab" , parseEd ("aab." , DefaultParserContext .of (FLAG_NONE , Op .make (400 , XF , "aabc" ))).next ().toString ());
10331059 assertEquals ("1 - - -1" , parseEd ("1---1." ).next ().toString ());
@@ -1043,7 +1069,7 @@ public void testPairOfOperatorsWithIncompatiblePrecedence() throws Exception {
10431069 }
10441070
10451071 @ Test
1046- public void testOperatorAsFunctorWithUnsupportedArity () throws Exception {
1072+ public void testOperatorAsFunctorWithUnsupportedArity () {
10471073 assertEquals ("':'(1, 2, 3)" , parseEd (":(1,2,3)." ).next ().toString ());
10481074 assertEquals ("'+'(1, 2, 3)" , parseEd ("+(1,2,3)." ).next ().toString ());
10491075 assertEquals ("':'(1, (2 , 3), 4)" , parseEd (":(1,(2,3),4)." ).next ().toString ());
@@ -1066,14 +1092,14 @@ public void testBlock() {
10661092 }
10671093
10681094 @ Test
1069- public void testAloneOperatorAsAtom () throws Exception {
1095+ public void testAloneOperatorAsAtom () {
10701096 assertEquals (TermType .ATOM , parseEd ("/." ).next ().getTermType ());
10711097 assertEquals (TermType .ATOM , parseEd ("-." ).next ().getTermType ());
10721098 assertEquals (TermType .ATOM , parseEd ("+." ).next ().getTermType ());
10731099 }
10741100
10751101 @ Test
1076- public void testUnexpectedlyEndedReadStream () throws Exception {
1102+ public void testUnexpectedlyEndedReadStream () {
10771103 final Random rnd = new Random (12345 );
10781104
10791105 final AtomicInteger completedClauseCounter = new AtomicInteger ();
@@ -1121,14 +1147,14 @@ public void testVarAsFunctor() {
11211147
11221148 final PrologStruct structB = (PrologStruct ) new GenericPrologParser (new StringReader ("X(a),Y(b),_Z(d)." ), DefaultParserContext .of (FLAG_VAR_AS_FUNCTOR )).next ();
11231149 assertEquals (structB .getFunctor (), Op .METAOPERATOR_COMMA );
1124- assertEquals (TermType .VAR , (( PrologStruct ) structB .getTermAt (0 ) ).getFunctor ().getTermType ());
1125- assertEquals ("X" , (( PrologStruct ) structB .getTermAt (0 ) ).getFunctor ().getTermText ());
1150+ assertEquals (TermType .VAR , structB .getTermAt (0 ).getFunctor ().getTermType ());
1151+ assertEquals ("X" , structB .getTermAt (0 ).getFunctor ().getTermText ());
11261152
11271153 final PrologStruct structC = (PrologStruct ) structB .getTermAt (1 );
1128- assertEquals (TermType .VAR , (( PrologStruct ) structC .getTermAt (0 ) ).getFunctor ().getTermType ());
1129- assertEquals ("Y" , (( PrologStruct ) structC .getTermAt (0 ) ).getFunctor ().getTermText ());
1130- assertEquals (TermType .VAR , (( PrologStruct ) structC .getTermAt (1 ) ).getFunctor ().getTermType ());
1131- assertEquals ("_Z" , (( PrologStruct ) structC .getTermAt (1 ) ).getFunctor ().getTermText ());
1154+ assertEquals (TermType .VAR , structC .getTermAt (0 ).getFunctor ().getTermType ());
1155+ assertEquals ("Y" , structC .getTermAt (0 ).getFunctor ().getTermText ());
1156+ assertEquals (TermType .VAR , structC .getTermAt (1 ).getFunctor ().getTermType ());
1157+ assertEquals ("_Z" , structC .getTermAt (1 ).getFunctor ().getTermText ());
11321158 assertEquals ("X(a) , Y(b) , _Z(d)" , structB .toString ());
11331159 }
11341160
0 commit comments