16
16
).
17
17
18
18
-define (op2 (T1 , T2 ),
19
- T1 == $< , T2 == $> ;
20
19
T1 == $+ , T2 == $+ ;
21
20
T1 == $- , T2 == $- ;
22
21
T1 == $* , T2 == $* ;
23
- T1 == $/ , T2 == $/ ;
24
22
T1 == $: , T2 == $: ;
25
- T1 == $- , T2 == $> ;
26
- T1 == $. , T2 == $.
23
+ T1 == $- , T2 == $>
27
24
).
28
25
29
26
-define (op1 (T ),
30
- T == $* ;
31
- T == $/ ;
32
27
T == $= ;
33
28
T == $|
34
29
).
46
41
-define (unary_op3 (T1 , T2 , T3 ),
47
42
T1 == $~ , T2 == $~ , T3 == $~ ).
48
43
49
- -define (pin_op3 (T1 , T2 , T3 ),
50
- T1 == $^ , T2 == $^ , T3 == $^
51
- ).
44
+ -define (exp_op3 (T1 , T2 , T3 ),
45
+ T1 == $^ , T2 == $^ , T3 == $^ ).
46
+
47
+ -define (two_op (T1 , T2 ),
48
+ T1 == $+ , T2 == $+ ;
49
+ T1 == $- , T2 == $- ;
50
+ T1 == $* , T2 == $* ).
51
+
52
+ -define (than_op (T1 , T2 ),
53
+ T1 == $< , T2 == $> ).
52
54
53
55
-define (mult_op (T ),
54
56
T == $* orelse T == $/ ).
94
96
-define (range_op (T1 , T2 ),
95
97
T1 == $. , T2 == $. ).
96
98
99
+ -define (default_op (T1 , T2 ),
100
+ T1 == $/ , T2 == $/ ).
101
+
97
102
tokenize (String , Line , Opts ) ->
98
103
File = case lists :keyfind (file , 1 , Opts ) of
99
104
{ file , V1 } -> V1 ;
@@ -242,13 +247,13 @@ tokenize([$.,T1,T2|Rest], Line, Scope, Tokens) when ?container(T1, T2) ->
242
247
% ## Three Token Operators
243
248
tokenize ([$. ,T1 ,T2 ,T3 |Rest ], Line , Scope , Tokens ) when
244
249
? unary_op3 (T1 , T2 , T3 ); ? comp_op3 (T1 , T2 , T3 ); ? and_op3 (T1 , T2 , T3 ); ? or_op3 (T1 , T2 , T3 );
245
- ? arrow_op3 (T1 , T2 , T3 ); ? pin_op3 (T1 , T2 , T3 ) ->
250
+ ? arrow_op3 (T1 , T2 , T3 ); ? exp_op3 (T1 , T2 , T3 ) ->
246
251
handle_call_identifier (Rest , Line , list_to_atom ([T1 , T2 , T3 ]), Scope , Tokens );
247
252
248
253
% ## Two Token Operators
249
254
tokenize ([$. ,T1 ,T2 |Rest ], Line , Scope , Tokens ) when
250
255
? comp_op2 (T1 , T2 ); ? and_op (T1 , T2 ); ? or_op (T1 , T2 ); ? arrow_op (T1 , T2 );
251
- ? range_op (T1 , T2 ) ->
256
+ ? range_op (T1 , T2 ); ? than_op ( T1 , T2 ); ? default_op ( T1 , T2 ); ? two_op ( T1 , T2 ) ->
252
257
handle_call_identifier (Rest , Line , list_to_atom ([T1 , T2 ]), Scope , Tokens );
253
258
254
259
tokenize ([$. ,T1 ,T2 |Rest ], Line , Scope , Tokens ) when ? op2 (T1 , T2 ) ->
@@ -326,13 +331,13 @@ tokenize([$:,T1,T2|Rest], Line, Scope, Tokens) when ?container(T1, T2) ->
326
331
% ## Three Token Operators
327
332
tokenize ([$: ,T1 ,T2 ,T3 |Rest ], Line , Scope , Tokens ) when
328
333
? unary_op3 (T1 , T2 , T3 ); ? comp_op3 (T1 , T2 , T3 ); ? and_op3 (T1 , T2 , T3 ); ? or_op3 (T1 , T2 , T3 );
329
- ? arrow_op3 (T1 , T2 , T3 ); ? pin_op3 (T1 , T2 , T3 ) ->
334
+ ? arrow_op3 (T1 , T2 , T3 ); ? exp_op3 (T1 , T2 , T3 ) ->
330
335
tokenize (Rest , Line , Scope , [{ atom , Line , list_to_atom ([T1 ,T2 ,T3 ]) }|Tokens ]);
331
336
332
337
% ## Two Token Operators
333
338
tokenize ([$: ,T1 ,T2 |Rest ], Line , Scope , Tokens ) when
334
339
? comp_op2 (T1 , T2 ); ? and_op (T1 , T2 ); ? or_op (T1 , T2 ); ? arrow_op (T1 , T2 );
335
- ? range_op (T1 , T2 ) ->
340
+ ? range_op (T1 , T2 ); ? than_op ( T1 , T2 ); ? default_op ( T1 , T2 ); ? two_op ( T1 , T2 ) ->
336
341
tokenize (Rest , Line , Scope , [{ atom , Line , list_to_atom ([T1 ,T2 ]) }|Tokens ]);
337
342
338
343
tokenize ([$: ,T1 ,T2 |Rest ], Line , Scope , Tokens ) when ? op2 (T1 , T2 ) ->
@@ -388,8 +393,8 @@ tokenize([T1,T2,T3|Rest], Line, Scope, Tokens) when ?or_op3(T1, T2, T3) ->
388
393
tokenize ([T1 ,T2 ,T3 |Rest ], Line , Scope , Tokens ) when ? arrow_op3 (T1 , T2 , T3 ) ->
389
394
handle_op (Rest , Line , arrow_op , list_to_atom ([T1 ,T2 ,T3 ]), Scope , Tokens );
390
395
391
- tokenize ([T1 ,T2 ,T3 |Rest ], Line , Scope , Tokens ) when ? pin_op3 (T1 , T2 , T3 ) ->
392
- handle_op (Rest , Line , pin_op , list_to_atom ([T1 ,T2 ,T3 ]), Scope , Tokens );
396
+ tokenize ([T1 ,T2 ,T3 |Rest ], Line , Scope , Tokens ) when ? exp_op3 (T1 , T2 , T3 ) ->
397
+ handle_op (Rest , Line , exp_op , list_to_atom ([T1 ,T2 ,T3 ]), Scope , Tokens );
393
398
394
399
% ## Containers + punctuation tokens
395
400
tokenize ([T ,T |Rest ], Line , Scope , Tokens ) when T == $< ; T == $> ->
@@ -402,6 +407,12 @@ tokenize([T|Rest], Line, Scope, Tokens) when T == $(;
402
407
handle_terminator (Rest , Line , Scope , Token , Tokens );
403
408
404
409
% ## Two Token Operators
410
+ tokenize ([T1 ,T2 |Rest ], Line , Scope , Tokens ) when ? two_op (T1 , T2 ) ->
411
+ handle_op (Rest , Line , two_op , list_to_atom ([T1 , T2 ]), Scope , Tokens );
412
+
413
+ tokenize ([T1 ,T2 |Rest ], Line , Scope , Tokens ) when ? than_op (T1 , T2 ) ->
414
+ handle_op (Rest , Line , than_op , list_to_atom ([T1 , T2 ]), Scope , Tokens );
415
+
405
416
tokenize ([T1 ,T2 |Rest ], Line , Scope , Tokens ) when ? range_op (T1 , T2 ) ->
406
417
handle_op (Rest , Line , range_op , list_to_atom ([T1 , T2 ]), Scope , Tokens );
407
418
@@ -417,6 +428,9 @@ tokenize([T1,T2|Rest], Line, Scope, Tokens) when ?and_op(T1, T2) ->
417
428
tokenize ([T1 ,T2 |Rest ], Line , Scope , Tokens ) when ? or_op (T1 , T2 ) ->
418
429
handle_op (Rest , Line , or_op , list_to_atom ([T1 , T2 ]), Scope , Tokens );
419
430
431
+ tokenize ([T1 ,T2 |Rest ], Line , Scope , Tokens ) when ? default_op (T1 , T2 ) ->
432
+ handle_op (Rest , Line , default_op , list_to_atom ([T1 , T2 ]), Scope , Tokens );
433
+
420
434
tokenize ([T1 ,T2 |Rest ], Line , Scope , Tokens ) when ? op2 (T1 , T2 ) ->
421
435
handle_op (Rest , Line , list_to_atom ([T1 , T2 ]), Scope , Tokens );
422
436
0 commit comments