By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
454,433 Members | 1,328 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 454,433 IT Pros & Developers. It's quick & easy.

operator overloading

P: 1
I need to write overloaded operators in C++ by reading their definitions from the input file.how can i write this code.
any idea?
The problem definition is this:

A definition starts with “> defineop”.
op is the name of the operator, which is one of the special characters { ~, !, @, #, $, %, ^, &, _ }
p1 and p2 are distinct lower case characters of English alphabet {a, b, ... , z}
expressionsare C like expressions made up of {p1, p2, (, ), +, ,*, /, defined operators, integers}
Results of 0 op p1 and p1 op 0 are given as expressions.
Precedence of operator is given as “prec = value1”. value1 is a number between 0 and 100. You
will use this precedence value while evaluating the expressions.
By default, * and / has precedence value of 20, + and – has precedence value of 10. Operators with greater precedences are evaluated earlier.
Associativity(*) of the operator is given as “assoc = value2”. value2 is either right or left. If two operators have same precedences, they will have same associativities.
Associativities of +, ,* and / are all left.
Adefinition ends with the keyword end.


> defineop $ ; a $ b = ( a + b ) * a ^ b ; 0 $ a = a + 1 ; a $ 0 = 0 ; prec = 7 ; assoc = left ; end
> defineop ^ ; a ^ b = a ^ ( b – 1 ) * a ; 0 ^ a = 0 ; a ^ 0 = 1 ; prec = 32 ; assoc = right ; end

// be careful! $ used the operator which is defined after its definition.
// For 0 op 0, use 0 op p1.

A unary operator is defined as follows:
> defineop op ; op p1 = expression1 ; op 0 = expression2 ; prec = value ; end
For example,
> defineop ~ ; ~ a = 0 – a ; ~ 0 = 0 ; prec = 45 ; end

After defining operators, some expressions made up of {(, ), +, ,
*, /, defined operators, integers}
are given. You should print the value of these expressions. Each expression is given as:
> evaluate ; expression ; end

for example input file is:

> defineop $ ; a $ b = ( a + b ) * a ^ b ; 0 $ a = a + 1 ; a $ 0 = 0 ; prec = 7 ; assoc = left ; end
> defineop ^ ; a ^ b = a ^ ( b - 1 ) * a ; 0 ^ a = 0 ; a ^ 0 = 1 ; prec = 32 ; assoc = right ; end
> defineop ~ ; ~ a = 0 - a ; ~ 0 = 0 ; prec = 45 ; end
> evaluate ; 3 * ( 2 + 2 ^ 3 ) ; end
> evaluate ; ~ 2 + 3 $ 2 ; end

output is printed as:
30
3
Nov 3 '05 #1
Share this question for a faster answer!
Share on Google+

Post your reply

Sign in to post your reply or Sign up for a free account.