moved common grammar to separate file

This commit is contained in:
Trolli Schmittlauch 2017-06-25 00:58:58 +02:00
parent c66e8fe3eb
commit 632e908f95
3 changed files with 25 additions and 35 deletions

View file

@ -0,0 +1,22 @@
grammar = """
job_shop1 = skip_preface
skip_preface = instance_list / (r"." skip_preface)
instance_list = problem_instance (sep_line trim_ws eol problem_instance eol?)* eof_sep
problem_instance = trim_ws "instance" ' ' instance_name trim_ws eol trim_ws eol sep_line description eol problem_data
description = r"[^\n]*"
instance_name = r"\w+"
sep_line = trim_ws plus_line trim_ws eol
plus_line = r"\+\+\++"
eof_sep = trim_ws plus_line " EOF " plus_line trim_ws eol* EOF
job_shop2 = problem_data EOF
problem_data = trim_ws num_jobs ' ' num_machines eol job_data+
trim_ws = r'[ \t]*'
eol = "\n" / "\r\n"
nonneg_num = r'\d+'
num_jobs = nonneg_num
num_machines = nonneg_num
machine = nonneg_num
duration = nonneg_num
job_data = ' '* machine ' '+ duration (' '+ machine ' '+ duration)* trim_ws eol
"""

View file

@ -1,29 +1,8 @@
from arpeggio.cleanpeg import ParserPEG
grammar = """
start = skip_preface
skip_preface = instance_list / (r"." skip_preface)
instance_list = problem_instance (sep_line trim_ws eol problem_instance eol?)* eof_sep
problem_instance = trim_ws "instance" ' ' instance_name trim_ws eol trim_ws eol sep_line description eol problem_data
description = r"[^\n]*"
instance_name = r"\w+"
sep_line = trim_ws plus_line trim_ws eol
plus_line = r"\+\+\++"
eof_sep = trim_ws plus_line " EOF " plus_line trim_ws eol* EOF
from common import grammar
job_shop2 = problem_data EOF
problem_data = trim_ws num_jobs ' ' num_machines eol job_data+
trim_ws = r'[ \t]*'
eol = "\n" / "\r\n"
nonneg_num = r'\d+'
num_jobs = nonneg_num
num_machines = nonneg_num
machine = nonneg_num
duration = nonneg_num
job_data = ' '* machine ' '+ duration (' '+ machine ' '+ duration)* trim_ws eol
"""
parser = ParserPEG(grammar, "start", skipws=False,debug=True)
parser = ParserPEG(grammar, "job_shop1", skipws=False,debug=True)
with open("./inputdata/jobshop1_noprefix.txt") as datafile:
inputdata : str = datafile.read()

View file

@ -1,17 +1,6 @@
from arpeggio.cleanpeg import ParserPEG
grammar = """
job_shop2 = problem_data EOF
problem_data = trim_ws num_jobs ' ' num_machines eol job_data+
trim_ws = r'[ \t]*'
eol = "\n" / "\r\n"
nonneg_num = r'\d+'
num_jobs = nonneg_num
num_machines = nonneg_num
machine = nonneg_num
duration = nonneg_num
job_data = ' '* machine ' '+ duration (' '+ machine ' '+ duration)* trim_ws eol
"""
from common import grammar
parser = ParserPEG(grammar, "problem_data", skipws=False,debug=True)