Zhongxing Xu wrote: > Hi Sebastian, > > I know where the confusion comes from: we are from two different > points of view. You are from pure programming language and compiler > point of view. I am from a mathematical interpretation of programs > point of view. > > [snip] > Remember we are doing static analysis, and we are going to use some > mathematics to analyze program. So what objects are we processing in > mathematics? They are the value in the memory, i.e. the value on the > rightmost of the tuple. Literally they are raw bits. But we made them > more abstract into RVal. Furthermore, we noticed that the most > essential distinction among these varous abstract values (RVals) is > that some of them are address value, some of them are not. So here > comes LVal and NonLVal. We use LVal to represent an abstract address > value, and NonLVal to represent an numerical value. > > So, LVal and NonLVal are used to represent the abstract values in the > mathmatical sense, that has nothing to do with expressions in the > programming language sense. We need these mathematical values in our > symbolic analysis of the program. They are conceptly values stored in > our simulated computer memory. They are in a different world from > C/C++ expressions. > > An expression's lvalue evaluates (through our interpretation) into a LVal. > An expression's rvalue evaluates (through our interpretation) into a > NonLVal (e.g. 2*x+3), or a LVal (e.g. &x). >
So how about calling them Address and NonAddress? This would get rid of the dangerous similarity between LVal and LValue. Sebastian _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
