Changeset 110
- Timestamp:
- 12/10/07 07:17:00 (1 year ago)
- Files:
-
- packages/feaTools/trunk/Lib/feaTools/parser.py (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
packages/feaTools/trunk/Lib/feaTools/parser.py
r58 r110 1 1 import re 2 2 3 DEBUG = False 3 4 class FeaToolsParserSyntaxError(Exception): 5 6 def __init__(self, value): 7 self.value = value 8 9 def __str__(self): 10 return repr(self.value) 11 4 12 5 13 # used for removing all comments … … 134 142 posType2RE = re.compile( 135 143 "([\s;\{\}]|^)" # whitepace, ; {, } or start of line 136 "position|pos\s+" # pos 144 "(enum\s+|\s*)" # enum 145 "(position|pos\s+)" # pos 137 146 "([-\w\d\s_.@\[\]]+)" # left, right, value 138 147 "\s*;" # ; … … 245 254 # pos type 2 246 255 posType2s = posType2RE.findall(text) 247 for precedingMark, targetAndValue in posType2s:256 for precedingMark, enumTag, posTag, targetAndValue in posType2s: 248 257 text = _executeSimpleSlice(precedingMark, text, posType2RE, writer) 249 258 _parsePosType2(writer, targetAndValue) … … 274 283 text = _executeSimpleSlice(precedingMark, text, includeRE, writer) 275 284 writer.include(path) 276 if DEBUG: 277 text = text.strip() 278 if text: 279 print ">>> unknown >>>", text 285 text = text.strip() 286 if text: 287 raise FeaToolsParserSyntaxError("Invalid Syntax: %s" % text) 280 288 281 289 def _executeSimpleSlice(precedingMark, text, regex, writer): … … 388 396 writer.gposType2(target, value) 389 397 398 def _parsePosType2WithEnum(writer, targetAndValue): 399 # the target and value will be coming 400 # in as single string. 401 target = " ".join(targetAndValue.split(" ")[:-1]) 402 value = targetAndValue.split(" ")[-1] 403 # XXX this could cause a choke 404 value = float(value) 405 target = _parseSequence(target) 406 writer.gposType2(target, value) 407 390 408 def parseFeatures(writer, text): 391 409 # strip the comments
