Skip to content

Commit

Permalink
fixed #20 issue, add test
Browse files Browse the repository at this point in the history
  • Loading branch information
Phosphorus15 committed Apr 29, 2020
1 parent 334c402 commit e6d0f14
Show file tree
Hide file tree
Showing 4 changed files with 82 additions and 1 deletion.
2 changes: 1 addition & 1 deletion src/main/lang/prolog.bnf
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ list_constructor ::= '[' ']' | '[' primary '|' primary ']' | '[' primary ']'

common_val ::= common_predicate | ident | literal | list_constructor | '_'

private common_val_or_paren ::= common_val | '(' common_val ')' | '{' common_val '}'
private common_val_or_paren ::= common_val | '(' primary ')' | '{' primary '}'

private primary ::= (common_val_or_paren | logical_not | operator_id) (common_val_or_paren | equiv_binary | logical_or | operator_id)*

Expand Down
4 changes: 4 additions & 0 deletions src/test/scala/parser/PrologParsingTestCaseBase.scala
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@ class PrologParsingTestCaseBase extends ParsingTestCase("", "pl", new PrologPars
doTest(true)
}

def testIssue20(): Unit = {
doTest(true)
}

override def includeRanges(): Boolean = true

override def skipSpaces(): Boolean = true
Expand Down
7 changes: 7 additions & 0 deletions src/test/testData/Issue20.pl
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
ast(Tokens, Out, Options) :-
catch(
(
maplist,
debug(ast, "Renamed", [Renamed])
)
).
70 changes: 70 additions & 0 deletions src/test/testData/Issue20.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
FILE(0,132)
PrologToplevelExprImpl(TOPLEVEL_EXPR)(0,131)
PrologExprHeadImpl(EXPR_HEAD)(0,25)
PrologPredicateImpl(PREDICATE)(0,25)
PrologPredicateIdImpl(PREDICATE_ID)(0,3)
PsiElement(const_id)('ast')(0,3)
PrologParameterListImpl(PARAMETER_LIST)(3,25)
PsiElement(()('(')(3,4)
PrologCommonValImpl(COMMON_VAL)(4,10)
PrologIdentImpl(IDENT)(4,10)
PsiElement(atom_id)('Tokens')(4,10)
PrologEquivBinaryImpl(EQUIV_BINARY)(10,24)
PrologLogicalAndImpl(LOGICAL_AND)(10,24)
PsiElement(,)(',')(10,11)
PrologCommonValImpl(COMMON_VAL)(12,15)
PrologIdentImpl(IDENT)(12,15)
PsiElement(atom_id)('Out')(12,15)
PrologEquivBinaryImpl(EQUIV_BINARY)(15,24)
PrologLogicalAndImpl(LOGICAL_AND)(15,24)
PsiElement(,)(',')(15,16)
PrologCommonValImpl(COMMON_VAL)(17,24)
PrologIdentImpl(IDENT)(17,24)
PsiElement(atom_id)('Options')(17,24)
PsiElement())(')')(24,25)
PsiElement(:-)(':-')(26,28)
PrologExprBodyImpl(EXPR_BODY)(33,131)
PrologCommonValImpl(COMMON_VAL)(33,131)
PrologCommonPredicateImpl(COMMON_PREDICATE)(33,131)
PrologRefPredicateIdImpl(REF_PREDICATE_ID)(33,38)
PsiElement(const_id)('catch')(33,38)
PrologParameterListImpl(PARAMETER_LIST)(38,131)
PsiElement(()('(')(38,39)
PsiElement(()('(')(48,49)
PrologCommonValImpl(COMMON_VAL)(62,69)
PrologCommonPredicateImpl(COMMON_PREDICATE)(62,69)
PrologRefPredicateIdImpl(REF_PREDICATE_ID)(62,69)
PsiElement(const_id)('maplist')(62,69)
PrologEquivBinaryImpl(EQUIV_BINARY)(69,115)
PrologLogicalAndImpl(LOGICAL_AND)(69,115)
PsiElement(,)(',')(69,70)
PrologCommonValImpl(COMMON_VAL)(83,115)
PrologCommonPredicateImpl(COMMON_PREDICATE)(83,115)
PrologRefPredicateIdImpl(REF_PREDICATE_ID)(83,88)
PsiElement(const_id)('debug')(83,88)
PrologParameterListImpl(PARAMETER_LIST)(88,115)
PsiElement(()('(')(88,89)
PrologCommonValImpl(COMMON_VAL)(89,92)
PrologCommonPredicateImpl(COMMON_PREDICATE)(89,92)
PrologRefPredicateIdImpl(REF_PREDICATE_ID)(89,92)
PsiElement(const_id)('ast')(89,92)
PrologEquivBinaryImpl(EQUIV_BINARY)(92,114)
PrologLogicalAndImpl(LOGICAL_AND)(92,114)
PsiElement(,)(',')(92,93)
PrologCommonValImpl(COMMON_VAL)(94,103)
PrologLiteralImpl(LITERAL)(94,103)
PsiElement(string)('"Renamed"')(94,103)
PrologEquivBinaryImpl(EQUIV_BINARY)(103,114)
PrologLogicalAndImpl(LOGICAL_AND)(103,114)
PsiElement(,)(',')(103,104)
PrologCommonValImpl(COMMON_VAL)(105,114)
PrologListConstructorImpl(LIST_CONSTRUCTOR)(105,114)
PsiElement([)('[')(105,106)
PrologCommonValImpl(COMMON_VAL)(106,113)
PrologIdentImpl(IDENT)(106,113)
PsiElement(atom_id)('Renamed')(106,113)
PsiElement(])(']')(113,114)
PsiElement())(')')(114,115)
PsiElement())(')')(124,125)
PsiElement())(')')(130,131)
PsiElement(.)('.')(131,132)

0 comments on commit e6d0f14

Please # to comment.