Advertisement
Guest User

Parser

a guest
Dec 11th, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 0.92 KB | None | 0 0
  1. lmc_load(Filename, Result):- open(Filename,read,Stream), read_string(Stream,_,String), split_string(String, "\n","\r",Lines), close(Stream), riga(Lines, Result).
  2.  
  3. lmc_run(Filename, Input, Output):-lmc_load(Filename, Mem).% execution_loop(state(0, 0, Mem,Input, [], 0), Output).
  4.  
  5. riga([], []).
  6. riga([X|L], [Somma|Result] ):-  split_string(X," ", " ", [F, G|_]), string_upper(F, String), calc(String, T), T=<800, number_string(M, G), Somma is M+ T, riga(L, Result).
  7. riga([X|L], [Somma|Result] ):-  split_string(X," ", " ", [F|_]), string_upper(F, String), calc(String, T), T>800, Somma is T, riga(L, Result).
  8.  
  9.  
  10.  
  11.  
  12. calc("ADD", X) :- X is 100.
  13. calc("SUB", X) :- X is 200.
  14. calc("STA", X) :- X is 300.
  15. calc("LDA", X) :- X is 500.
  16. calc("BRA", X) :- X is 600.
  17. calc("BRZ", X) :- X is 700.
  18. calc("BRP", X) :- X is 800.
  19. calc("INP", X) :- X is 901.
  20. calc("OUT", X) :- X is 902.
  21. calc("HLT", X) :- X is 000.
  22.  
  23. calc(_, X)     :- X is 999.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement