Package doapfiend :: Module lexers
[hide private]
[frames] | no frames]

Source Code for Module doapfiend.lexers

  1   
  2  #pylint: disable-msg=C0301 
  3   
  4  """ 
  5      pygments.lexers.sw 
  6      ================== 
  7   
  8      Lexers for semantic web languages. 
  9   
 10      :copyright: 2007 by Philip Cooper <philip.cooper@openvest.com>. 
 11      :license: BSD, see LICENSE for more details. 
 12  """ 
 13   
 14  import re 
 15   
 16  from pygments.lexer import RegexLexer, include, bygroups 
 17  from pygments.token import Text, Comment, Operator, Keyword, Name, Literal 
 18   
 19   
 20  __all__ = ['Notation3Lexer', 'SparqlLexer'] 
 21   
 22   
23 -class Notation3Lexer(RegexLexer):
24 """ 25 Lexer for the N3 / Turtle / NT 26 """ 27 name = 'N3' 28 aliases = ['n3', 'turtle'] 29 filenames = ['*.n3', '*.ttl', '*.NT'] 30 mimetypes = ['text/rdf+n3', 'application/x-turtle', 'application/n3'] 31 32 tokens = { 33 'comments': [ 34 (r'(\s*#.*)', Comment) 35 ], 36 'root': [ 37 include('comments'), 38 (r'(\s*@(?:prefix|base|keywords)\s*)(\w*:\s+)?(<[^> ]*>\s*\.\s*)', 39 bygroups(Keyword,Name.Variable,Name.Namespace)), 40 (r'\s*(<[^>]*\>)', Name.Class, ('triple','predObj')), 41 (r'(\s*[a-zA-Z_:][a-zA-Z0-9\-_:]*\s)', 42 Name.Class, ('triple','predObj')), 43 (r'\s*\[\]\s*', Name.Class, ('triple','predObj')), 44 ], 45 'triple' : [ 46 (r'\s*\.\s*', Text, '#pop') 47 ], 48 'predObj': [ 49 include('comments'), 50 (r'(\s*[a-zA-Z_:][a-zA-Z0-9\-_:]*\b\s*)', Operator, 'object'), 51 (r'\s*(<[^>]*\>)', Operator, 'object'), 52 (r'\s*\]\s*', Text, '#pop'), 53 (r'(?=\s*\.\s*)', Keyword, '#pop'), 54 ], 55 'objList': [ 56 (r'\s*\)', Text, '#pop'), 57 include('object') 58 ], 59 'object': [ 60 (r'\s*\[', Text, 'predObj'), 61 (r'\s*<[^> ]*>', Name.Attribute), 62 (r'\s*("""(?:.|\n)*?""")(\@[a-z]{2-4}|\^\^<?[a-zA-Z0-9\-\:_#/\.]*>?)?\s*', 63 bygroups(Literal.String,Text)), 64 (r'\s*".*?[^\\]"(?:\@[a-z]{2-4}|\^\^<?[a-zA-Z0-9\-\:_#/\.]*>?)?\s*', 65 Literal.String), 66 (r'\s*[a-zA-Z0-9\-_\:]\s*', Name.Attribute), 67 (r'\s*\(', Text, 'objList'), 68 (r'\s*;\s*\n?', Text, '#pop'), 69 (r'(?=\s*\])', Text, '#pop'), 70 (r'(?=\s*\.)', Text, '#pop'), 71 ], 72 }
73 74
75 -class SparqlLexer(RegexLexer):
76 """ 77 Lexer for SPARQL Not Complete 78 """ 79 name = 'SPARQL' 80 aliases = ['sparql'] 81 filenames = ['*.sparql'] 82 mimetypes = ['text/x-sql'] 83 flags = re.IGNORECASE 84 tokens = { 85 'comments': [ 86 (r'(\s*#.*)', Comment) 87 ], 88 'root': [ 89 include('comments'), 90 (r'(\s*(?:PREFIX|BASE)\s+)(\w*:\w*)?(\s*<[^> ]*>\s*)', 91 bygroups(Keyword,Name.Variable,Name.Namespace)), 92 (r'(\s*#.*)', Comment), 93 (r'((?:SELECT|ASK|CONSTRUCT|DESCRIBE)\s*(?:DISTINCT|REDUCED)?\s*)((?:\?[a-zA-Z0-9_-]+\s*)+|\*)(\s*)', 94 bygroups(Keyword,Name.Variable,Text)), 95 (r'(FROM\s*(?:NAMED)?)(\s*.*)', bygroups(Keyword,Text)), 96 (r'(WHERE)?\s*({)', bygroups(Keyword,Text), 'graph'), 97 (r'(LIMIT|OFFSET)(\s*[+-]?[0-9]+)', 98 bygroups(Keyword,Literal.String)), 99 ], 100 'graph':[ 101 (r'\s*(<[^>]*\>)', Name.Class, ('triple','predObj')), 102 (r'(\s*[a-zA-Z_0-9\-]*:[a-zA-Z0-9\-_]*\s)', 103 Name.Class, ('triple','predObj')), 104 (r'(\s*\?[a-zA-Z0-9_-]*)', Name.Variable, ('triple','predObj')), 105 (r'\s*\[\]\s*', Name.Class, ('triple','predObj')), 106 (r'\s*(FILTER\s*)((?:regex)?\()',bygroups(Keyword,Text),'filterExp'), 107 (r'\s*}', Text, '#pop'), 108 ], 109 'triple' : [ 110 (r'(?=\s*})', Text, '#pop'), 111 (r'\s*\.\s*', Text, '#pop'), 112 ], 113 'predObj': [ 114 include('comments'), 115 (r'(\s*\?[a-zA-Z0-9_-]*\b\s*)', Name.Variable,'object'), 116 (r'(\s*[a-zA-Z_:][a-zA-Z0-9\-_:]*\b\s*)', Operator, 'object'), 117 (r'\s*(<[^>]*\>)', Operator, 'object'), 118 (r'\s*\]\s*', Text, '#pop'), 119 (r'(?=\s*\.\s*)', Keyword, '#pop'), 120 ], 121 'objList': [ 122 (r'\s*\)', Text, '#pop'), 123 include('object'), 124 ], 125 'object': [ 126 include('variable'), 127 (r'\s*\[', Text, 'predObj'), 128 (r'\s*<[^> ]*>', Name.Attribute), 129 (r'\s*("""(?:.|\n)*?""")(\@[a-z]{2-4}|\^\^<?[a-zA-Z0-9\-\:_#/\.]*>?)?\s*', bygroups(Literal.String,Text)), 130 (r'\s*".*?[^\\]"(?:\@[a-z]{2-4}|\^\^<?[a-zA-Z0-9\-\:_#/\.]*>?)?\s*', Literal.String), 131 (r'\s*[a-zA-Z0-9\-_\:]\s*', Name.Attribute), 132 (r'\s*\(', Text, 'objList'), 133 (r'\s*;\s*', Text, '#pop'), 134 (r'(?=\])', Text, '#pop'), 135 (r'(?=\.)', Text, '#pop'), 136 ], 137 'variable':[ 138 (r'(\?[a-zA-Z0-9\-_]+\s*)', Name.Variable), 139 ], 140 'filterExp':[ 141 include('variable'), 142 include('object'), 143 (r'\s*[+*/<>=~!%&|-]+\s*', Operator), 144 (r'\s*\)', Text, '#pop'), 145 ], 146 147 }
148