add library parse function for jobshop2

- clean up problem_data
This commit is contained in:
Trolli Schmittlauch 2017-06-26 16:28:26 +02:00
parent 8c1d6e12be
commit 6d0f334350
2 changed files with 25 additions and 10 deletions

View file

@ -1,11 +1,25 @@
import arpeggio
from arpeggio.cleanpeg import ParserPEG
from typing import List, Tuple, Sequence, Optional, Union
from common import grammar
from common import grammar, JobShopVisitor, JobShopProblem
parser = ParserPEG(grammar, "problem_data", skipws=False,debug=True)
class JobShop2Visitor(JobShopVisitor):
pass
with open('./inputdata/jobshop2/ta13') as jobdatafile:
jobdata : str = jobdatafile.read()
print("zu parsender String:\n\v\v", jobdata)
parse_tree = parser.parse(jobdata)
print(parse_tree)
def parse_jobshop2_file(filename: Union[str, bytes]) -> JobShopProblem:
"""Open file with jobshop2-formatted data (single problem instance, no name & description),
parse it and return JobShopProblem"""
with open(filename) as datafile:
inputdata: str = datafile.read()
parse_tree = parser.parse(inputdata)
return arpeggio.visit_parse_tree(parse_tree, JobShop2Visitor(debug=True))
def main():
print(parse_jobshop2_file('./inputdata/jobshop2/ta13').problem_data)
parser = ParserPEG(grammar, "problem_data", skipws=False)
if __name__ == "__main__":
main()