iup-stack/iup/etc/lexlua/gnuplot.lua

60 lines
2.5 KiB
Lua
Raw Permalink Normal View History

2023-02-20 16:44:45 +00:00
-- Copyright 2006-2019 Mitchell mitchell.att.foicica.com. See License.txt.
-- Gnuplot LPeg lexer.
local lexer = require('lexer')
local token, word_match = lexer.token, lexer.word_match
local P, R, S = lpeg.P, lpeg.R, lpeg.S
local lex = lexer.new('gnuplot')
-- Whitespace.
lex:add_rule('whitespace', token(lexer.WHITESPACE, lexer.space^1))
-- Keywords.
lex:add_rule('keyword', token(lexer.KEYWORD, word_match[[
cd call clear exit fit help history if load pause plot using with index every
smooth thru print pwd quit replot reread reset save set show unset shell splot
system test unset update
]]))
-- Functions.
lex:add_rule('function', token(lexer.FUNCTION, word_match[[
abs acos acosh arg asin asinh atan atan2 atanh besj0 besj1 besy0 besy1 ceil
cos cosh erf erfc exp floor gamma ibeta inverf igamma imag invnorm int
lambertw lgamma log log10 norm rand real sgn sin sinh sqrt tan tanh column
defined tm_hour tm_mday tm_min tm_mon tm_sec tm_wday tm_yday tm_year valid
]]))
-- Variables.
lex:add_rule('variable', token(lexer.VARIABLE, word_match[[
angles arrow autoscale bars bmargin border boxwidth clabel clip cntrparam
colorbox contour datafile decimalsign dgrid3d dummy encoding fit fontpath
format functions function grid hidden3d historysize isosamples key label
lmargin loadpath locale logscale mapping margin mouse multiplot mx2tics mxtics
my2tics mytics mztics offsets origin output parametric plot pm3d palette
pointsize polar print rmargin rrange samples size style surface terminal tics
ticslevel ticscale timestamp timefmt title tmargin trange urange variables
version view vrange x2data x2dtics x2label x2mtics x2range x2tics x2zeroaxis
xdata xdtics xlabel xmtics xrange xtics xzeroaxis y2data y2dtics y2label
y2mtics y2range y2tics y2zeroaxis ydata ydtics ylabel ymtics yrange ytics
yzeroaxis zdata zdtics cbdata cbdtics zero zeroaxis zlabel zmtics zrange ztics
cblabel cbmtics cbrange cbtics
]]))
-- Identifiers.
lex:add_rule('identifier', token(lexer.IDENTIFIER, lexer.word))
-- Strings.
lex:add_rule('string', token(lexer.STRING, lexer.delimited_range("'") +
lexer.delimited_range('"') +
lexer.delimited_range('[]', true) +
lexer.delimited_range('{}', true)))
-- Comments.
lex:add_rule('comment', token(lexer.COMMENT, '#' * lexer.nonnewline^0))
-- Operators.
lex:add_rule('operator', token(lexer.OPERATOR, S('-+~!$*%=<>&|^?:()')))
return lex