<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://austenasia.wiki/index.php?action=history&amp;feed=atom&amp;title=Module%3ALua_lexer</id>
	<title>Module:Lua lexer - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://austenasia.wiki/index.php?action=history&amp;feed=atom&amp;title=Module%3ALua_lexer"/>
	<link rel="alternate" type="text/html" href="https://austenasia.wiki/index.php?title=Module:Lua_lexer&amp;action=history"/>
	<updated>2026-10-09T07:44:36Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://austenasia.wiki/index.php?title=Module:Lua_lexer&amp;diff=836&amp;oldid=prev</id>
		<title>Austenasia: 1 revision imported</title>
		<link rel="alternate" type="text/html" href="https://austenasia.wiki/index.php?title=Module:Lua_lexer&amp;diff=836&amp;oldid=prev"/>
		<updated>2026-09-18T17:39:12Z</updated>

		<summary type="html">&lt;p&gt;1 revision imported&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en-GB&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 17:39, 18 September 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en-GB&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Austenasia</name></author>
	</entry>
	<entry>
		<id>https://austenasia.wiki/index.php?title=Module:Lua_lexer&amp;diff=835&amp;oldid=prev</id>
		<title>Module:Fallbacklist&gt;Awesome Aasim: remove header but link to MIT license</title>
		<link rel="alternate" type="text/html" href="https://austenasia.wiki/index.php?title=Module:Lua_lexer&amp;diff=835&amp;oldid=prev"/>
		<updated>2026-06-08T03:21:07Z</updated>

		<summary type="html">&lt;p&gt;remove header but link to MIT license&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;--- Lexer for Lua source code written in pure Lua.&lt;br /&gt;
--  @script             lexer&lt;br /&gt;
--  @license            [https://github.com/LoganDark/lua-lexer/blob/master/LICENSE MIT]&lt;br /&gt;
--  @author             https://github.com/LoganDark&lt;br /&gt;
--  @param              {string} text Lua source code to lex.&lt;br /&gt;
--  @return             {string} Table of line arrays containing lexemes.&lt;br /&gt;
&lt;br /&gt;
--- Mapper for individual token list string.&lt;br /&gt;
--  @param              {string} src List of characters or keywords to map.&lt;br /&gt;
--  @param[opt]         {table} list Table to extend by reference.&lt;br /&gt;
--  @return             {{char=true,...}}, map &lt;br /&gt;
--  @local&lt;br /&gt;
local function lookupify(src, list)&lt;br /&gt;
	list = list or {}&lt;br /&gt;
&lt;br /&gt;
	if type(src) == &amp;#039;string&amp;#039; then&lt;br /&gt;
		for i = 1, src:len() do&lt;br /&gt;
			list[src:sub(i, i)] = true&lt;br /&gt;
		end&lt;br /&gt;
	elseif type(src) == &amp;#039;table&amp;#039; then&lt;br /&gt;
		for i = 1, #src do&lt;br /&gt;
			list[src[i]] = true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return list&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Base identifier character set.&lt;br /&gt;
--  @variable           {string} base_ident&lt;br /&gt;
local base_ident = &amp;#039;abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_&amp;#039;&lt;br /&gt;
&lt;br /&gt;
--- Base identifier character set.&lt;br /&gt;
--  @variable           {string} base_digits&lt;br /&gt;
local base_digits = &amp;#039;0123456789&amp;#039;&lt;br /&gt;
&lt;br /&gt;
--- Base identifier character set.&lt;br /&gt;
--  @variable           {string} base_operators&lt;br /&gt;
local base_operators = &amp;#039;+-*/^%#&amp;#039;&lt;br /&gt;
&lt;br /&gt;
--- Map of Lua character patterns.&lt;br /&gt;
--  @table              chars&lt;br /&gt;
--  @field              {table} whitespace Boolean map of whitespace&lt;br /&gt;
--                      tokens.&lt;br /&gt;
--  @field              {table} validEscapes Boolean map of valid escape&lt;br /&gt;
--                      characters.&lt;br /&gt;
--  @field              {table} ident Boolean map of valid identifier&lt;br /&gt;
--                      characters.&lt;br /&gt;
--  @field              {table} symbols Boolean map of valid symbol and&lt;br /&gt;
--                      operator characters.&lt;br /&gt;
--  @local&lt;br /&gt;
local chars = {&lt;br /&gt;
	whitespace = lookupify(&amp;#039; \n\t\r&amp;#039;),&lt;br /&gt;
	validEscapes = lookupify(&amp;#039;abfnrtv&amp;quot;\&amp;#039;\\&amp;#039;),&lt;br /&gt;
	ident = lookupify(&lt;br /&gt;
		base_ident .. base_digits,&lt;br /&gt;
		{&lt;br /&gt;
			start = lookupify(base_ident),&lt;br /&gt;
		}&lt;br /&gt;
	),&lt;br /&gt;
&lt;br /&gt;
	digits = lookupify(&lt;br /&gt;
		base_digits,&lt;br /&gt;
		{&lt;br /&gt;
			hex = lookupify(base_digits .. &amp;#039;abcdefABCDEF&amp;#039;)&lt;br /&gt;
		}&lt;br /&gt;
	),&lt;br /&gt;
&lt;br /&gt;
	symbols = lookupify(&lt;br /&gt;
		base_operators .. &amp;#039;,{}[]();.:&amp;#039;, {&lt;br /&gt;
			equality = lookupify(&amp;#039;~=&amp;gt;&amp;lt;&amp;#039;),&lt;br /&gt;
			operators = lookupify(base_operators)&lt;br /&gt;
		}&lt;br /&gt;
	)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
--- List of Lua keywords.&lt;br /&gt;
--  @table              keywords&lt;br /&gt;
--  @field              structure Boolean map of structure keywords.&lt;br /&gt;
--  @field              values Boolean map of primitive keywords.&lt;br /&gt;
local keywords = {&lt;br /&gt;
	structure = lookupify({&lt;br /&gt;
		&amp;#039;and&amp;#039;, &amp;#039;break&amp;#039;, &amp;#039;do&amp;#039;, &amp;#039;else&amp;#039;, &amp;#039;elseif&amp;#039;, &amp;#039;end&amp;#039;, &amp;#039;for&amp;#039;, &amp;#039;function&amp;#039;,&lt;br /&gt;
		&amp;#039;goto&amp;#039;, &amp;#039;if&amp;#039;, &amp;#039;in&amp;#039;, &amp;#039;local&amp;#039;, &amp;#039;not&amp;#039;, &amp;#039;or&amp;#039;, &amp;#039;repeat&amp;#039;, &amp;#039;return&amp;#039;, &amp;#039;then&amp;#039;,&lt;br /&gt;
		&amp;#039;until&amp;#039;, &amp;#039;while&amp;#039;&lt;br /&gt;
	}),&lt;br /&gt;
&lt;br /&gt;
	values = lookupify({&lt;br /&gt;
		&amp;#039;true&amp;#039;, &amp;#039;false&amp;#039;, &amp;#039;nil&amp;#039;&lt;br /&gt;
	})&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
--  Lexer function export.&lt;br /&gt;
return function(text)&lt;br /&gt;
	local pos = 1&lt;br /&gt;
	local start = 1&lt;br /&gt;
	local buffer = {}&lt;br /&gt;
	local lines = {}&lt;br /&gt;
&lt;br /&gt;
	local function look(delta)&lt;br /&gt;
		delta = pos + (delta or 0)&lt;br /&gt;
&lt;br /&gt;
		return text:sub(delta, delta)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function get()&lt;br /&gt;
		pos = pos + 1&lt;br /&gt;
&lt;br /&gt;
		return look(-1)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function getDataLevel()&lt;br /&gt;
		local num = 0&lt;br /&gt;
&lt;br /&gt;
		while look(num) == &amp;#039;=&amp;#039; do&lt;br /&gt;
			num = num + 1&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if look(num) == &amp;#039;[&amp;#039; then&lt;br /&gt;
			pos = pos + num + 1&lt;br /&gt;
&lt;br /&gt;
			return num&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function getCurrentTokenText()&lt;br /&gt;
		return text:sub(start, pos - 1)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local currentLineLength = 0&lt;br /&gt;
	local lineoffset = 0&lt;br /&gt;
&lt;br /&gt;
	local function pushToken(type, text)&lt;br /&gt;
		text = text or getCurrentTokenText()&lt;br /&gt;
&lt;br /&gt;
		local tk = buffer[#buffer]&lt;br /&gt;
&lt;br /&gt;
		if not tk or tk.type ~= type then&lt;br /&gt;
			tk = {&lt;br /&gt;
				type = type,&lt;br /&gt;
				data = text,&lt;br /&gt;
				posFirst = start - lineoffset,&lt;br /&gt;
				posLast = pos - 1 - lineoffset&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			if tk.data ~= &amp;#039;&amp;#039; then&lt;br /&gt;
				buffer[#buffer + 1] = tk&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			tk.data = tk.data .. text&lt;br /&gt;
			tk.posLast = tk.posLast + text:len()&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		currentLineLength = currentLineLength + text:len()&lt;br /&gt;
		start = pos&lt;br /&gt;
&lt;br /&gt;
		return tk&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function newline()&lt;br /&gt;
		lines[#lines + 1] = buffer&lt;br /&gt;
		buffer = {}&lt;br /&gt;
&lt;br /&gt;
		get()&lt;br /&gt;
		pushToken(&amp;#039;newline&amp;#039;)&lt;br /&gt;
		buffer[1] = nil&lt;br /&gt;
&lt;br /&gt;
		lineoffset = lineoffset + currentLineLength&lt;br /&gt;
		currentLineLength = 0&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function getData(level, type)&lt;br /&gt;
		while true do&lt;br /&gt;
			local char = get()&lt;br /&gt;
&lt;br /&gt;
			if char == &amp;#039;&amp;#039; then&lt;br /&gt;
				return&lt;br /&gt;
			elseif char == &amp;#039;\n&amp;#039; then&lt;br /&gt;
				pos = pos - 1&lt;br /&gt;
				pushToken(type)&lt;br /&gt;
				newline()&lt;br /&gt;
			elseif char == &amp;#039;]&amp;#039; then&lt;br /&gt;
				local valid = true&lt;br /&gt;
&lt;br /&gt;
				for i = 1, level do&lt;br /&gt;
					if look() == &amp;#039;=&amp;#039; then&lt;br /&gt;
						pos = pos + 1&lt;br /&gt;
					else&lt;br /&gt;
						valid = false&lt;br /&gt;
						break&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				if valid and look() == &amp;#039;]&amp;#039; then&lt;br /&gt;
					pos = pos - level - 1&lt;br /&gt;
&lt;br /&gt;
					return&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function chompWhitespace()&lt;br /&gt;
		while true do&lt;br /&gt;
			local char = look()&lt;br /&gt;
&lt;br /&gt;
			if char == &amp;#039;\n&amp;#039; then&lt;br /&gt;
				pushToken(&amp;#039;whitespace&amp;#039;)&lt;br /&gt;
				newline()&lt;br /&gt;
			elseif chars.whitespace[char] then&lt;br /&gt;
				pos = pos + 1&lt;br /&gt;
			else&lt;br /&gt;
				break&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		pushToken(&amp;#039;whitespace&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	while true do&lt;br /&gt;
		chompWhitespace()&lt;br /&gt;
&lt;br /&gt;
		local char = get()&lt;br /&gt;
&lt;br /&gt;
		if char == &amp;#039;&amp;#039; then&lt;br /&gt;
			break&lt;br /&gt;
		elseif char == &amp;#039;-&amp;#039; and look() == &amp;#039;-&amp;#039; then&lt;br /&gt;
			pos = pos + 1&lt;br /&gt;
&lt;br /&gt;
			if look() == &amp;#039;[&amp;#039; then&lt;br /&gt;
				pos = pos + 1&lt;br /&gt;
&lt;br /&gt;
				local level = getDataLevel()&lt;br /&gt;
&lt;br /&gt;
				if level then&lt;br /&gt;
					getData(level, &amp;#039;comment&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
					pos = pos + level + 2&lt;br /&gt;
					pushToken(&amp;#039;comment&amp;#039;)&lt;br /&gt;
				else&lt;br /&gt;
					while true do&lt;br /&gt;
						local char2 = get()&lt;br /&gt;
&lt;br /&gt;
						if char2 == &amp;#039;&amp;#039; or char2 == &amp;#039;\n&amp;#039; then&lt;br /&gt;
							pos = pos - 1&lt;br /&gt;
							pushToken(&amp;#039;comment&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
							if char2 == &amp;#039;\n&amp;#039; then&lt;br /&gt;
								newline()&lt;br /&gt;
							end&lt;br /&gt;
&lt;br /&gt;
							break&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				while true do&lt;br /&gt;
					local char2 = get()&lt;br /&gt;
&lt;br /&gt;
					if char2 == &amp;#039;&amp;#039; or char2 == &amp;#039;\n&amp;#039; then&lt;br /&gt;
						pos = pos - 1&lt;br /&gt;
						pushToken(&amp;#039;comment&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
						if char2 == &amp;#039;\n&amp;#039; then&lt;br /&gt;
							newline()&lt;br /&gt;
						end&lt;br /&gt;
&lt;br /&gt;
						break&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			pushToken(&amp;#039;comment&amp;#039;)&lt;br /&gt;
		elseif char == &amp;#039;\&amp;#039;&amp;#039; or char == &amp;#039;&amp;quot;&amp;#039; then&lt;br /&gt;
			pushToken(&amp;#039;string_start&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
			while true do&lt;br /&gt;
				local char2 = get()&lt;br /&gt;
&lt;br /&gt;
				if char2 == &amp;#039;\\&amp;#039; then&lt;br /&gt;
					pos = pos - 1&lt;br /&gt;
					pushToken(&amp;#039;string&amp;#039;)&lt;br /&gt;
					get()&lt;br /&gt;
&lt;br /&gt;
					local char3 = get()&lt;br /&gt;
&lt;br /&gt;
					if chars.digits[char3] then&lt;br /&gt;
						for i = 1, 2 do&lt;br /&gt;
							if chars.digits[look()] then&lt;br /&gt;
								pos = pos + 1&lt;br /&gt;
							end&lt;br /&gt;
						end&lt;br /&gt;
					elseif char3 == &amp;#039;x&amp;#039; then&lt;br /&gt;
						if chars.digits.hex[look()] and chars.digits.hex[look(1)] then&lt;br /&gt;
							pos = pos + 2&lt;br /&gt;
						else&lt;br /&gt;
							pushToken(&amp;#039;unidentified&amp;#039;)&lt;br /&gt;
						end&lt;br /&gt;
					elseif char3 == &amp;#039;\n&amp;#039; then&lt;br /&gt;
						pos = pos - 1&lt;br /&gt;
						pushToken(&amp;#039;escape&amp;#039;)&lt;br /&gt;
						newline()&lt;br /&gt;
					elseif not chars.validEscapes[char3] then&lt;br /&gt;
						pushToken(&amp;#039;unidentified&amp;#039;)&lt;br /&gt;
					end&lt;br /&gt;
&lt;br /&gt;
					pushToken(&amp;#039;escape&amp;#039;)&lt;br /&gt;
				elseif char2 == &amp;#039;\n&amp;#039; then&lt;br /&gt;
					pos = pos - 1&lt;br /&gt;
					pushToken(&amp;#039;string&amp;#039;)&lt;br /&gt;
					newline()&lt;br /&gt;
&lt;br /&gt;
					break&lt;br /&gt;
				elseif char2 == char or char2 == &amp;#039;&amp;#039; then&lt;br /&gt;
					pos = pos - 1&lt;br /&gt;
					pushToken(&amp;#039;string&amp;#039;)&lt;br /&gt;
					get()&lt;br /&gt;
&lt;br /&gt;
					break&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			pushToken(&amp;#039;string_end&amp;#039;)&lt;br /&gt;
		elseif chars.ident.start[char] then&lt;br /&gt;
			while chars.ident[look()] do&lt;br /&gt;
				pos = pos + 1&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			local word = getCurrentTokenText()&lt;br /&gt;
&lt;br /&gt;
			if keywords.structure[word] then&lt;br /&gt;
				pushToken(&amp;#039;keyword&amp;#039;)&lt;br /&gt;
			elseif keywords.values[word] then&lt;br /&gt;
				pushToken(&amp;#039;value&amp;#039;)&lt;br /&gt;
			else&lt;br /&gt;
				pushToken(&amp;#039;ident&amp;#039;)&lt;br /&gt;
			end&lt;br /&gt;
		elseif chars.digits[char] or (char == &amp;#039;.&amp;#039; and chars.digits[look()]) then&lt;br /&gt;
			if char == &amp;#039;0&amp;#039; and look() == &amp;#039;x&amp;#039; then&lt;br /&gt;
				pos = pos + 1&lt;br /&gt;
&lt;br /&gt;
				while chars.digits.hex[look()] do&lt;br /&gt;
					pos = pos + 1&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				while chars.digits[look()] do&lt;br /&gt;
					pos = pos + 1&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				if look() == &amp;#039;.&amp;#039; then&lt;br /&gt;
					pos = pos + 1&lt;br /&gt;
&lt;br /&gt;
					while chars.digits[look()] do&lt;br /&gt;
						pos = pos + 1&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				if look():lower() == &amp;#039;e&amp;#039; then&lt;br /&gt;
					pos = pos + 1&lt;br /&gt;
&lt;br /&gt;
					if look() == &amp;#039;-&amp;#039; then&lt;br /&gt;
						pos = pos + 1&lt;br /&gt;
					end&lt;br /&gt;
&lt;br /&gt;
					while chars.digits[look()] do&lt;br /&gt;
						pos = pos + 1&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			pushToken(&amp;#039;number&amp;#039;)&lt;br /&gt;
		elseif char == &amp;#039;[&amp;#039; then&lt;br /&gt;
			local level = getDataLevel()&lt;br /&gt;
&lt;br /&gt;
			if level then&lt;br /&gt;
				pushToken(&amp;#039;string_start&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
				getData(level, &amp;#039;string&amp;#039;)&lt;br /&gt;
				pushToken(&amp;#039;string&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
				pos = pos + level + 2&lt;br /&gt;
				pushToken(&amp;#039;string_end&amp;#039;)&lt;br /&gt;
			else&lt;br /&gt;
				pushToken(&amp;#039;symbol&amp;#039;)&lt;br /&gt;
			end&lt;br /&gt;
		elseif char == &amp;#039;.&amp;#039; then&lt;br /&gt;
			if look() == &amp;#039;.&amp;#039; then&lt;br /&gt;
				pos = pos + 1&lt;br /&gt;
&lt;br /&gt;
				if look() == &amp;#039;.&amp;#039; then&lt;br /&gt;
					pos = pos + 1&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			if getCurrentTokenText():len() == 3 then&lt;br /&gt;
				pushToken(&amp;#039;vararg&amp;#039;)&lt;br /&gt;
			else&lt;br /&gt;
				pushToken(&amp;#039;symbol&amp;#039;)&lt;br /&gt;
			end&lt;br /&gt;
		elseif char == &amp;#039;:&amp;#039; and look() == &amp;#039;:&amp;#039; then&lt;br /&gt;
			get()&lt;br /&gt;
&lt;br /&gt;
			pushToken(&amp;#039;label_start&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
			chompWhitespace()&lt;br /&gt;
&lt;br /&gt;
			if chars.ident.start[look()] then&lt;br /&gt;
				get()&lt;br /&gt;
&lt;br /&gt;
				while chars.ident[look()] do&lt;br /&gt;
					get()&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				pushToken(&amp;#039;label&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
				chompWhitespace()&lt;br /&gt;
&lt;br /&gt;
				if look() == &amp;#039;:&amp;#039; and look(1) == &amp;#039;:&amp;#039; then&lt;br /&gt;
					get()&lt;br /&gt;
					get()&lt;br /&gt;
&lt;br /&gt;
					pushToken(&amp;#039;label_end&amp;#039;)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		elseif chars.symbols.equality[char] then&lt;br /&gt;
			if look() == &amp;#039;=&amp;#039; then&lt;br /&gt;
				pos = pos + 1&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			pushToken(&amp;#039;operator&amp;#039;)&lt;br /&gt;
		elseif chars.symbols[char] then&lt;br /&gt;
			if chars.symbols.operators[char] then&lt;br /&gt;
				pushToken(&amp;#039;operator&amp;#039;)&lt;br /&gt;
			else&lt;br /&gt;
				pushToken(&amp;#039;symbol&amp;#039;)&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			pushToken(&amp;#039;unidentified&amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	lines[#lines + 1] = buffer&lt;br /&gt;
&lt;br /&gt;
	return lines&lt;br /&gt;
end&lt;/div&gt;</summary>
		<author><name>Module:Fallbacklist&gt;Awesome Aasim</name></author>
	</entry>
</feed>