import subprocess import time from tab import StackTabber from method import Method from mode import Fundamental from lex import Grammar, PatternRule, RegionRule, PatternMatchRule from mode.python import StringGrammar1, StringGrammar2 from mode.pipe import Pipe from method.shell import Interact chr1 = '[a-zA-Z_]' chr2 = '[a-zA-Z_0-9_]' word = '[a-zA-Z_]' + chr2 + '*' capword = '[a-zA-Z]' + chr2 + '*' class LuaGrammar(Grammar): rules = [ RegionRule('comment', r'--\[\[', Grammar, r'\]\]'), PatternRule('comment', '--.*$'), PatternRule('spaces', ' +'), PatternRule('eol', r'\n'), RegionRule('lua.string', "'", StringGrammar1, "'"), #fixme RegionRule('lua.string', '"', StringGrammar2, '"'), #fixme PatternMatchRule('', '(function)( +)([A-Za-z_][A-Za-z0-9_]*)(:)([A-Za-z_][A-Za-z0-9_]*)', 'lua.keyword', 'spaces', 'lua.class', 'delimiter', 'lua.function'), PatternMatchRule('', '(function)( +)([A-Za-z_][A-Za-z0-9_]*)', 'lua.keyword', 'spaces', 'lua.function'), PatternRule('lua.keyword', '(?:while|until|then|return|repeat|or|not|local|in|if|function|for|end|elseif|else|done|do|break|and)(?!' + chr2 + ')'), PatternRule('lua.reserved', '(?:true|false|nil|self)(?![a-zA-Z0-9_])'), PatternRule('lua.internal', '_[A-Z]+'), PatternRule('lua.class', '[A-Z][a-zA-Z0-9_]*'), PatternRule('lua.identifier', word), PatternRule('delimiter', r'(?:[=(){}\[\];:,.])'), PatternRule('lua.operator', r'(?:\.\.\.|\.\.|==|~=|<=|>=|<|>)'), PatternRule('lua.operator', r'(?:\+|-|/|\*|%|\^)'), PatternRule('lua.integer', r"(?