diff --git a/src/org/rascalmpl/library/lang/rascal/tests/concrete/AtColumnRequirement.rsc b/src/org/rascalmpl/library/lang/rascal/tests/concrete/AtColumnRequirement.rsc new file mode 100644 index 00000000000..11011a95a92 --- /dev/null +++ b/src/org/rascalmpl/library/lang/rascal/tests/concrete/AtColumnRequirement.rsc @@ -0,0 +1,22 @@ +module lang::rascal::tests::concrete::AtColumnRequirement + +import ParseTree; +import Exception; + +lexical C = C C C | "a"@2 | "b"; + +bool testParse(str input, bool shouldParse) { + try { + parse(#C, input); + } catch ParseError(_): { + return !shouldParse; + } + + return shouldParse; +} + +test bool testA() = testParse("a", false); + +test bool testBab() = testParse("bab", false); + +test bool testBba() = testParse("bba", true); diff --git a/src/org/rascalmpl/parser/gtd/stack/filter/precede/AtColumnRequirement.java b/src/org/rascalmpl/parser/gtd/stack/filter/precede/AtColumnRequirement.java index c262661e394..ded77492a67 100644 --- a/src/org/rascalmpl/parser/gtd/stack/filter/precede/AtColumnRequirement.java +++ b/src/org/rascalmpl/parser/gtd/stack/filter/precede/AtColumnRequirement.java @@ -27,7 +27,7 @@ public AtColumnRequirement(int column){ } public boolean isFiltered(int[] input, int start, PositionStore positionStore){ - return positionStore.isAtColumn(start, column); + return !positionStore.isAtColumn(start, column); } public boolean isEqual(IEnterFilter otherEnterFilter){