rig_lint.rig 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. ----------------------- LINT.RIG -------------
  2. -- LINT for RIGAL
  3. -- checks types in expressions
  4. -- : list, tree, num, id, sym
  5. -------------------------------------------------
  6. -- M.Auguston, 4.12.89
  7. -------------------------------------------------
  8. #Lint
  9. -- global vars:
  10. -- $Tab : <* rule_name: <* var_name : <. T:T,
  11. -- [ list:T],
  12. -- [tree:T],
  13. -- [num:T],
  14. -- [id:T],
  15. -- [sym:T] .> *> *>
  16. -- $Rules : <* rule_name: <. T:T,
  17. -- [list:T],... .> *>
  18. ------------------------------------------------------
  19. $P := #PARM( T);
  20. $L := #CALL_PAS(14 #IMPLODE( $P[1] '.rig') );
  21. OPEN err #IMPLODE( $P[1] '.lnt');
  22. err<<' LINT diagnostics:';
  23. OPEN Display ' ';
  24. $X := #program ( $L); -- first pass
  25. #transitive_closure( $X);
  26. PRINT (. after closure '$Tab=' $Tab .);
  27. PRINT (. '$Rules=' $Rules .);
  28. #check ( $X );
  29. IF $err_count > 0 -> Display<< $err_count 'warnings discovered'
  30. ELSIF T -> Display << 'no warnings discovered';
  31. err<< '*** no warnings discovered' FI;
  32. ##
  33. %INCLUDE l_anal.rig
  34. %INCLUDE l_operat.rig
  35. %INCLUDE l_instr.rig
  36. %INCLUDE l_patt.rig
  37. %INCLUDE l_patt2.rig
  38. %INCLUDE l_patt3.rig
  39. %INCLUDE l_exprs.rig
  40. %INCLUDE l_expr1.rig
  41. %INCLUDE l_closur.rig
  42. %INCLUDE l_check.rig