The assign pattern clause comprises of an assign synonym, followed by 2 arguments.
The following are allowed as the first argument:
_The following are allowed as the second argument:
_"x*y")_"x*y"_)Assuming your SIMPLE source code contains only one procedure with only one assignment (stmt# 1):
1. x = v + x * y + z * t
The evaluation of the following queries would result in:
assign a;
| PQL query | Returns | Explanation |
|---|---|---|
Select a pattern a ( _ , "v + x * y + z * t") | 1 | Exact pattern match |
Select a pattern a ( _ , "v") | none | stmt #1 contains other expression terms other than v |
Select a pattern a ( _ , _"v"_) | 1 | stmt #1 contains v as part of the expression on the RHS |
Select a pattern a ( _ , _"x*y"_) | 1 | stmt #1 contains x*y as a term on the RHS |
Select a pattern a ( _ , _"v+x"_) | none | stmt #1 does not contain v+x as a sub-expression on the RHS |
Select a pattern a ( _ , _"v+x*y"_) | 1 | stmt #1 contains v+x*y as a sub-expression on the RHS |
Select a pattern a ( _ , _"y+z*t"_) | none | stmt #1 does not contain y+z*t as a sub-expression on the RHS |
Select a pattern a ( _ , _"x * y + z * t"_) | none | stmt #1 does not contain x*y+z*t as a sub-expression on the RHS |
Select a pattern a ( _ , _"v + x * y + z * t"_) | 1 | stmt #1 contains v+x*y+z*t as a sub-expression on the RHS |
All sub-expressions in pattern matching an expression are sub-trees in the AST.
As such, all subexpressions for stmt# 1 are:
x, y, z, t, vv, x * y, z * t,v + x * y,v + x * y + z * tAnother way to identify a sub-expression is to use brackets, and every bracket is a sub-expression:
1. x = (((v) + ((x) * (y))) + ((z) * (t)))
Do not forget that expression in SIMPLE are left-associative.
Do refer to example queries with one pattern clause.