Commit dcfaaaeb authored by Kateřina Sloupová's avatar Kateřina Sloupová
Browse files

strange emptyset bug

parent e71ba9bd
Loading
Loading
Loading
Loading
Loading
+22 −21
Original line number Diff line number Diff line
@@ -9,26 +9,27 @@ import sys
def serializedATN():
    with StringIO() as buf:
        buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2\f")
        buf.write("\67\b\1\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t")
        buf.write("\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t\13\3\2\3\2\3\3\3\3\3")
        buf.write("\4\3\4\3\4\5\4\37\n\4\3\5\3\5\3\5\3\6\3\6\3\7\3\7\3\b")
        buf.write("\3\b\3\t\3\t\3\t\5\t-\n\t\3\n\3\n\3\13\6\13\62\n\13\r")
        buf.write("\13\16\13\63\3\13\3\13\2\2\f\3\3\5\4\7\5\t\6\13\7\r\b")
        buf.write("\17\t\21\n\23\13\25\f\3\2\4\5\2\62;C\\c|\5\2\13\f\17\17")
        buf.write("\"\"\29\2\3\3\2\2\2\2\5\3\2\2\2\2\7\3\2\2\2\2\t\3\2\2")
        buf.write("\2\2\13\3\2\2\2\2\r\3\2\2\2\2\17\3\2\2\2\2\21\3\2\2\2")
        buf.write("\2\23\3\2\2\2\2\25\3\2\2\2\3\27\3\2\2\2\5\31\3\2\2\2\7")
        buf.write("\36\3\2\2\2\t \3\2\2\2\13#\3\2\2\2\r%\3\2\2\2\17\'\3\2")
        buf.write("\2\2\21,\3\2\2\2\23.\3\2\2\2\25\61\3\2\2\2\27\30\7*\2")
        buf.write("\2\30\4\3\2\2\2\31\32\7+\2\2\32\6\3\2\2\2\33\37\7,\2\2")
        buf.write("\34\35\7`\2\2\35\37\7,\2\2\36\33\3\2\2\2\36\34\3\2\2\2")
        buf.write("\37\b\3\2\2\2 !\7`\2\2!\"\7-\2\2\"\n\3\2\2\2#$\7\60\2")
        buf.write("\2$\f\3\2\2\2%&\7-\2\2&\16\3\2\2\2\'(\t\2\2\2(\20\3\2")
        buf.write("\2\2)-\7\u03b7\2\2*+\7^\2\2+-\7g\2\2,)\3\2\2\2,*\3\2\2")
        buf.write("\2-\22\3\2\2\2./\7\u2207\2\2/\24\3\2\2\2\60\62\t\3\2\2")
        buf.write("\61\60\3\2\2\2\62\63\3\2\2\2\63\61\3\2\2\2\63\64\3\2\2")
        buf.write("\2\64\65\3\2\2\2\65\66\b\13\2\2\66\26\3\2\2\2\6\2\36,")
        buf.write("\63\3\b\2\2")
        buf.write(":\b\1\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7")
        buf.write("\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t\13\3\2\3\2\3\3\3\3\3\4")
        buf.write("\3\4\3\4\5\4\37\n\4\3\5\3\5\3\5\3\6\3\6\3\7\3\7\3\b\3")
        buf.write("\b\3\t\3\t\3\t\5\t-\n\t\3\n\3\n\3\n\5\n\62\n\n\3\13\6")
        buf.write("\13\65\n\13\r\13\16\13\66\3\13\3\13\2\2\f\3\3\5\4\7\5")
        buf.write("\t\6\13\7\r\b\17\t\21\n\23\13\25\f\3\2\4\5\2\62;C\\c|")
        buf.write("\5\2\13\f\17\17\"\"\2=\2\3\3\2\2\2\2\5\3\2\2\2\2\7\3\2")
        buf.write("\2\2\2\t\3\2\2\2\2\13\3\2\2\2\2\r\3\2\2\2\2\17\3\2\2\2")
        buf.write("\2\21\3\2\2\2\2\23\3\2\2\2\2\25\3\2\2\2\3\27\3\2\2\2\5")
        buf.write("\31\3\2\2\2\7\36\3\2\2\2\t \3\2\2\2\13#\3\2\2\2\r%\3\2")
        buf.write("\2\2\17\'\3\2\2\2\21,\3\2\2\2\23\61\3\2\2\2\25\64\3\2")
        buf.write("\2\2\27\30\7*\2\2\30\4\3\2\2\2\31\32\7+\2\2\32\6\3\2\2")
        buf.write("\2\33\37\7,\2\2\34\35\7`\2\2\35\37\7,\2\2\36\33\3\2\2")
        buf.write("\2\36\34\3\2\2\2\37\b\3\2\2\2 !\7`\2\2!\"\7-\2\2\"\n\3")
        buf.write("\2\2\2#$\7\60\2\2$\f\3\2\2\2%&\7-\2\2&\16\3\2\2\2\'(\t")
        buf.write("\2\2\2(\20\3\2\2\2)-\7\u03b7\2\2*+\7^\2\2+-\7g\2\2,)\3")
        buf.write("\2\2\2,*\3\2\2\2-\22\3\2\2\2.\62\7\u2207\2\2/\60\7^\2")
        buf.write("\2\60\62\7\62\2\2\61.\3\2\2\2\61/\3\2\2\2\62\24\3\2\2")
        buf.write("\2\63\65\t\3\2\2\64\63\3\2\2\2\65\66\3\2\2\2\66\64\3\2")
        buf.write("\2\2\66\67\3\2\2\2\678\3\2\2\289\b\13\2\29\26\3\2\2\2")
        buf.write("\7\2\36,\61\66\3\b\2\2")
        return buf.getvalue()


@@ -54,7 +55,7 @@ class RegExLexer(Lexer):
    modeNames = [ "DEFAULT_MODE" ]

    literalNames = [ "<INVALID>",
            "'('", "')'", "'^+'", "'.'", "'+'", "'\u2205'" ]
            "'('", "')'", "'^+'", "'.'", "'+'" ]

    symbolicNames = [ "<INVALID>",
            "LEFT_PAR", "RIGHT_PAR", "ITER", "POS_ITER", "CONCAT", "UNION", 
+1 −37
Original line number Diff line number Diff line
@@ -44,7 +44,7 @@ class RegExParser ( Parser ):
    sharedContextCache = PredictionContextCache()

    literalNames = [ "<INVALID>", "'('", "')'", "<INVALID>", "'^+'", "'.'", 
                     "'+'", "<INVALID>", "'\u03B5'", "'\u2205'" ]
                     "'+'" ]

    symbolicNames = [ "<INVALID>", "LEFT_PAR", "RIGHT_PAR", "ITER", "POS_ITER", 
                      "CONCAT", "UNION", "ALPHABET", "EPSILON", "EMPTYSET", 
@@ -102,12 +102,6 @@ class RegExParser ( Parser ):
            if hasattr( listener, "exitStart" ):
                listener.exitStart(self)

        def accept(self, visitor:ParseTreeVisitor):
            if hasattr( visitor, "visitStart" ):
                return visitor.visitStart(self)
            else:
                return visitor.visitChildren(self)




@@ -175,12 +169,6 @@ class RegExParser ( Parser ):
            if hasattr( listener, "exitExpr" ):
                listener.exitExpr(self)

        def accept(self, visitor:ParseTreeVisitor):
            if hasattr( visitor, "visitExpr" ):
                return visitor.visitExpr(self)
            else:
                return visitor.visitChildren(self)



    def expr(self, _p:int=0):
@@ -293,12 +281,6 @@ class RegExParser ( Parser ):
            if hasattr( listener, "exitConcatenated" ):
                listener.exitConcatenated(self)

        def accept(self, visitor:ParseTreeVisitor):
            if hasattr( visitor, "visitConcatenated" ):
                return visitor.visitConcatenated(self)
            else:
                return visitor.visitChildren(self)




@@ -369,12 +351,6 @@ class RegExParser ( Parser ):
            if hasattr( listener, "exitIterable" ):
                listener.exitIterable(self)

        def accept(self, visitor:ParseTreeVisitor):
            if hasattr( visitor, "visitIterable" ):
                return visitor.visitIterable(self)
            else:
                return visitor.visitChildren(self)




@@ -434,12 +410,6 @@ class RegExParser ( Parser ):
            if hasattr( listener, "exitParentheses" ):
                listener.exitParentheses(self)

        def accept(self, visitor:ParseTreeVisitor):
            if hasattr( visitor, "visitParentheses" ):
                return visitor.visitParentheses(self)
            else:
                return visitor.visitChildren(self)




@@ -490,12 +460,6 @@ class RegExParser ( Parser ):
            if hasattr( listener, "exitSymbol" ):
                listener.exitSymbol(self)

        def accept(self, visitor:ParseTreeVisitor):
            if hasattr( visitor, "visitSymbol" ):
                return visitor.visitSymbol(self)
            else:
                return visitor.visitChildren(self)




+2 −0
Original line number Diff line number Diff line
@@ -299,6 +299,8 @@ def main():
    regex_test("(b)(a)(c)")
    regex_test("b+a+c+a+c")
    regex_test("")
    regex_test("\e")
    regex_test('\0')
    regex_test("(∅ + ∅^*).(∅^* + ∅∅^+)")


+9 −2
Original line number Diff line number Diff line
@@ -116,8 +116,15 @@ def main():
            exit(0)

        elif student_solution.characters != teacher_solution.characters:
            if task == "REG":
                print("Abecedy zadaného jazyka a studentova řešení se liší "
                  "(abeceda je odvozena ze všech písmen objevujících se v přechodové funkci).")  # pravidlech/regulárním výrazu
                    "(abeceda je odvozena ze všech písmen objevujících se v regulárním výrazu).")
            elif task == "GRA":
                print("Abecedy zadaného jazyka a studentova řešení se liší "
                    "(abeceda je odvozena ze všech terminálů objevujících se v pravidlech gramatiky).")
            else:
                print("Abecedy zadaného jazyka a studentova řešení se liší "
                    "(abeceda je odvozena ze všech písmen objevujících se v přechodové funkci).")
            print("Nesprávné řešení.")
            exit(1)