- mo = re.match(r'.*\\DeclareMath(Symbol|Delimiter)\s*\{?\\(\w*?)\}?\s*\{?\\(.*?)\}?\s*\{(.*?)\}\s*\{"(.*?)\}.*', line)
- if mo != None:
- symbol = mo.group(2)
- type = mo.group(3)
- font = mo.group(4)
- code = mo.group(5)
- else:
- mo = re.match(r'.*\\edef\\(\w*?)\{.*?\{\\hexnumber@\\sym(.*?)\}(.*?)\}', line)
- if mo != None:
- symbol = mo.group(1)
- type = "mathord"
- font = mo.group(2)
- code = mo.group(3)
+ mo = re.match(r'.*\\DeclareMath(Symbol|Delimiter)\s*\{?\\(\w*?)\}?\s*\{?\\(.*?)\}?\s*\{(.*?)\}\s*\{([\'"]?)(.*?)\}.*', line)
+ code = -1
+ try:
+ if mo != None:
+ symbol = mo.group(2)
+ type = mo.group(3)
+ font = mo.group(4)
+ if mo.group(5) == '':
+ code = int(mo.group(6))
+ elif mo.group(5) == '"':
+ code = int(mo.group(6), 16)
+ else:
+ code = int(mo.group(6), 8)
+ else:
+ mo = re.match(r'.*\\edef\\(\w*?)\{.*?\{\\hexnumber@\\sym(.*?)\}(.*?)\}', line)
+ if mo != None:
+ symbol = mo.group(1)
+ type = "mathord"
+ font = mo.group(2)
+ code = int(mo.group(3), 16)
+ except ValueError:
+ code = -1