1:- module(tidylog_atom_punc, [punctuation//1]). 2
4
5:- use_module(library(tidylog/common), [ when_generating//1
6 , when_parsing//1
7 ]). 8
9punctuation(A) -->
10 when_generating(atom_codes(A,Codes)),
11
12 ( grawlix(Codes)
13 ; solo(Codes)
14 ; brackets(Codes)
15 ),
16
17 when_parsing(atom_codes(A,Codes)).
18
19
20grawlix([C|Codes]) -->
21 [C],
22 { grawlix_char(C) },
23 grawlix_(Codes).
24
25grawlix_([C|Codes]) -->
26 [C],
27 { grawlix_char(C) },
28 grawlix_(Codes).
29grawlix_([]) -->
30 [].
31
32
33grawlix_char(0'#). 34grawlix_char(0'$). 35grawlix_char(0'&). 36grawlix_char(0'*). 37grawlix_char(0'+). 38grawlix_char(0'-). 39grawlix_char(0'.). 40grawlix_char(0'/). 41grawlix_char(0':). 42grawlix_char(0'<). 43grawlix_char(0'=). 44grawlix_char(0'>). 45grawlix_char(0'?). 46grawlix_char(0'@). 47grawlix_char(0'^). 48grawlix_char(0'~). 49
50
51solo([0';]) --> 52 ";".
53solo([0'!]) --> 54 "!".
55
56
57brackets([0'[, 0']]) -->
58 "[]".
59brackets([0'{,0'}]) -->
60 "{}"