package scpt

import (
	"github.com/alecthomas/participle/lexer"
	"github.com/alecthomas/participle/lexer/stateful"
)

// Create custom stateful regex lexer
var scptLexer = lexer.Must(stateful.NewSimple([]stateful.Rule{
	{"Ident", `[a-zA-Z]\w*`, nil},
	{"String", `"[^"]*"`, nil},
	{"Number", `(?:\d*\.)?\d+`, nil},
	{"Punct", `[-[!@$&()_{}\|:;"',.?/]|]`, nil},
	{"Whitespace", `[ \t\r\n]+`, nil},
	{"Comment", `(###(.|\n)+###|#[^\n]+)`, nil},
	{"Operator", `(>=|<=|>|<|==|!=)|[-+*/^%]`, nil},
}))