l_patt3.rig 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. ---------------- PATTERN3.RIG ---------------
  2. #{ablon_derewa
  3. -- <. ... .>
  4. [ $E := #NAME_PAT ]
  5. V'($$ = '<.') #_KEYWORD
  6. (* $B !.:= #|l_t_{_derewa * #COMMA )
  7. V'($$ = '.>') #_KEYWORD
  8. / RETURN 'TREE'::<. NAME: $E,
  9. type: <. tree : T .>,
  10. BODY: $B .>/ ;;
  11. -- <* ... *>
  12. [ $E := #NAME_PAT ]
  13. V'($$ = '<*') #_KEYWORD
  14. (* $B !.:= #|l_t_{_derewa #COMMA *)
  15. $VAR := #_VARNTOATM
  16. / $loopvartype := #TAB( LAST #program $name $VAR)
  17. ++ <. id : T .> /
  18. V'($$ = ':') #_KEYWORD
  19. [ $P !! := #dejstwiq ]
  20. $P !. := #{ablon
  21. [ $P !! := #dejstwiq ]
  22. V'($$ = '*>') #_KEYWORD
  23. / RETURN 'TREE'::<. NAME: $E,
  24. BODY: $B,
  25. type: <. tree : T .>,
  26. loopvar: VAR ::<. NAME: $VAR,
  27. type: $loopvartype .>,
  28. 'LOOP': $P .>/
  29. ##
  30. -------------------------------------------------------
  31. #NAME_PAT
  32. V'( NOT #_KEYWORD($$)) $E := #ATOM
  33. V'($$ = '::') #_KEYWORD ;;
  34. $E := #_VARNTOATM
  35. V'( $$ = '::') #_KEYWORD
  36. / $type := #TAB( LAST #program $name $E )
  37. ++ <. id :T, num: T, sym: T .>;
  38. RETURN VAR::<. NAME: $E,
  39. type: $type .>/
  40. ##
  41. -------------------------------------------------------
  42. #|l_t_{_derewa
  43. [ V'( $$ = '[') #_KEYWORD ]
  44. $I := #IDENT
  45. V'($$ = ':') #_KEYWORD
  46. [ $A !!:= #dejstwiq ]
  47. $A !.:= #{ablon
  48. [ $A !!:= #dejstwiq ]
  49. [ V'($$ = ']') #_KEYWORD ]
  50. / RETURN $A /
  51. ##
  52. ---------------------------------------------------------
  53. #COMMA
  54. V'( $$ = ',') #_KEYWORD
  55. ##
  56. ------------------------------------------------------
  57. #BUILTIN
  58. ( 'ATOM' / RETURN <. id: T, num: T, sym: T .> / !
  59. 'NUMBER' / RETURN <. num: T .> / !
  60. 'IDENT' / RETURN <. id: T .> / !
  61. 'LIST' / RETURN <. list: T .> / !
  62. 'TREE' / RETURN <. tree: T .> / !
  63. 'TATOM' / RETURN <. sym : T .> / !
  64. 'FATOM' / RETURN <. sym : T .> / !
  65. 'IMPLODE' / RETURN <. sym : T, id: T .> / !
  66. 'EXPLODE' / RETURN <. list : T .> / !
  67. '_KEYWORD' / RETURN <. sym : T .> / !
  68. '_SPECDESC' / RETURN <. T : T .> / !
  69. '_VARNAME' / RETURN <. id : T .> / !
  70. '_RULENAME' / RETURN <. id : T .> / !
  71. 'LEN' / RETURN <. num : T .> / !
  72. '_RULETOATM' / RETURN <. id: T .> / !
  73. '_VARNTOATM' / RETURN <. id: T .> / !
  74. 'DEBUG' / RETURN <. T : T .> / !
  75. '_SPECTODSC' / RETURN <. T : T .> / !
  76. '_CONTENT2' / RETURN <. num : T .> / !
  77. 'CHR' / RETURN <. id: T, sym: T .> / !
  78. 'PARM' / RETURN <. list: T .> / !
  79. '_TOTATOM' / RETURN <. sym: T .> / !
  80. 'ORD' / RETURN <. num : T .> / )
  81. ##
  82. ------------------------------------------------------