Advertisement
ZNZNCOOP

nitest

Dec 16th, 2014
218
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.53 KB | None | 0 0
  1. Vars= {}
  2. function drop(line)
  3.    s= {}
  4.    for i=1,#line do
  5.         s[#s+1]= string.sub(line,i,i)
  6.    end
  7.    for i=1,#s do
  8.    end
  9.    return s
  10. end
  11.  
  12. function tempS()
  13.    if temp ~= '' then
  14.       return true
  15.    elseif temp == '' then
  16.       return false
  17.    end
  18.  
  19. end
  20. function parse(lines)
  21.    tokens= {}
  22.    textS= false
  23.    forS= false
  24.    tS= false
  25.    specT= {'<','>','=',',','.','(',')'}
  26.    Numbers= {'0','1','2','3','4','5','6','7','8','9'}
  27.    temp= ''
  28.    i= 0
  29.    d= 0
  30.    line= 2
  31.    simb= 2
  32. s= drop(lines)
  33. i= 0
  34. while i<#s do
  35. i= i+1
  36.         forS= false
  37.         if (string.byte(s[i]) > 48 and string.byte(s[i]) < 58) then
  38.            if temp~= '' then
  39.               tokens[#tokens+1]= temp
  40.               temp= ''
  41.            end
  42.            c= ''
  43.  
  44.            while true do
  45.               stat= false
  46.               for h=1,#Numbers do
  47.                  if (Numbers[h] == s[i]) then
  48.                     c= c..s[i]
  49.                     stat= true
  50.                  end
  51.               end
  52.               if (stat == false) then
  53.                  tokens[#tokens+1]= c
  54.                  c= ''
  55.                  break
  56.               end
  57.               i= i+1
  58.            end
  59.         end
  60.         if g == line and i == simb then
  61.            --print(textS)
  62.         end
  63.  
  64.         if s[i] == '"' or s[i] == "'" then
  65.            if textS == false then textS= true tS= true
  66.            elseif textS == true then textS= false tS= false end
  67.            
  68.         end
  69.  
  70.         if s[i] == ' ' and textS == false then
  71.            if temp ~= '' then
  72.               tokens[#tokens+1]= temp
  73.            end
  74.            temp= ''
  75.            forS= true
  76.            while true do
  77.               --print(i," ",s[i])
  78.               if s[i+1] ~= ' ' then
  79.                  break
  80.               end
  81.               i= i+1
  82.            end
  83.         end
  84.        
  85.         for q=1,#specT do
  86.           if s[i] == specT[q] and tS == false then
  87.             forS= true
  88.             if temp ~= "" then
  89.                tokens[#tokens+1]= temp
  90.             end
  91.             tokens[#tokens+1]= s[i]
  92.             temp= ''
  93.             break
  94.           end
  95.         end
  96.         if s[i+1] == nil then
  97.            if tempS() then
  98.               temp= temp..s[i]
  99.               tokens[#tokens+1]= temp
  100.               temp= ''
  101.            end
  102.            break
  103.         end
  104.         if forS == false then
  105.            temp= temp..s[i]
  106.            --print(temp)
  107.         end
  108.        
  109.    end
  110.    token= {}
  111.    specWords= {'for'}
  112.    forS= false
  113.    forSS= false
  114.    for i=1,#tokens do
  115.       token[i]= {}
  116.       forS= false
  117.       forSS= false
  118.       d= tonumber(tokens[i])
  119.       if (type(d) == 'number') then
  120.          token[i][1]= 'number'
  121.          token[i][2]= d
  122.          forSS= true
  123.       end
  124.       for q=1,#specT do
  125.          if (tokens[i] == specT[q]) then
  126.             token[i][1]= 'SS'
  127.             token[i][2]= tokens[i]
  128.             forS= true
  129.             break
  130.          end
  131.       end
  132.       if (forS == false) then
  133.          for q=1,#specWords do
  134.             if (tokens[i] == specWords[q]) then
  135.                token[i][1]= 'SW'
  136.                token[i][2]= tokens[i]
  137.                forSS= true
  138.                break
  139.             end
  140.          end
  141.          if (forSS == false) then
  142.             token[i][1]= 'word'
  143.             token[i][2]= tokens[i]
  144.          end
  145.       end
  146.    end
  147.    for i=1,#token do
  148.       print(token[i][1],' ',token[i][2])
  149.    end
  150.    return token
  151. end
  152.  
  153. while true do
  154.    io.write('Line<')
  155.    mess= io.read()
  156.    if (mess == 'ex') then break end
  157.    s= parse(mess)
  158. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement