diff options
author | SoniEx2 <endermoneymod@gmail.com> | 2019-03-31 11:02:57 -0300 |
---|---|---|
committer | SoniEx2 <endermoneymod@gmail.com> | 2019-03-31 11:02:57 -0300 |
commit | d03d77d28b812244be66763356f24659da769f05 (patch) | |
tree | cef5cff3fc7dcfc1f0794633d7c835c8938c3a6b /test.lua |
Parser seems to work?
Diffstat (limited to 'test.lua')
-rw-r--r-- | test.lua | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/test.lua b/test.lua new file mode 100644 index 0000000..606d60e --- /dev/null +++ b/test.lua @@ -0,0 +1,58 @@ +--[[ + This file is part of parser.lua - table based parsing + Copyright (C) 2019 Soni L. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see <https://www.gnu.org/licenses/>. +--]] + +local parser = require "parser" + +do -- trim left spaces + local defs = {} + defs.self = defs + defs[' '] = "whitespace" + defs['\n'] = "whitespace" + defs['\r'] = "whitespace" + defs['\t'] = "whitespace" + defs['\f'] = "whitespace" + defs['\v'] = "whitespace" + defs.whitespace = "self" + defs[''] = function(state, token) + state[#state + 1] = token + if #state > 20 then + state[1] = table.concat(state) + for i=#state, 2, -1 do + state[i] = nil + end + end + return "start" + end + defs.start = {} + defs.start.self = defs.start + defs.start[''] = function(state, token) + state[#state + 1] = token + if #state > 20 then + state[1] = table.concat(state) + for i=#state, 2, -1 do + state[i] = nil + end + end + return "self" + end + for k,v in ipairs({"hello", " hello", "\t \v \n\r hallo", "I really like this parser thingy if it can be called that"}) do + local state, err = parser.parse(defs, v) + if not state then print(err) end + print(table.concat(state)) + end +end |