Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.11/site-packages/pygments/lexers/maple.py: 69%

Shortcuts on this page

r m x   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

26 statements  

1""" 

2 pygments.lexers.maple 

3 ~~~~~~~~~~~~~~~~~~~~~ 

4 

5 Lexers for Maple. 

6 

7 :copyright: Copyright 2006-2025 by the Pygments team, see AUTHORS. 

8 :license: BSD, see LICENSE for details. 

9""" 

10 

11from pygments.lexer import words, bygroups, ExtendedRegexLexer 

12from pygments.token import Comment, Name, String, Whitespace, Operator, Punctuation, Number, Keyword 

13 

14__all__ = ['MapleLexer'] 

15 

16 

17class MapleLexer(ExtendedRegexLexer): 

18 """ 

19 Lexer for Maple. 

20 """ 

21 

22 name = 'Maple' 

23 aliases = ['maple'] 

24 filenames = ['*.mpl', '*.mi', '*.mm'] 

25 mimetypes = ['text/x-maple'] 

26 url = 'https://www.maplesoft.com/products/Maple/' 

27 version_added = '2.19' 

28 

29 keywords = ('and', 

30 'assuming', 

31 'break', 

32 'by', 

33 'catch', 

34 'description', 

35 'do', 

36 'done', 

37 'elif', 

38 'else', 

39 'end', 

40 'error', 

41 'export', 

42 'fi', 

43 'finally', 

44 'for', 

45 'from', 

46 'global', 

47 'if', 

48 'implies', 

49 'in', 

50 'intersect', 

51 'local', 

52 'minus', 

53 'mod', 

54 'module', 

55 'next', 

56 'not', 

57 'od', 

58 'option', 

59 'options', 

60 'or', 

61 'proc', 

62 'quit', 

63 'read', 

64 'return', 

65 'save', 

66 'stop', 

67 'subset', 

68 'then', 

69 'to', 

70 'try', 

71 'union', 

72 'use', 

73 'uses', 

74 'while', 

75 'xor') 

76 

77 builtins = ('abs', 

78 'add', 

79 'addressof', 

80 'anames', 

81 'and', 

82 'andmap', 

83 'andseq', 

84 'appendto', 

85 'Array', 

86 'array', 

87 'ArrayOptions', 

88 'assemble', 

89 'ASSERT', 

90 'assign', 

91 'assigned', 

92 'attributes', 

93 'cat', 

94 'ceil', 

95 'coeff', 

96 'coeffs', 

97 'conjugate', 

98 'convert', 

99 'CopySign', 

100 'DEBUG', 

101 'debugopts', 

102 'Default0', 

103 'DefaultOverflow', 

104 'DefaultUnderflow', 

105 'degree', 

106 'denom', 

107 'diff', 

108 'disassemble', 

109 'divide', 

110 'done', 

111 'entries', 

112 'EqualEntries', 

113 'eval', 

114 'evalb', 

115 'evalf', 

116 'evalhf', 

117 'evalindets', 

118 'evaln', 

119 'expand', 

120 'exports', 

121 'factorial', 

122 'floor', 

123 'frac', 

124 'frem', 

125 'FromInert', 

126 'frontend', 

127 'gc', 

128 'genpoly', 

129 'has', 

130 'hastype', 

131 'hfarray', 

132 'icontent', 

133 'igcd', 

134 'ilcm', 

135 'ilog10', 

136 'Im', 

137 'implies', 

138 'indets', 

139 'indices', 

140 'intersect', 

141 'iolib', 

142 'iquo', 

143 'irem', 

144 'iroot', 

145 'iroot', 

146 'isqrt', 

147 'kernelopts', 

148 'lcoeff', 

149 'ldegree', 

150 'length', 

151 'lexorder', 

152 'lhs', 

153 'lowerbound', 

154 'lprint', 

155 'macro', 

156 'map', 

157 'max', 

158 'maxnorm', 

159 'member', 

160 'membertype', 

161 'min', 

162 'minus', 

163 'mod', 

164 'modp', 

165 'modp1', 

166 'modp2', 

167 'mods', 

168 'mul', 

169 'NextAfter', 

170 'nops', 

171 'normal', 

172 'not', 

173 'numboccur', 

174 'numelems', 

175 'numer', 

176 'NumericClass', 

177 'NumericEvent', 

178 'NumericEventHandler', 

179 'NumericStatus', 

180 'op', 

181 'or', 

182 'order', 

183 'OrderedNE', 

184 'ormap', 

185 'orseq', 

186 'parse', 

187 'piecewise', 

188 'pointto', 

189 'print', 

190 'quit', 

191 'Re', 

192 'readlib', 

193 'Record', 

194 'remove', 

195 'rhs', 

196 'round', 

197 'rtable', 

198 'rtable_elems', 

199 'rtable_eval', 

200 'rtable_indfns', 

201 'rtable_num_elems', 

202 'rtable_options', 

203 'rtable_redim', 

204 'rtable_scanblock', 

205 'rtable_set_indfn', 

206 'rtable_split_unit', 

207 'savelib', 

208 'Scale10', 

209 'Scale2', 

210 'SDMPolynom', 

211 'searchtext', 

212 'SearchText', 

213 'select', 

214 'selectremove', 

215 'seq', 

216 'series', 

217 'setattribute', 

218 'SFloatExponent', 

219 'SFloatMantissa', 

220 'sign', 

221 'sort', 

222 'ssystem', 

223 'stop', 

224 'String', 

225 'subs', 

226 'subset', 

227 'subsindets', 

228 'subsop', 

229 'substring', 

230 'system', 

231 'table', 

232 'taylor', 

233 'tcoeff', 

234 'time', 

235 'timelimit', 

236 'ToInert', 

237 'traperror', 

238 'trunc', 

239 'type', 

240 'typematch', 

241 'unames', 

242 'unassign', 

243 'union', 

244 'Unordered', 

245 'upperbound', 

246 'userinfo', 

247 'writeto', 

248 'xor', 

249 'xormap', 

250 'xorseq') 

251 

252 def delayed_callback(self, match, ctx): 

253 yield match.start(1), Punctuation, match.group(1) # quote 

254 

255 ctx.pos = match.start(2) 

256 orig_end = ctx.end 

257 ctx.end = match.end(2) 

258 

259 yield from self.get_tokens_unprocessed(context=ctx) 

260 yield match.end(2), Punctuation, match.group(1) # quote 

261 

262 ctx.pos = match.end() 

263 ctx.end = orig_end 

264 

265 tokens = { 

266 'root': [ 

267 (r'#.*\n', Comment.Single), 

268 (r'\(\*', Comment.Multiline, 'comment'), 

269 (r'"(\\.|.|\s)*?"', String), 

270 (r"('+)((.|\n)*?)\1", delayed_callback), 

271 (r'`(\\`|.)*?`', Name), 

272 (words(keywords, prefix=r'\b', suffix=r'\b'), Keyword), 

273 (words(builtins, prefix=r'\b', suffix=r'\b'), Name.Builtin), 

274 (r'[a-zA-Z_][a-zA-Z0-9_]*', Name), 

275 (r'(:=|\*\*|@@|<=|>=|<>|->|::|\.\.|&\+|[\+\-\*\.\^\$/@&,:=<>%~])', Operator), 

276 (r'[;^!@$\(\)\[\]{}|_\\#?]+', Punctuation), 

277 (r'(\d+)(\.\.)', bygroups(Number.Integer, Punctuation)), 

278 (r'(\d*\.\d+|\d+\.\d*)([eE][+-]?\d+)?', Number.Float), 

279 (r'\d+', Number.Integer), 

280 (r'\s+', Whitespace), 

281 ], 

282 'comment': [ 

283 (r'.*\(\*', Comment.Multiline, '#push'), 

284 (r'.*\*\)', Comment.Multiline, '#pop'), 

285 (r'.*\n', Comment.Multiline), 

286 ] 

287 } 

288 

289 def analyse_text(text): 

290 if ':=' in text: 

291 return 0.1