पटलम्:Expression

विकिपीडिया, कश्चन स्वतन्त्रः विश्वकोशः

"इस मॉड्यूल हेतु प्रलेख पटलम्:Expression/doc पर बनाया जा सकता है"

 --- this began long ago when a first test program for the Mandelbrot set went pear-shaped
 
local p={}

function chunk(text)
    local text=mw.ustring.gsub(text,"(%d%s*)E(%s*[%d%+%-])","%1 E %2") -- force space around E notation to avoid going nuts later
    local debuglog=""
    local chunks={type={}}
    local prowl=mw.ustring.gmatch(text,"(%S+)")
    local firstbit
    local num=1
    local op=2
    local var=3
    local warning=4
    local defs={num={"^([%d%.]*)(.*)$"},op={"^(E?)(.*)$","^([%(%)%*%+%-%?%%/!^]?)(.*)$"},var={"^(%a*)(.*)$"}}
    t=prowl()
    while t do
        local ot=t
        for i,j in pairs(defs) do
            for _,v in pairs(j) do
                firstbit,t=mw.ustring.match(t,v)
                debuglog=debuglog.."<"..tostring(firstbit)..","..tostring(t)..">"..tostring(i).."i"..tostring(j).."j"..tostring(t).."t"..tostring(v).."v"
                assert(t,debuglog) -- should always deliver a null string even if the target isn't there
                if firstbit ~= "" then
                    table.insert(chunks,firstbit)
                    table.insert(chunks.type,i)
                end
            end
        end
        if t==ot then
            firstbit,t=mw.ustring.match(t,"^(.)(.*)$")
            table.insert(chunks,'ignored:'..firstbit)
            table.insert(chunks.type,warning)
        end
        if t=="" then t=prowl() end -- if you run out of bits between spaces, pull a new interspace bit.
    end
    return chunks
end

function p.main(frame)
    local args=frame.args or {}
    local parent=frame.getParent(frame) or {}
    local pargs=parent.args or {}
    local expr=args.expr or pargs.expr or "" -- (Handle nothing in with nothing out?)
    local chunks=chunk(expr)
    return #chunks,"types"..table.concat(chunks.type,",").."values"..table.concat(chunks,",")
    -- check 1: getting the input sorted out into chunks
end

return p
"https://sa.wikipedia.org/w/index.php?title=पटलम्:Expression&oldid=433496" इत्यस्माद् प्रतिप्राप्तम्