This is a mixture of tests for input syntax and for writeq output. The test instances here are the ones collected by Ulrich Neumerkel (as of 2016-12-13). This table is for ECLiPSe modules written in 'eclipse_language'. For modules using 'iso'-language, see separate table. The comments explain non-ISO features and say which syntax option controls the corresponding behaviour.
| Nr | Input | ISO expected | ECLiPSe 7.0.12 (eclipse_language) | Remarks |
|---|---|---|---|---|
| 1 | writeq('\n'). | '\n' | '\n' | Ok |
| 2 | ' | syntax err. | syntax error | Ok |
| 3 | ) | waits | syntax error | Ok |
| 261 | ) ' | syntax err. | syntax error | Ok |
| 4 | . | syntax err. | syntax error | Ok |
| 5 | writeq(' '). % horiz. tab | syntax err. | '\t' | ECLiPSe extension (see 'nl_in_quotes') |
| 177 | 0'\t=0' . % horiz. tab | syntax err. | succeeds | ECLiPSe extension (see 'nl_in_quotes') |
| 6 | writeq(' '). | syntax err. | '\n' | ECLiPSe extension (see 'nl_in_quotes') |
| 7 | writeq('\ '). % "\\\n" | '' | '' | Ok |
| 8 | writeq('\ a'). % "\\\na" | a | a | Ok |
| 9 | writeq('a\ b'). % "a\\\nb" | ab | ab | Ok |
| 10 | writeq('a\ b'). % "a\\\n b" | 'a b' | 'a b' | Ok |
| 11 | writeq('\ '). | syntax err. | syntax error | Ok |
| 193 | writeq('\ '). % "\\ \n" | syntax err. | syntax error | Ok |
| 12 | writeq('\ '). % "\\\t" | syntax err. | syntax error | Ok |
| 13 | writeq('\t'). | '\t' | '\t' | Ok |
| 14 | writeq('\a'). | e.g. '\a' | '\a' | Ok |
| 15 | writeq('\7\'). | e.g. '\a' | syntax error | Incompatibility traditional/ISO (see 'iso_escapes') |
| 16 | writeq('\ca'). | syntax err. | a | SICStus? feature (see 'iso_escapes') |
| 241 | writeq('\d'). | syntax err. | '\177' | Quintus feature (see 'iso_escapes') |
| 17 | writeq('\e'). | syntax err. | '\033' | Quintus feature (see 'iso_escapes') |
| 18 | writeq('\033\'). | e.g. '\33\' or repr. err. | syntax error | Incompatibility traditional/ISO (see 'iso_escapes') |
| 19 | char_code('\e',C). | syntax err. | C = 27 | Quintus feature (see 'iso_escapes') |
| 21 | char_code('\d',C). | syntax err. | C = 127 | Quintus feature (see 'iso_escapes') |
| 22 | writeq('\u1'). | syntax err. | syntax error | Ok |
| 23 | X = 0'\u1. | syntax err. | syntax error | Ok |
| 24 | writeq(' | syntax err. | syntax error | Ok |
| 25 | writeq(. | syntax err. | syntax error | Ok |
| 26 | '\ ''. | syntax err. | syntax error | Ok |
| 210 | X = 0'\. | syntax err. | X = 92 | Backward compatibility feature (see 'iso_escapes') |
| 211 | X = 0'\. . | syntax err. | X = 92 syntax error | Backward compatibility feature (see 'iso_escapes') |
| 222 | writeq((-)-(-)). | (-)-(-) | (-)-(-) | Ok |
| 223 | writeq(((:-):-(:-))). | (:-):-(:-) | (:-):-(:-) | Ok |
| 27 | writeq((*)=(*)). | (*)=(*) | (*)=(*) | Ok |
| 28 | writeq([:-,-]). | [:-,-] | [:-,-] | Ok |
| 29 | writeq(f(*)). | f(*) | f(*) | Ok |
| 30 | writeq(a*(b+c)). | a*(b+c) | a*(b+c) | Ok |
| 31 | writeq(f(;,'|',';;')). | f(;,'|',';;') | f(;,|,';;') | ECLiPSe extension (see 'bar_is_no_atom') |
| 32 | writeq([.,.(.,.,.)]). | ['.','.'('.','.','.')] | [.,.(.,.,.)] | Equally valid output, no quotes required |
| 33 | writeq((a :- b,c)). | a:-b,c | a:-b,c | Ok |
| 34 | write_canonical([a]). | '.'(a,[])<!-- example only--> | .(a,[]) | Equally valid output, no quotes required |
| 35 | writeq('/*'). | '/*' | '/*' | Ok |
| 203 | writeq(//*). | //* | //* | Ok |
| 282 | writeq(//*.*/). | //*.*/ | //*.*/ | Ok |
| 36 | writeq('/**'). | '/**' | '/**' | Ok |
| 37 | writeq('*/'). | */ | */ | Ok |
| 38 | "\'\`\"" = "'`""". % " | succeeds | fails | We do deliberately not allow the doubling of quotes to represent a quote. The backslash-escape must be used for that. The reason is that (a) consecutive atoms are possible in Prolog, and we prefer '+''Atom' to stand for +('Atom') rather than for '+\'Atom'; and (b) we use "string1""string2" for "string1string2", i.e. adjacent strings are implicitly concatenated (see 'doubled_quote_is_quote') |
| 179 | "\'\"" = "'""". % " | succeeds | fails | We do deliberately not allow the doubling of quotes to represent a quote. The backslash-escape must be used for that. The reason is that (a) consecutive atoms are possible in Prolog, and we prefer '+''Atom' to stand for +('Atom') rather than for '+\'Atom'; and (b) we use "string1""string2" for "string1string2", i.e. adjacent strings are implicitly concatenated (see 'doubled_quote_is_quote') |
| 178 | "\`" = "`". | succeeds | succeeds | Ok |
| 39 | '\'\`\"' = '''`"'. | succeeds | syntax error | We do deliberately not allow the doubling of quotes to represent a quote. The backslash-escape must be used for that. The reason is that (a) consecutive atoms are possible in Prolog, and we prefer '+''Atom' to stand for +('Atom') rather than for '+\'Atom'; and (b) we use "string1""string2" for "string1string2", i.e. adjacent strings are implicitly concatenated (see 'doubled_quote_is_quote') |
| 40 | writeq('\'\`\"\"'). | e.g. '\'`""' | '\'`""' | Ok |
| 41 | ('\\') = (\). | succeeds | succeeds | Ok |
| 42 | op(1,xf,xf1). 1xf1 = xf1(1). | succeeds | succeeds succeeds | Ok |
| 43 | X = 0X1. | syntax err. | syntax error | Ok |
| 44 | float(.0). | syntax err. | syntax error | Ok |
| 45 | op(100,xfx,.). functor(3 .2,F,A). | F = ('.'), A = 2. | succeeds F = '.', A = 2 | Ok |
| 46 | float(- .0). | syntax err. | syntax error | Ok |
| 47 | float(1E9). | syntax err. | succeeds | Point not required in ECLiPSe (see 'float_needs_point') |
| 48 | integer(1e). | syntax err. | syntax error | Ok |
| 49 | op(9,xf,e9). 1e9 = e9(1). | succeeds | succeeds fails | Point not required in ECLiPSe (see 'float_needs_point') |
| 50 | op(9,xf,e). 1e-9 = -(e(1),9). | succeeds | succeeds fails | Point not required in ECLiPSe (see 'float_needs_point') |
| 51 | /**/ 1.0e- 9 = -(e(1.0),9). | succeeds | succeeds | Ok |
| 204 | /**/ writeq(1e). | e.g. 1 e | 1 e | Ok |
| 220 | /**/ writeq(1.0e). | e.g. 1.0 e | 1.0 e | Ok |
| 52 | op(9,xfy,e). 1.2e 3 = e(X,Y). | X = 1.2, Y = 3. | succeeds X = 1.2, Y = 3 | Ok |
| 53 | writeq(1.0e100). | e.g. 1.0e+100 | 1e+100 | Point not required in ECLiPSe (see 'float_needs_point') |
| 54 | float(1.0ee9). | syntax err. | syntax error | Ok |
| 286 | (- (1)) = -(1). | succeeds | succeeds | Ok |
| 287 | (- -1) = -(-1). | succeeds | succeeds | Ok |
| 288 | (- 1^2) = ^(-1,2). | succeeds | fails | Sign must be adjacent to number (see 'blanks_after_sign') |
| 56 | integer(- 1). | succeeds | fails | Sign must be adjacent to number (see 'blanks_after_sign') |
| 57 | integer('-'1). | succeeds | fails | Sign must be unquoted (see 'blanks_after_sign') |
| 58 | integer('-' 1). | succeeds | fails | Sign must be unquoted (see 'blanks_after_sign') |
| 59 | integer(- /*.*/1). | succeeds | fails | Sign must be adjacent to number (see 'blanks_after_sign') |
| 60 | integer(-/*.*/1). | syntax err. | syntax error | Ok |
| 61 | integer('-'/*.*/1). | succeeds | fails | Sign must be unquoted (see 'blanks_after_sign') |
| 62 | atom(-/*.*/-). | succeeds | succeeds | Ok |
| 63 | op(0,fy,-). | succeeds | succeeds | Ok |
| 180 | /**/ integer(-1). | succeeds | succeeds | Ok |
| 64 | /**/ integer(- 1). | succeeds | syntax error | Sign must be adjacent to number (see 'blanks_after_sign') |
| 135 | writeq(-(1)). | - (1) | - 1 | Parentheses not required because of space separation (see 'blanks_after_sign') |
| 136 | op(0,fy,-),writeq(-(1)). | -(1) | -(1) | Ok |
| 182 | writeq(-(-1)). | - -1 | - -1 | Ok |
| 183 | writeq(-(1^2)). | - (1^2) | - 1^2 | Parentheses not required because of space separation (see 'blanks_after_sign') |
| 260 | writeq(-(a^2)). | - (a^2) | -a^2 | Parentheses not required because of space separation (see 'blanks_after_sign') |
| 139 | writeq(-((a,b))). | - (a,b) | - (a,b) | Ok |
| 218 | writeq(-(1*2)). | - (1*2) | - (1*2) | Ok |
| 140 | writeq(-a). | -a | -a | Ok |
| 184 | writeq(-(-)). | - (-) | - (-) | Ok |
| 185 | writeq(-[-]). | -[-] | -[-] | Ok |
| 188 | writeq(-p(c)). | -p(c) | -p(c) | Ok |
| 189 | writeq(-{}). | -{} | -{} | Ok |
| 190 | writeq(-{a}). | -{a} | -{a} | Ok |
| 191 | writeq(-(-a)). | - -a. | - -a | Ok |
| 192 | writeq(-(-(-a))). | - - -a. | - - -a | Ok |
| 216 | writeq(-(-(1))). | - - (1) | - - 1 | Parentheses not required because of space separation (see 'blanks_after_sign') |
| 215 | op(100,yfx,~). writeq(-(1~2~3)). | - (1~2~3) | succeeds - 1~2~3 | Parentheses not required because of space separation (see 'blanks_after_sign') |
| 248 | /**/ writeq(- (1~2)). | - (1~2) | - 1~2 | Parentheses not required because of space separation (see 'blanks_after_sign') |
| 249 | /**/ writeq(1~2). | 1~2 | 1~2 | Ok |
| 278 | op(9,xfy,.), writeq(-[1]). | -[1] | -[1] | Ok |
| 279 | op(9,xf,'$VAR'), writeq(- '$VAR'(0)). | -A | -A | Ok |
| 55 | op(1,yf,yf1). {-1 yf1}={yf1(X)}. | X = -1. | succeeds X = -1 | Ok |
| 65 | compound(+1). | succeeds ² | fails | Plus and minus are both signs (see 'plus_is_no_sign') |
| 66 | compound(+ 1). | succeeds ² | succeeds | Ok |
| 277 | writeq(+1^2). | +1^2 ² | 1^2 | Plus and minus are both signs (see 'plus_is_no_sign') |
| 257 | writeq([+{a},+[]]). | [+{a},+[]] ² | [+{a},+[]] | Ok |
| 67 | op(0,fy,+). compound(+1). | syntax err. | succeeds fails | Plus and minus are both signs (see 'plus_is_no_sign') |
| 68 | [(:-)|(:-)]=[:-|:-]. | succeeds | succeeds | Ok |
| 69 | X=[a|b,c]. | syntax err. | syntax error | Ok |
| 70 | op(1000,xfy,','). | p._e.(m., o.,',') | succeeds | ECLiPSe extension (see 'iso_restrictions') |
| 71 | op(1001,xfy,','). | p._e.(m., o.,',') or p._e.(c., o.,',') | succeeds | ECLiPSe extension (see 'iso_restrictions') |
| 72 | op(999,xfy,'|'). | p._e.(c., o.,'|') ² | succeeds | ECLiPSe extension (see 'iso_restrictions') |
| 73 | /**/ X=[a|b]. | X=[a|b]. | X = [a|b] | Ok |
| 285 | /**/ X=[(a|b)]. | syntax err. | X = [(a|b)] | ECLiPSe extension (see 'iso_restrictions') |
| 219 | /**/ [a|[]]=[a]. | succeeds | succeeds | Ok |
| 74 | /**/ X=[a|b|c]. | syntax err. | syntax error | Ok |
| 75 | var(a:-b). | syntax err. | fails | ECLiPSe extension (see 'limit_arg_precedence'). |
| 76 | :- = :- . | syntax err. | syntax error | Ok |
| 77 | - = - . | syntax err. | succeeds | ECLiPSe extension (see 'iso_restrictions') |
| 78 | * = * . | syntax err. | succeeds | ECLiPSe extension (see 'iso_restrictions') |
| 79 | current_op(200,fy,-). | succeeds | succeeds | Ok |
| 80 | current_op(200,fy,+). | succeeds ² | succeeds | Ok |
| 81 | {- - c}={-(-(c))}. | succeeds | succeeds | Ok |
| 82 | (- -) = -(-). | syntax err. | succeeds | ECLiPSe extension (see 'iso_restrictions') |
| 83 | (- - -) = -(-(-)). | syntax err. | succeeds | ECLiPSe extension (see 'iso_restrictions') |
| 84 | (- - - -) = -(-(-(-))). | syntax err. | succeeds | ECLiPSe extension (see 'iso_restrictions') |
| 85 | {:- :- c} = {:-(:-,c)}. | syntax err. | syntax error | Ok |
| 86 | {- = - 1}={(-(=)) - 1}. | syntax err. | fails | ECLiPSe extension (see 'iso_restrictions') |
| 87 | write_canonical((- = - 1)). | syntax err. | =(-,-(1)) | ECLiPSe extension (see 'iso_restrictions') |
| 88 | write_canonical((- = -1)). | syntax err. | =(-,-1) | ECLiPSe extension (see 'iso_restrictions') |
| 89 | write_canonical((-;)). | syntax err. | syntax error | Ok |
| 90 | write_canonical((-;-)). | syntax err. | ;(-,-) | ECLiPSe extension (see 'iso_restrictions') |
| 91 | write_canonical((:-;-)). | syntax err. | syntax error | Ok |
| 92 | [:- -c] = [(:- -c)]. | syntax err. | succeeds | ECLiPSe extension (see 'iso_restrictions') |
| 93 | writeq([a,b|,]). | syntax err. | syntax error | Ok |
| 94 | X ={,}. | syntax err. | syntax error | Ok |
| 95 | {1} = {}(1). | succeeds | succeeds | Ok |
| 96 | write_canonical({1}). | {}(1) | {}(1) | Ok |
| 97 | '[]'(1) = [ ](X). | X = 1 | X = 1 | Ok |
| 98 | X = [] (1). | syntax err. | syntax error | Ok |
| 99 | op(100,yfy,op). | do._e.(op._s., yfy) | error | Ok |
| 100 | '''' = '\''. | succeeds | syntax error | We do deliberately not allow the doubling of quotes to represent a quote. The backslash-escape must be used for that. The reason is that (a) consecutive atoms are possible in Prolog, and we prefer '+''Atom' to stand for +('Atom') rather than for '+\'Atom'; and (b) we use "string1""string2" for "string1string2", i.e. adjacent strings are implicitly concatenated (see 'doubled_quote_is_quote') |
| 101 | a = '\141\'. | succeeds | syntax error | Incompatibility traditional/ISO (see 'iso_escapes') |
| 102 | a = '\141'. | syntax err. | succeeds | Incompatibility traditional/ISO (see 'iso_escapes') |
| 103 | X = '\141\141'. | X = a141 | X = aa | Incompatibility traditional/ISO (see 'iso_escapes') |
| 104 | X = '\9'. | syntax err. | syntax error | Ok |
| 105 | X = '\N'. | syntax err. | syntax error | Ok |
| 106 | X = '\\' . | syntax err. | X = \ | ECLiPSe extension (see 'iso_restrictions') |
| 107 | X = '\77777777777\'. | syntax/repr. err. | syntax error | Ok |
| 108 | a = '\x61\'. | succeeds | succeeds | Ok |
| 109 | atom_codes('\xG\',Cs). | syntax err./waits | syntax error | Ok |
| 110 | atom_codes('\xG1\',Cs). | syntax err./waits | syntax error | Ok |
| 111 | atom(`). | syntax err. | syntax error | Ok |
| 112 | atom(`+). | syntax err. | syntax error | Ok |
| 113 | X = `a`. | syntax err./succ. | X = [97] | Ok |
| 114 | integer(0'\'). | succeeds | succeeds | Ok |
| 115 | integer(0'''). | succeeds | syntax error | We do deliberately not allow the doubling of quotes to represent a quote. The backslash-escape must be used for that. The reason is that (a) consecutive atoms are possible in Prolog, and we prefer '+''Atom' to stand for +('Atom') rather than for '+\'Atom'; and (b) we use "string1""string2" for "string1string2", i.e. adjacent strings are implicitly concatenated (see 'doubled_quote_is_quote') |
| 116 | 0''' = 0'\'. | succeeds | syntax error | We do deliberately not allow the doubling of quotes to represent a quote. The backslash-escape must be used for that. The reason is that (a) consecutive atoms are possible in Prolog, and we prefer '+''Atom' to stand for +('Atom') rather than for '+\'Atom'; and (b) we use "string1""string2" for "string1string2", i.e. adjacent strings are implicitly concatenated (see 'doubled_quote_is_quote') |
| 117 | integer(0''). | syntax err. | succeeds | Backward compatibility feature (see 'iso_escapes') |
| 195 | op(100,xf,''). | succeeds | succeeds | Ok |
| 205 | /**/ (0 '') = ''(X). | X = 0. | X = 0 | Ok |
| 196 | /**/ writeq(0 ''). | 0 '' or 0'' | 0 '' | Ok |
| 197 | /**/ writeq(0''). | 0 '' or 0'' | 39 | Backward compatibility feature (see 'iso_escapes') |
| 118 | op(100,xfx,''). | succeeds | succeeds | Ok |
| 119 | /**/ functor(0 ''1, F, A). | F = (''), A = 2. | F = '', A = 2 | Ok |
| 120 | /**/ functor(0''1, F, A). | F = (''), A = 2. | syntax error | Backward compatibility feature (see 'iso_escapes') |
| 206 | op(100,xf,f). writeq(0'f'). | syntax err. | succeeds syntax error | Ok |
| 207 | /**/ writeq(0'f'f'). | e.g. 102 f | 102 f | Ok |
| 209 | /**/ writeq(0'ff). | 102 f | 102 f | Ok |
| 256 | /**/ writeq(0f). | 0 f | 0 f | Ok |
| 208 | op(100,xf,'f '). writeq(0 'f '). | 0 'f ' | succeeds 0 'f ' | Ok |
| 121 | X = 2'1. | syntax err. | X = 1 | Different radix notation (see 'iso_base_prefix') |
| 122 | op(100,xfx,'1'). functor(2'1'y, F, A). | F = ('1'), A = 2. | succeeds syntax error | Different radix notation (see 'iso_base_prefix') |
| 262 | /**/ functor(2 '1'y, F, A). | F = ('1'), A = 2. | F = '1', A = 2 | Ok |
| 123 | X =0'\x41\ . | X = 65 | X = 65 | Ok |
| 124 | X =0'\x41\. | X = 65 | X = 65 | Ok |
| 125 | X =0'\x1\. | X = 1 | X = 1 | Ok |
| 127 | X is 16'mod'2. | X = 0 | X = 0 | Ok |
| 128 | X is 37'mod'2. | X = 1 | X = 1 | Ok |
| 129 | X is 0'mod'1. | syntax err. | syntax error | Ok |
| 130 | X is 1'+'1. | X = 2 | X = 2 | Ok |
| 212 | X is 1'\ +'1. | X = 2. | X = 2 | Ok |
| 213 | X is 0'\ +'1. | X = 1. | syntax error | Backward compatibility feature (see 'iso_escapes') |
| 259 | X = 0'\ +'/*'. %*/1. | X = 0+1 | X = 92+'/*' | Backward compatibility feature (see 'iso_escapes') |
| 214 | X is 0'\ | waits | X = 92 | Backward compatibility feature (see 'iso_escapes') |
| 126 | X = 0'\ .\ | waits | syntax error | Backward compatibility feature (see 'iso_escapes') |
| 131 | op(100,fx,' op'). | succeeds | succeeds | Ok |
| 132 | /**/ writeq(' op' '1'). | ' op' '1' | ' op''1' | Space not needed (see 'doubled_quote_is_quote') |
| 133 | /**/ writeq(' op'[]). | ' op'[] | ' op'[] | Ok |
| 134 | op(1,xf,xf1). writeq({- =xf1}). | syntax err. | succeeds {(-)=(xf1)} | ECLiPSe extension (see 'iso_restrictions') |
| 137 | writeq(- (a*b)). | - (a*b) | - (a*b) | Ok |
| 138 | writeq(\ (a*b)). | \ (a*b) | \ (a*b) | Ok |
| 141 | current_op(P,xfy,.). | fails | fails | Ok |
| 142 | op(100,xfy,.). | succeeds | succeeds | Ok |
| 143 | /**/ writeq(1 .2). | [1|2] | [1|2] | Ok |
| 144 | /**/ writeq([1]). | [1] | [1] | Ok |
| 283 | /**/ writeq(-[1]). | -[1] | -[1] | Ok |
| 221 | /**/ X = 1.e. | X = [1|e]. | X = [1|e] | Ok |
| 258 | /**/ writeq(ok).% 1 = X. | ok X = 1 | ok X = 1 | Ok |
| 145 | write_canonical('$VAR'(0)). | '$VAR'(0) | '$VAR'(0) | Ok |
| 146 | write_term('$VAR'(0),[]). | $VAR(0) | $VAR(0) | Ok |
| 244 | writeq('$VAR'(0)). | A | A | Ok |
| 245 | writeq('$VAR'(-1)). | '$VAR'(-1) | '$VAR'(-1) | Ok |
| 246 | writeq('$VAR'(-2)). | '$VAR'(-2) | '$VAR'(-2) | Ok |
| 247 | writeq('$VAR'(x)). | '$VAR'(x) | '$VAR'(x) | Ok |
| 289 | writeq('$VAR'('A')). | '$VAR'('A') | A | ECLiPSe extension (see 'iso_restrictions') |
| 147 | op(9,fy,fy),op(9,yf,yf). write_canonical(fy 1 yf). | fy(yf(1)) | succeeds fy(yf(1)) | Ok |
| 148 | /**/ write_canonical(fy yf). | syntax err. | fy(yf) | ECLiPSe extension (see 'iso_restrictions') |
| 149 | /**/ writeq(fy(yf(1))). | fy 1 yf | fy 1 yf | Ok |
| 150 | /**/ writeq(yf(fy(1))). | (fy 1)yf | (fy 1)yf | Ok |
| 151 | op(9,fy,fy),op(9,yfx,yfx). write_canonical(fy 1 yfx 2). | fy(yfx(1,2)) | succeeds fy(yfx(1,2)) | Ok |
| 152 | /**/ writeq(fy(yfx(1,2))). | fy 1 yfx 2 | fy 1 yfx 2 | Ok |
| 153 | /**/ writeq(yfx(fy(1),2)). | (fy 1)yfx 2 | (fy 1)yfx 2 | Ok |
| 154 | op(9,yf,yf),op(9,xfy,xfy). write_canonical(1 xfy 2 yf). | xfy(1,yf(2)) | succeeds xfy(1,yf(2)) | Ok |
| 155 | /**/ writeq(xfy(1,yf(2))). | 1 xfy 2 yf | 1 xfy 2 yf | Ok |
| 156 | /**/ writeq(yf(xfy(1,2))). | (1 xfy 2)yf | (1 xfy 2)yf | Ok |
| 157 | op(0,xfy,:-). current_op(P,xfx,:-). | fails | succeeds fails | Ok |
| 158 | op(0,xfy,','). | p._e.(m., o.,',') | succeeds | ECLiPSe extension (see 'iso_restrictions') |
| 159 | op(9,fy,f),op(9,yf,f). write_canonical(f f 0). | f(f(0)) | succeeds f(f(0)) | Ok |
| 201 | /**/ writeq(f(f(0))). | e.g. f f 0 | f f 0 | Ok |
| 202 | /**/ write_canonical(f 0 f). | f(f(0)) | f(f(0)) | Ok |
| 160 | /**/ write_canonical(0 f f). | f(f(0)) | f(f(0)) | Ok |
| 161 | /**/ write_canonical(f f). | syntax err. | f(f) | ECLiPSe extension (see 'iso_restrictions') |
| 162 | op(9,fy,p),op(9,yfx,p). write_canonical(1 p p p 2). | syntax err. | succeeds p(p(1,p),2) | ECLiPSe extension (see 'iso_restrictions') |
| 163 | op(9,fy,p),op(9,xfy,p). write_canonical(1 p p p 2). | p(1, p(p(2))) | succeeds p(1,p(p(2))) | Ok |
| 164 | op(7,fy,p),op(9,yfx,p). write_canonical(1 p p p 2). | p(1, p(p(2))) | succeeds p(1,p(p(2))) | Ok |
| 165 | atom('.''-''.'). | succeeds | fails | We do deliberately not allow the doubling of quotes to represent a quote. The backslash-escape must be used for that. The reason is that (a) consecutive atoms are possible in Prolog, and we prefer '+''Atom' to stand for +('Atom') rather than for '+\'Atom'; and (b) we use "string1""string2" for "string1string2", i.e. adjacent strings are implicitly concatenated (see 'doubled_quote_is_quote') |
| 166 | op(0,xfy,'|'). | succeeds | succeeds | Ok |
| 167 | /**/ writeq((a|b)). | syntax err. | syntax error | Ok |
| 168 | op(0,xfy,.),op(9,yf,.). | succeeds | succeeds | Ok |
| 169 | /**/ writeq(.(.)). | ('.')'.' | ('.')'.' | Ok |
| 194 | op(0,xfy,.),writeq((.)+(.)). | '.'+'.' | '.'+'.' | Ok |
| 170 | set_prolog_flag( double_quotes,chars). | succeeds | error | ISO predicate/function |
| 171 | /**/ writeq("a"). | [a] | "a" | String data type in ECLiPSe (change via chtab(0'",list_quote)) |
| 229 | /**/ writeq("\z"). | syntax err. | syntax error | Ok |
| 172 | X is 10.0** -323, writeq(X). | e.g. 1.0e-323. | syntax error | ISO predefined operator |
| 173 | 1.0e-323=:=10.0** -323. | succeeds | syntax error | ISO predefined operator |
| 174 | -1 = -0x1. | succeeds | syntax error | Different radix notation (see 'iso_base_prefix') |
| 175 | T = t(0b1,0o1,0x1). | T = t(1,1,1) | syntax error | Different radix notation (see 'iso_base_prefix') |
| 176 | X is 0b1mod 2. | X = 1 | syntax error | Different radix notation (see 'iso_base_prefix') |
| 217 | op(1105,xfy,'|'). | succeeds | succeeds | Ok |
| 181 | /**/ writeq((a-->b,c|d)). | a-->b,c|d² | a-->b,c|d | Ok |
| 186 | X/* /*/=7. | X = 7 | X = 7 | Ok |
| 187 | X/*/*/=7. | X = 7 | X = 7 | Ok |
| 198 | atom($-). | OK | succeeds | Ok |
| 199 | atom(-$). | succeeds | succeeds | Ok |
| 200 | op(900, fy, [$]). write_canonical($a+b). | $(+(a,b)) | succeeds $(+(a,b)) | Ok |
| 224 | \ . | ex._e.(..) | error | Ok |
| 225 | char_code(C,0), writeq(C). | '\0\' or rep._e. | '\000' C = '\000' | Incompatibility traditional/ISO (see 'iso_escapes') |
| 250 | writeq('\0\'). | rep._e. or '\0\' | syntax error | Incompatibility traditional/ISO (see 'iso_escapes') |
| 226 | write_canonical(_+_). | e.g. +(_1,_2) | +(_150695,_150696) | Ok |
| 227 | write_canonical(B+B). | e.g. +(_1, _1) | +(_151240,_151240) B = _151240 | Ok |
| 228 | writeq(0'\z). | syntax err. | syntax error | Ok |
| 230 | char_code('\^',X). | syntax err. | syntax error | Ok |
| 231 | writeq(0'\c). | syntax err. | syntax error | Ok |
| 232 | writeq(0'\ ). | syntax err. | 92 | Backward compatibility feature (see 'iso_escapes') |
| 233 | writeq(nop (1)). | syntax err. | syntax error | Ok |
| 234 | op(400,fx,f). writeq(f/*.*/(1,2)). | f (1,2) | succeeds f (1,2) | Ok |
| 235 | /**/ writeq(1 = f). | syntax err. | 1=(f) | ECLiPSe extension (see 'iso_restrictions') |
| 236 | write_canonical(a- - -b). | -(a,-(-(b))) | -(a,-(-(b))) | Ok |
| 237 | op(699,xf,>). | p._e.(c.,op,>) | succeeds | ECLiPSe extension (see 'iso_restrictions') |
| 238 | /**/ writeq(>(>(a),b)). | >(a)>b | (a>)>b | ECLiPSe extension (see 'iso_restrictions') |
| 239 | /**/ write_canonical(a> >b). | syntax err. | syntax error | Ok |
| 242 | /**/ write_canonical(a> =b). | syntax err. | syntax error | Ok |
| 243 | /**/ write_canonical((a>,b)). | syntax err. | ','(>(a),b) | ECLiPSe extension (see 'iso_restrictions') |
| 240 | /**/ write_canonical(a>). | syntax err. | >(a) | ECLiPSe extension (see 'iso_restrictions') |
| 251 | op(9,yfx,[bop,bo,b,op,xor]). writeq(0bop 2). | 0 bop 2 | succeeds 0 bop 2 | Ok |
| 263 | /**/ writeq(0 bop 2). | 0 bop 2 | 0 bop 2 | Ok |
| 252 | /**/ writeq(0bo 2). | 0 bo 2 | 0 bo 2 | Ok |
| 253 | /**/ writeq(0b 2). | 0 b 2 | 0 b 2 | Ok |
| 254 | /**/ writeq(0op 2). | 0 op 2 | 0 op 2 | Ok |
| 255 | /**/ writeq(0xor 2). | 0 xor 2 | 0 xor 2 | Ok |
| 264 | writeq('^`'). | '^`' | '^`' | Ok |
| 265 | op(9,yf,[b2,o8]). | succeeds | succeeds | Ok |
| 266 | /**/ writeq(0b2). | 0 b2 | 0 b2 | Ok |
| 267 | /**/ writeq(0o8). | 0 o8 | 0 o8 | Ok |
| 268 | op(500, xfy, {}). | p._e.(c.,o.,{}) ² | succeeds | ECLiPSe extension (see 'iso_restrictions') |
| 269 | writeq('\b\r\f\t\n'). | '\b\r\f\t\n' | '\b\r\f\t\n' | Ok |
| 270 | get_char(C). %a | C = ' ' | C = " " | Ok |
| 271 | get_char(C).%a | C = '%' | C = "%" error | Ok |
| 272 | writeq(0B1). | syntax err. | syntax error | Ok |
| 274 | op(20,fx,--),writeq(--(a)). | --a | --a | Ok |
| 275 | /**/ op(0,fy,--),writeq(--(a)). | --(a) | --(a) | Ok |
| 276 | writeq(0xamod 2). | 10 mod 2 | syntax error | Different radix notation (see 'iso_base_prefix') |
| 280 | writeq(00'+'1). | 0+1 | 0+1 | Ok |
| 281 | writeq(00'a). | syntax err. | syntax error | Ok |
| 284 | writeq('\^J'). | syntax err. | syntax error | Ok |
| 290 | Finis (). | syntax err. | syntax error | Ok |