Advertisement
Guest User

Untitled

a guest
Mar 26th, 2019
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Prolog 2.48 KB | None | 0 0
  1. word(void, 1, 2).
  2. word(space, 2, 3).
  3. word(fun1, 3, 4).
  4. word(leftbracket, 5, 6).
  5. word(int, 7, 8).
  6. word(comma, 9, 10).
  7. word(space, 11, 12).
  8. word(double, 13, 14).
  9. word(rightbracket, 15, 16).
  10.  
  11. istype(void).
  12. istype(char).
  13. istype(bool).
  14. istype(int).
  15. istype(double).
  16.  
  17. istypeident(unsigned).
  18. isspace(space).
  19. iscomma(comma).
  20.  
  21. isbracketl(leftbracket).
  22. isbracketr(rightbracket).
  23.  
  24. press([],[]).
  25. press([H],[H]).
  26. press([data(space)|[data(space)|T]],[data(space)|T1]) :-
  27.     press([data(space)|T],[data(space)|T1]).
  28. press([data(Name)|[data(Name1)|T]],[data(Name)|[data(Name1)|T1]]) :-
  29.     press([data(Name1)|T],[data(Name1)|T1]).
  30. press([data(Name1)|[data(Name)|T]],[data(Name1)|[data(Name)|T1]]) :-
  31.     press([data(Name)|T],[data(Name)|T1]).
  32.  
  33. getdata(data(Name)) :- word(Name, _, _).
  34. getdatalist(DataList) :-
  35.     findall(Data, getdata(Data), TmpDataList),
  36.     press(TmpDataList, DataList).
  37.  
  38.  
  39. gettypeident(List, Params, Res) :-
  40.     Res = 1,
  41.     gettypes(List, Params).
  42. gettypeident(_, _, _) :- write("No solutions"), nl.
  43.  
  44. gettypes([], []).
  45.  
  46. gettypes([data(Name) | [data(Name1) | [data(Name2) | T]]], [result_type(Name) | T1]):-
  47.     istype(Name),
  48.     isspace(Name1),
  49.     not(iscomma(Name2)),
  50.     write(Name), nl,
  51.     gettypes([data(Name1) | [data(Name2) | T]], T1), !.
  52.  
  53. gettypes([data(Name) | [data(Name1) | [data(Name2) | T]]], [func(Name) | T1]):-
  54.     not(istypeident(Name)),
  55.     not(istype(Name)),
  56.     not(isspace(Name)),
  57.     not(iscomma(Name)),
  58.     not(isbracketr(Name)),
  59.     isbracketl(Name1),
  60.     write(Name), nl,
  61.     gettypes([data(Name1) | [data(Name2) | T]], T1), !.
  62.  
  63. gettypes([data(Name) | T], T1) :-
  64.     not(istypeident(Name)),
  65.     not(istype(Name)),
  66.     not(isspace(Name)),
  67.     not(iscomma(Name)),
  68.     not(isbracketl(Name)),
  69.     not(isbracketr(Name)),
  70.     write(Name), nl,
  71.     gettypes(T, T1), !.
  72.  
  73. gettypes([data(Name) | T], T1) :-
  74.     isbracketl(Name),
  75.     write(Name), nl,
  76.     gettypes(T, T1), !.
  77.  
  78. gettypes([data(Name) | T], T1) :-
  79.     isbracketr(Name),
  80.     write(Name), nl,
  81.     gettypes(T, T1), !.
  82.  
  83. gettypes([data(Name) | T], T1) :-
  84.     iscomma(Name),
  85.     write(Name), nl,
  86.     gettypes(T, T1), !.
  87.  
  88. gettypes([data(Name) | T], [typeident(Name) | T1]) :-
  89.     istypeident(Name),
  90.     write(Name), nl,
  91.     gettypes(T, T1), !.
  92.  
  93. gettypes([data(Name) | T], [param_type(Name) | T1]) :-
  94.     istype(Name),
  95.     write(Name), nl,
  96.     gettypes(T, T1), !.
  97.  
  98. gettypes([data(Name) | T], Params) :-
  99.     isspace(Name),
  100.     write(Name), nl,
  101.     gettypes(T, Params), !.
  102.  
  103. gettypes([data(Name) | T], [nan(Name) | T1]) :-
  104.     write(Name), nl,
  105.     gettypes(T, T1).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement