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