yml2/yml2.py
changeset 57 2f4ad3800a3f
parent 52 b4a9a3122abb
child 58 a218553807ab
equal deleted inserted replaced
56:d48cf08cf448 57:2f4ad3800a3f
     1 # YML 2.5.8 language definition
     1 # YML 2.5.10 language definition
     2 
     2 
     3 # written by VB.
     3 # written by VB.
     4 
     4 
     5 import re
     5 import re
     6 from pyPEG import keyword, _and, _not
     6 from pyPEG import keyword, _and, _not
    49 
    49 
    50 _xmlSymbol = u"(" + NameStartChar + u")(" + NameChar + u")*"
    50 _xmlSymbol = u"(" + NameStartChar + u")(" + NameChar + u")*"
    51 xmlSymbol = r(_xmlSymbol)
    51 xmlSymbol = r(_xmlSymbol)
    52 aliasSymbol = r(ur"-|(" + _xmlSymbol + ur")")
    52 aliasSymbol = r(ur"-|(" + _xmlSymbol + ur")")
    53 
    53 
    54 literal = [r(r'""".*?"""', re.S), r(r"'''.*?'''", re.S), r(r"""-?\d+\.\d*|-?\.\d+|-?\d+|".*?"|'.*?'""")]
    54 literal = [r(r'""".*?"""', re.S), r(r"'''.*?'''", re.S), r(r"""0x[a-f0-9]+|-?\d+\.\d*|-?\.\d+|-?\d+|".*?"|'.*?'""")]
    55 filename = [("'", r(r"[^']*"), "'"), ('"', r(r'[^"]*'), '"'), r(r"[^\s;]+")]
    55 filename = [("'", r(r"[^']*"), "'"), ('"', r(r'[^"]*'), '"'), r(r"[^\s;]+")]
    56 ws = r(r"\s+", re.U)
    56 ws = r(r"\s+", re.U)
    57 
    57 
    58 def pyExp():        return "!", r(r"(!=|\\!|[^!])+"), "!"
    58 def pyExp():        return "!", r(r"(!=|\\!|[^!])+"), "!"
    59 value = [literal, pyExp]
    59 value = [literal, pyExp]
    75 def python():       return [r(r"!!.*?!!", re.S), r(r"!.*")]
    75 def python():       return [r(r"!!.*?!!", re.S), r(r"!.*")]
    76 def operator():     return 0, keyword("define"), keyword("operator"), literal, keyword("as"), r(r".*")
    76 def operator():     return 0, keyword("define"), keyword("operator"), literal, keyword("as"), r(r".*")
    77 def constant():     return 0, keyword("define"), [pointer, symbol], "=", literal, 0, [";", "."]
    77 def constant():     return 0, keyword("define"), [pointer, symbol], "=", literal, 0, [";", "."]
    78 def in_ns():        return keyword("in"), xmlSymbol, [_decl, ("{", -2, _decl, "}")]
    78 def in_ns():        return keyword("in"), xmlSymbol, [_decl, ("{", -2, _decl, "}")]
    79 _decl = keyword("decl"), listing(decl), [";", "."]
    79 _decl = keyword("decl"), listing(decl), [";", "."]
    80 def textsection():  return r(r'(\|\|(\>*).*?\|\|(\>*))', re.S)
    80 def textsection():  return r(r'(\|\|(\>*)(.*?)\|\|(\>*))\s*$', re.S | re.M)
    81 def textsectionu(): return r(r'(\>\>.*?\>\>)', re.S)
    81 def textsectionu(): return r(r'(\>\>.*?\>\>)', re.S)
    82 def include():      return keyword("include"), 0, reverse, 0, [ktext, kxml], filename, 0, [";", "."]
    82 def include():      return keyword("include"), 0, reverse, 0, [ktext, kxml], filename, 0, [";", "."]
    83 def func():         return _func, 0, content
    83 def func():         return _func, 0, content
    84 def funclist():     return listing(func)
    84 def funclist():     return listing(func)
    85 _cmd = funclist, 0, [";", "."]
    85 _cmd = funclist, 0, [";", "."]