From 039042f2e323c1f982f1de61b702c88fb33d6ccb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Andr=C3=A9=20Tanner?= Date: Fri, 16 Oct 2015 12:36:47 +0200 Subject: Import LPeg based lexers from Scintillua 3.6.1-1 These are Copyright (c) 2007-2015 Mitchell and released under the MIT license. --- lexers/makefile.lua | 108 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 lexers/makefile.lua (limited to 'lexers/makefile.lua') diff --git a/lexers/makefile.lua b/lexers/makefile.lua new file mode 100644 index 0000000..480e032 --- /dev/null +++ b/lexers/makefile.lua @@ -0,0 +1,108 @@ +-- Copyright 2006-2015 Mitchell mitchell.att.foicica.com. See LICENSE. +-- Makefile LPeg lexer. + +local l = require('lexer') +local token, word_match = l.token, l.word_match +local P, R, S = lpeg.P, lpeg.R, lpeg.S + +local M = {_NAME = 'makefile'} + +-- Whitespace. +local ws = token(l.WHITESPACE, l.space^1) + +-- Comments. +local comment = token(l.COMMENT, '#' * l.nonnewline^0) + +-- Keywords. +local keyword = token(l.KEYWORD, P('!')^-1 * l.word_match({ + -- GNU Make conditionals. + 'ifeq', 'ifneq', 'ifdef', 'ifndef', 'else', 'endif', + -- Other conditionals. + 'if', 'elseif', 'elseifdef', 'elseifndef', + -- Directives and other keywords. + 'define', 'endef', 'export', 'include', 'override', 'private', 'undefine', + 'unexport', 'vpath' +}, nil, true)) + +-- Functions. +local func = token(l.FUNCTION, l.word_match({ + -- Functions for String Substitution and Analysis. + 'subst', 'patsubst', 'strip', 'findstring', 'filter', 'filter-out', 'sort', + 'word', 'wordlist', 'words', 'firstword', 'lastword', + -- Functions for File Names. + 'dir', 'notdir', 'suffix', 'basename', 'addsuffix', 'addprefix', 'join', + 'wildcard', 'realpath', 'abspath', + -- Functions for Conditionals. + 'if', 'or', 'and', + -- Miscellaneous Functions. + 'foreach', 'call', 'value', 'eval', 'origin', 'flavor', 'shell', + -- Functions That Control Make. + 'error', 'warning', 'info' +}), '-') + +-- Variables. +local word_char, assign = l.any - l.space - S(':#=(){}'), S(':+?')^-1 * '=' +local expanded_var = '$' * ('(' * word_char^1 * ')' + '{' * word_char^1 * '}') +local auto_var = '$' * S('@%