Commit 3b77ae67 authored by Vladimír Štill's avatar Vladimír Štill
Browse files

evalweb: Adapt to changes in lib

parent e3567716
from flask import Blueprint, render_template, request from flask import Blueprint, render_template, request
from flask_wtf import FlaskForm # type: ignore from flask_wtf import FlaskForm # type: ignore
from wtforms import RadioField # type: ignore from wtforms import RadioField # type: ignore
from lib.parsing import ParsingError from lib.parser import ParsingError
from evalweb.web_checker import WebChecker, Language, CompositeException from evalweb.web_checker import WebChecker, Language, CompositeException
from evalweb.examples import examples, convert_examples from evalweb.examples import examples, convert_examples
from typing import Optional from typing import Optional
......
from typing import Dict, Tuple from typing import Dict, Tuple
from lib.parsing import Parser from lib import parser
parser = Parser()
examples: Dict[Tuple[str, str], Tuple[str, str]] = {} examples: Dict[Tuple[str, str], Tuple[str, str]] = {}
convert_examples: Dict[str, str] = {} convert_examples: Dict[str, str] = {}
...@@ -18,16 +17,16 @@ teacher_forms = [('DFA', teacher_dfa), ...@@ -18,16 +17,16 @@ teacher_forms = [('DFA', teacher_dfa),
('REG', student_reg)] ('REG', student_reg)]
student_forms = [('DFA', student_dfa), student_forms = [('DFA', student_dfa),
('TOT', parser.dfa_to_str(parser.str_to_dfa(student_dfa) ('TOT', parser.dfa_to_str(parser.dfa(student_dfa)
.total())), .total())),
('MIN', parser.dfa_to_str(parser.str_to_dfa(student_dfa) ('MIN', parser.dfa_to_str(parser.dfa(student_dfa)
.minimize())), .minimize())),
('CAN', parser.dfa_to_str(parser.str_to_dfa(student_dfa) ('CAN', parser.dfa_to_str(parser.dfa(student_dfa)
.total().canonize())), .total().canonize())),
('MIC', parser.dfa_to_str(parser.str_to_dfa(student_dfa) ('MIC', parser.dfa_to_str(parser.dfa(student_dfa)
.minimize().canonize())), .minimize().canonize())),
('EFA', student_efa), ('EFA', student_efa),
('NFA', parser.nfa_to_str(parser.str_to_nfa(student_efa) ('NFA', parser.nfa_to_str(parser.nfa(student_efa)
.eliminate_epsilon())), .eliminate_epsilon())),
('GRA', student_gra), ('GRA', student_gra),
('REG', student_reg)] ('REG', student_reg)]
......
import lib.reg as reg from lib import reg, parser
from lib.parsing import Parser, ParsingError from lib.parser import ParsingError
from lib.checker import transform, dfa_transform, nfa_transform, check_task, \ from lib.checker import transform, dfa_transform, nfa_transform, check_task, \
check_alphabets check_alphabets
from typing import List, Optional from typing import List, Optional
...@@ -19,7 +19,6 @@ class Language: # contains information about formalism and its language ...@@ -19,7 +19,6 @@ class Language: # contains information about formalism and its language
self.string = string self.string = string
self.task = task self.task = task
parser = Parser()
dfa = dfa_transform(self.string, self.task) dfa = dfa_transform(self.string, self.task)
self.minimal = parser.dfa_to_str(dfa.minimize().canonize()) self.minimal = parser.dfa_to_str(dfa.minimize().canonize())
...@@ -45,7 +44,6 @@ class Language: # contains information about formalism and its language ...@@ -45,7 +44,6 @@ class Language: # contains information about formalism and its language
def gen_is_task(self, task: str) -> str: def gen_is_task(self, task: str) -> str:
teacher = "NFA" if self.task == "EFA" else self.task teacher = "NFA" if self.task == "EFA" else self.task
parser = Parser()
assert self.dfa is not None assert self.dfa is not None
dfa = parser.dfa_to_str(self.dfa.canonize()) dfa = parser.dfa_to_str(self.dfa.canonize())
return f"{teacher}-{task}:{dfa}" return f"{teacher}-{task}:{dfa}"
...@@ -127,7 +125,6 @@ class WebChecker: ...@@ -127,7 +125,6 @@ class WebChecker:
student_string=self.student_string) student_string=self.student_string)
def convert(self, student_type: str) -> str: def convert(self, student_type: str) -> str:
parser = Parser()
if self.task in {"DFA", "TOT", "MIN", "CAN", "MIC"}: if self.task in {"DFA", "TOT", "MIN", "CAN", "MIC"}:
dfa = dfa_transform(self.student_string, student_type) dfa = dfa_transform(self.student_string, student_type)
# avoid confusion by making the automaton total if the input # avoid confusion by making the automaton total if the input
...@@ -220,7 +217,6 @@ class WebChecker: ...@@ -220,7 +217,6 @@ class WebChecker:
return picture # name of static image file to show in feedback return picture # name of static image file to show in feedback
def language(self, dfa: reg.DFA) -> Language: def language(self, dfa: reg.DFA) -> Language:
parser = Parser()
return Language(parser.dfa_to_str(dfa)) return Language(parser.dfa_to_str(dfa))
def DFA_lines(self, str_: str) -> None: def DFA_lines(self, str_: str) -> None:
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment