The dot lexeme is now properly converted to a binary selection operator
[fridhskrift.git] / lexer / group.cpp
bloba2217c3ca72331408ac76a7528d1429c1f6bd368
1 #include <fridh/lexer.hpp>
3 namespace fridh
5 bool get_lexeme_group(lexeme_type::type input, lexeme_group::type & output)
7 using namespace lexeme_type;
9 switch(input)
11 case name:
13 case boolean:
14 case signed_integer:
15 case unsigned_integer:
16 case floating_point_value:
17 case string:
19 case nil:
21 output = lexeme_group::argument;
22 return true;
24 case addition:
25 case subtraction:
26 case multiplication:
27 case division:
28 case modulo:
29 case exponentiation:
31 case dot:
33 case assignment:
34 case addition_assignment:
35 case subtraction_assignment:
36 case multiplication_assignment:
37 case division_assignment:
38 case modulo_assignment:
39 case exponentiation_assignment:
41 case less_than:
42 case less_than_or_equal:
43 case greater_than:
44 case greater_than_or_equal:
45 case not_equal:
46 case equal:
48 case logical_and:
49 case logical_or:
51 case shift_left:
52 case shift_right:
54 case binary_and:
55 case binary_or:
56 case binary_xor:
58 output = lexeme_group::binary_operator;
59 return true;
61 case logical_not:
63 case binary_not:
65 output = lexeme_group::unary_operator;
66 return true;
68 case increment:
69 case decrement:
71 output = lexeme_group::post_fix_operator;
72 return true;
74 default:
75 return false;