+ symbol=expression.symbol,
+ symbol_list_index=symbol_list_index,
+ )
+
+CInfixDeclaration = collections.namedtuple(
+ 'CInfixDeclaration',
+ [
+ 'name',
+ 'in_type',
+ 'out_type',
+ 'operator',
+ ],
+)
+
+FUR_INFIX_OPERATOR_TO_C_FUNCTION = {
+ '++': 'concatenate',
+}
+
+FUR_INFIX_OPERATOR_TO_C_INFIX_OPERATOR = {
+ '+': CInfixDeclaration(name='add', in_type='integer', out_type='integer', operator='+'),
+ '-': CInfixDeclaration(name='subtract', in_type='integer', out_type='integer', operator='-'),
+ '*': CInfixDeclaration(name='multiply', in_type='integer', out_type='integer', operator='*'),
+ '//': CInfixDeclaration(name='integerDivide', in_type='integer', out_type='integer', operator='/'),
+ '%': CInfixDeclaration(name='modularDivide', in_type='integer', out_type='integer', operator='%'),
+ 'and': CInfixDeclaration(name='and', in_type='boolean', out_type='boolean', operator='&&'),
+ 'or': CInfixDeclaration(name='or', in_type='boolean', out_type='boolean', operator='||'),
+ '==': CInfixDeclaration(name='equals', in_type='integer', out_type='boolean', operator='=='),
+ '!=': CInfixDeclaration(name='notEquals', in_type='integer', out_type='boolean', operator='!='),
+ '<=': CInfixDeclaration(name='lessThanOrEqual', in_type='integer', out_type='boolean', operator='<='),
+ '>=': CInfixDeclaration(name='greaterThanOrEqual', in_type='integer', out_type='boolean', operator='>='),
+ '<': CInfixDeclaration(name='lessThan', in_type='integer', out_type='boolean', operator='<'),
+ '>': CInfixDeclaration(name='greaterThan', in_type='integer', out_type='boolean', operator='>'),
+}
+
+def transform_infix_operator_without_c_equivalent(accumulators, expression):
+ return CFunctionCallForFurInfixOperator(
+ metadata=expression.metadata,
+ name='concatenate',