Hex Artifact Content
Not logged in

Artifact 72c1e0f374b13246010b25790a2b13dd47360996:


0000: ef bb bf 2f 2a 2a 0d 0a 20 2a 20 41 75 74 68 6f  .../**.. * Autho
0010: 72 73 3a 20 6b 2e 69 6e 61 62 61 0d 0a 20 2a 20  rs: k.inaba.. * 
0020: 4c 69 63 65 6e 73 65 3a 20 4e 59 53 4c 20 30 2e  License: NYSL 0.
0030: 39 39 38 32 20 68 74 74 70 3a 2f 2f 77 77 77 2e  9982 http://www.
0040: 6b 6d 6f 6e 6f 73 2e 6e 65 74 2f 6e 79 73 6c 2f  kmonos.net/nysl/
0050: 0d 0a 20 2a 0d 0a 20 2a 20 49 6e 74 65 72 70 72  .. *.. * Interpr
0060: 65 74 65 72 2d 77 69 73 65 20 66 72 65 73 68 20  eter-wise fresh 
0070: 49 44 20 67 65 6e 65 72 61 74 6f 72 2e 0d 0a 20  ID generator... 
0080: 2a 2f 0d 0a 6d 6f 64 75 6c 65 20 70 6f 6c 65 6d  */..module polem
0090: 79 2e 66 72 65 73 68 3b 0d 0a 69 6d 70 6f 72 74  y.fresh;..import
00a0: 20 70 6f 6c 65 6d 79 2e 5f 63 6f 6d 6d 6f 6e 3b   polemy._common;
00b0: 0d 0a 69 6d 70 6f 72 74 20 63 6f 72 65 2e 61 74  ..import core.at
00c0: 6f 6d 69 63 3b 0d 0a 0d 0a 70 72 69 76 61 74 65  omic;....private
00d0: 20 73 68 61 72 65 64 20 69 6e 74 20 66 72 65 73   shared int fres
00e0: 68 56 61 72 49 64 20 3d 20 2d 31 3b 0d 0a 0d 0a  hVarId = -1;....
00f0: 2f 2f 2f 20 47 65 6e 65 72 61 74 65 20 6f 6e 65  /// Generate one
0100: 20 66 72 65 73 68 20 76 61 72 69 61 62 6c 65 20   fresh variable 
0110: 6e 61 6d 65 0d 0a 0d 0a 73 74 72 69 6e 67 20 66  name....string f
0120: 72 65 73 68 56 61 72 4e 61 6d 65 28 29 0d 0a 7b  reshVarName()..{
0130: 0d 0a 09 72 65 74 75 72 6e 20 74 65 78 74 28 22  ...return text("
0140: 24 22 2c 20 61 74 6f 6d 69 63 4f 70 21 28 22 2b  $", atomicOp!("+
0150: 3d 22 29 28 66 72 65 73 68 56 61 72 49 64 2c 20  =")(freshVarId, 
0160: 31 29 29 3b 0d 0a 7d 0d 0a                       1));..}..