From d1d4bbc15b5b428a1f03948d6a1cdb681fc7ea58 Mon Sep 17 00:00:00 2001 From: Adam Radziszewski <adam.radziszewski@pwr.wroc.pl> Date: Mon, 14 Feb 2011 10:51:35 +0100 Subject: [PATCH] updated joskipi2wccl rule converter --- tools/ruljos2wccl.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/tools/ruljos2wccl.py b/tools/ruljos2wccl.py index 906f0bf..4d15451 100755 --- a/tools/ruljos2wccl.py +++ b/tools/ruljos2wccl.py @@ -13,11 +13,23 @@ NOTE: this is based on very naive heuristics. # TODO agr bits # TODO isbig -> regex -p_brackets = re.compile(u'{(\\s*"[^"]*"(\\s*,\\s*"[^"]*")*\\s*)}', re.U) +p_strset = re.compile(u'{(\\s*"[^"]*"(\\s*,\\s*"[^"]*")*\\s*)}', re.U) +p_negposref = re.compile(u'\$\-([0-9]+)([A-Z][A-Za-z0-9]*)') +p_posposref = re.compile(u'\$[\+]?([0-9]+)([A-Z][A-Za-z0-9]*)') +p_isbig = re.compile(u'isbig\(([^)]*)\)', re.U) +p_hasnum = re.compile(u'hasnum\(([^)]*)\)', re.U) +p_agr = re.compile(u'(w?agr[a-z]*)\\s*\(\\s*([\-0-9]+)\\s*,\\s*([\-0-9]+)\\s*,\\s*({[^}]*})\\s*,\\s*([\-0-9]+)\\s*\)', re.U) def jos2ccl(what): + what = what.replace('{none}', '{}') what = what.replace('flex[', 'class[') - return p_brackets.sub(u'[\\1]', what) + what = p_negposref.sub(u'$\\2 - \\1', what) + what = p_posposref.sub(u'$\\2 + \\1', what) + what = p_strset.sub(u'[\\1]', what) + what = p_isbig.sub(u'regex(\\1, "\\\\\\p{Lu}.*")', what) + what = p_hasnum.sub(u'regex(\\1, ".*[0-9].*")', what) + what = p_agr.sub(u'\\1(\\2, \\3, \\4)', what) + return what class IndentWriter: def __init__(self, out, baseindent = 0): -- GitLab