RewriteVisitor class for source-to-source transformation
"francis maes" <[email protected]> Sat, 10 Jan 2009 20:17:27 +0100
| Newsgroups | gmane.comp.documentation.synopsis |
|---|---|
| Message-ID | <[email protected]> |
------=_Part_146181_33010286.1231615047814
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
>> * New baseclass "RewriteVisitor" whose default implementation clones a
>> PTree (file RewriteVisitor.h). I use this base class for all the
>> visitors that perform source-to-source transformation.
>>
>
> Can you describe in what way the existing Visitor base class isn't generic
> enough for your needs ?
>
The RewriteVisitor inherits from the existing Visitor base class. Its
implementation simply clone the visited PTree, without loosing the
type of the PTree::Nodes:
PTree* clone(PTree* tree) {return RewriteVisitor().rewrite(tree);}
In order to perform source-to-source transformation, I inherit from
RewriteVisitor and override only the visit functions corresponding to
the nodes that have to be rewritten differently.
------=_Part_146181_33010286.1231615047814
Content-Type: text/plain; name=RewriteVisitor.h
Content-Transfer-Encoding: base64
X-Attachment-Id: f_fpsno38z0
Content-Disposition: attachment; filename=RewriteVisitor.h
LyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS4tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0uCnwgRmlsZW5hbWU6IFJld3JpdGVWaXNpdG9yLmggICAgICAg
ICAgICAgICB8IFJld3JpdGUgVmlzaXRvciBCYXNlQ2xhc3MgICAgICAgfAp8IEF1dGhvciAgOiBG
cmFuY2lzIE1hZXMgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwKfCBTdGFydGVkIDogMDUvMDEvMjAwOSAxNzo0MCAgICAgICAgICAgICAgIHwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CmAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgojaWZuZGVmIENSQUxHT19S
RVdSSVRFX1ZJU0lUT1JfSF8KIyBkZWZpbmUgQ1JBTEdPX1JFV1JJVEVfVklTSVRPUl9IXwoKIyBp
bmNsdWRlICJjb21tb24uaCIKCmNsYXNzIFJld3JpdGVWaXNpdG9yIDogcHVibGljIFBUcmVlOjpW
aXNpdG9yCnsKcHVibGljOgogIFBUcmVlOjpOb2RlKiByZXdyaXRlKFBUcmVlOjpOb2RlKiBub2Rl
KQogIHsKICAgIGlmIChub2RlKQogICAgewogICAgICBub2RlLT5hY2NlcHQodGhpcyk7CiAgICAg
IHJldHVybiByZXN1bHQ7CiAgICB9CiAgICByZXR1cm4gTlVMTDsKICB9CiAgCiAgdmlydHVhbCB2
b2lkIHZpc2l0KFBUcmVlOjpBdG9tKiBub2RlKQogICAge3NldFJlc3VsdChub2RlKTt9CiAgCiNk
ZWZpbmUgZGVmYXVsdExpc3REZWZpbml0aW9uKFQpIFwKICB2aXJ0dWFsIHZvaWQgdmlzaXQoUFRy
ZWU6OiBUICogbm9kZSkge3Zpc2l0TGlzdChub2RlKTt9CiAgCiAgLy8gZGVmYXVsdAogIGRlZmF1
bHRMaXN0RGVmaW5pdGlvbihMaXN0KTsKCiAgLy8gYnJhY2VzCiAgZGVmYXVsdExpc3REZWZpbml0
aW9uKEJyYWNlKTsKICBkZWZhdWx0TGlzdERlZmluaXRpb24oQmxvY2spOwogIGRlZmF1bHRMaXN0
RGVmaW5pdGlvbihDbGFzc0JvZHkpOwoKICAvLyBzdGF0ZW1lbnRzCiAgZGVmYXVsdExpc3REZWZp
bml0aW9uKElmU3RhdGVtZW50KTsKICBkZWZhdWx0TGlzdERlZmluaXRpb24oU3dpdGNoU3RhdGVt
ZW50KTsKICBkZWZhdWx0TGlzdERlZmluaXRpb24oV2hpbGVTdGF0ZW1lbnQpOwogIGRlZmF1bHRM
aXN0RGVmaW5pdGlvbihEb1N0YXRlbWVudCk7CiAgZGVmYXVsdExpc3REZWZpbml0aW9uKEZvclN0
YXRlbWVudCk7CiAgZGVmYXVsdExpc3REZWZpbml0aW9uKFRyeVN0YXRlbWVudCk7CiAgZGVmYXVs
dExpc3REZWZpbml0aW9uKEJyZWFrU3RhdGVtZW50KTsKICBkZWZhdWx0TGlzdERlZmluaXRpb24o
Q29udGludWVTdGF0ZW1lbnQpOwogIGRlZmF1bHRMaXN0RGVmaW5pdGlvbihSZXR1cm5TdGF0ZW1l
bnQpOwogIGRlZmF1bHRMaXN0RGVmaW5pdGlvbihHb3RvU3RhdGVtZW50KTsKICBkZWZhdWx0TGlz
dERlZmluaXRpb24oQ2FzZVN0YXRlbWVudCk7CiAgZGVmYXVsdExpc3REZWZpbml0aW9uKERlZmF1
bHRTdGF0ZW1lbnQpOwogIGRlZmF1bHRMaXN0RGVmaW5pdGlvbihMYWJlbFN0YXRlbWVudCk7CiAg
ZGVmYXVsdExpc3REZWZpbml0aW9uKEV4cHJTdGF0ZW1lbnQpOwogIAogIC8vIGV4cHJlc3Npb25z
CiAgZGVmYXVsdExpc3REZWZpbml0aW9uKEV4cHJlc3Npb24pOwogIGRlZmF1bHRMaXN0RGVmaW5p
dGlvbihBc3NpZ25FeHByKTsKICBkZWZhdWx0TGlzdERlZmluaXRpb24oQ29uZEV4cHIpOwogIGRl
ZmF1bHRMaXN0RGVmaW5pdGlvbihJbmZpeEV4cHIpOwogIGRlZmF1bHRMaXN0RGVmaW5pdGlvbihQ
bUV4cHIpOwogIGRlZmF1bHRMaXN0RGVmaW5pdGlvbihDYXN0RXhwcik7CiAgZGVmYXVsdExpc3RE
ZWZpbml0aW9uKFVuYXJ5RXhwcik7CiAgZGVmYXVsdExpc3REZWZpbml0aW9uKFRocm93RXhwcik7
CiAgZGVmYXVsdExpc3REZWZpbml0aW9uKFNpemVvZkV4cHIpOwogIGRlZmF1bHRMaXN0RGVmaW5p
dGlvbihPZmZzZXRvZkV4cHIpOwogIGRlZmF1bHRMaXN0RGVmaW5pdGlvbihUeXBlaWRFeHByKTsK
ICBkZWZhdWx0TGlzdERlZmluaXRpb24oVHlwZW9mRXhwcik7CiAgZGVmYXVsdExpc3REZWZpbml0
aW9uKE5ld0V4cHIpOwogIGRlZmF1bHRMaXN0RGVmaW5pdGlvbihEZWxldGVFeHByKTsKICBkZWZh
dWx0TGlzdERlZmluaXRpb24oQXJyYXlFeHByKTsKICBkZWZhdWx0TGlzdERlZmluaXRpb24oRnVu
Y2FsbEV4cHIpOwogIGRlZmF1bHRMaXN0RGVmaW5pdGlvbihQb3N0Zml4RXhwcik7CiAgZGVmYXVs
dExpc3REZWZpbml0aW9uKERvdE1lbWJlckV4cHIpOwogIGRlZmF1bHRMaXN0RGVmaW5pdGlvbihB
cnJvd01lbWJlckV4cHIpOwogIGRlZmF1bHRMaXN0RGVmaW5pdGlvbihQYXJlbkV4cHIpOwogIGRl
ZmF1bHRMaXN0RGVmaW5pdGlvbihVc2VyU3RhdGVtZW50RXhwcik7CiAgCiAgLy8gZGVmaW5pdGlv
bnMKICBkZWZhdWx0TGlzdERlZmluaXRpb24oRnVuY3Rpb25EZWZpbml0aW9uKTsgIAogIAogIC8v
IEZJWE1FOiBjb250aW51ZSB0byBiZSBleGhhdXN0aXZlCiAgCiN1bmRlZiBkZWZhdWx0TGlzdERl
ZmluaXRpb24KCnByb3RlY3RlZDoKICB0ZW1wbGF0ZTxjbGFzcyBUPgogIHZvaWQgdmlzaXRMaXN0
KFQqIG5vZGUpCiAgewogICAgUFRyZWU6Ok5vZGUqIGNhciA9IHJld3JpdGUobm9kZS0+Y2FyKCkp
OwogICAgUFRyZWU6Ok5vZGUqIGNkciA9IHJld3JpdGUobm9kZS0+Y2RyKCkpOwogICAgc2V0UmVz
dWx0KG5ldyBUKGNhciwgY2RyKSk7ICAgICAgCiAgfQogIAogIHZvaWQgc2V0UmVzdWx0KFBUcmVl
OjpOb2RlKiByZXN1bHQpCiAgICB7dGhpcy0+cmVzdWx0ID0gcmVzdWx0O30KICAKICBQVHJlZTo6
Tm9kZSogZ2V0UmVzdWx0KCkgY29uc3QKICAgIHtyZXR1cm4gcmVzdWx0O30KICAKcHJpdmF0ZToK
ICBQVHJlZTo6Tm9kZSogcmVzdWx0Owp9OwovKgpjbGFzcyBTaW1wbGVSZXdyaXRlVmlzaXRvciA6
IHB1YmxpYyBSZXdyaXRlVmlzaXRvcgp7CnB1YmxpYzoKICB2aXJ0dWFsIHZvaWQgdmlzaXQoUFRy
ZWU6OklkZW50aWZpZXIqIGlkZW50aWZpZXIpCiAgewogICAgaWYgKCppZGVudGlmaWVyID09ICJm
ZWF0dXJlR2VuZXJhdG9yIikKICAgIHsKICAgICAgY29uc3QgY2hhciogdm9pZDIgPSAidm9pZCI7
CiAgICAgIHNldFJlc3VsdChuZXcgUFRyZWU6OklkZW50aWZpZXIodm9pZDIsIHN0cmxlbih2b2lk
MikpKTsKICAgIH0KICAgIGVsc2UKICAgICAgUmV3cml0ZVZpc2l0b3I6OnZpc2l0KGlkZW50aWZp
ZXIpOwogIH0KfTsqLwoKI2VuZGlmIC8vICFDUkFMR09fUkVXUklURV9WSVNJVE9SX0hfCg==
------=_Part_146181_33010286.1231615047814
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
_______________________________________________
Synopsis-devel mailing list
[email protected]
http://lists.fresco.org/cgi-bin/listinfo/synopsis-devel
------=_Part_146181_33010286.1231615047814--