Loading RegExLexer.py +22 −21 Original line number Diff line number Diff line Loading @@ -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() Loading @@ -54,7 +55,7 @@ class RegExLexer(Lexer): modeNames = [ "DEFAULT_MODE" ] literalNames = [ "<INVALID>", "'('", "')'", "'^+'", "'.'", "'+'", "'\u2205'" ] "'('", "')'", "'^+'", "'.'", "'+'" ] symbolicNames = [ "<INVALID>", "LEFT_PAR", "RIGHT_PAR", "ITER", "POS_ITER", "CONCAT", "UNION", Loading RegExParser.py +1 −37 Original line number Diff line number Diff line Loading @@ -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", Loading Loading @@ -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) Loading Loading @@ -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): Loading Loading @@ -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) Loading Loading @@ -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) Loading Loading @@ -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) Loading Loading @@ -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) Loading demo.py +2 −0 Original line number Diff line number Diff line Loading @@ -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("(∅ + ∅^*).(∅^* + ∅∅^+)") Loading fja_checker.py +9 −2 Original line number Diff line number Diff line Loading @@ -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) Loading Loading
RegExLexer.py +22 −21 Original line number Diff line number Diff line Loading @@ -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() Loading @@ -54,7 +55,7 @@ class RegExLexer(Lexer): modeNames = [ "DEFAULT_MODE" ] literalNames = [ "<INVALID>", "'('", "')'", "'^+'", "'.'", "'+'", "'\u2205'" ] "'('", "')'", "'^+'", "'.'", "'+'" ] symbolicNames = [ "<INVALID>", "LEFT_PAR", "RIGHT_PAR", "ITER", "POS_ITER", "CONCAT", "UNION", Loading
RegExParser.py +1 −37 Original line number Diff line number Diff line Loading @@ -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", Loading Loading @@ -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) Loading Loading @@ -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): Loading Loading @@ -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) Loading Loading @@ -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) Loading Loading @@ -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) Loading Loading @@ -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) Loading
demo.py +2 −0 Original line number Diff line number Diff line Loading @@ -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("(∅ + ∅^*).(∅^* + ∅∅^+)") Loading
fja_checker.py +9 −2 Original line number Diff line number Diff line Loading @@ -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) Loading