[Ometa] Simple arithmetic parser
Alessandro Warth
alexwarth at gmail.com
Thu Jan 7 12:54:55 PST 2010
SGkgQW5kcmV5LAoKU3VyZSwgT01ldGEvSlMgZG9lc24ndCBzdXBwb3J0IGluZGlyZWN0IGxlZnQg
cmVjdXJzaW9uLi4uIGJ1dCBldmVuIGlmIGl0CmRpZCwgeW91ciBncmFtbWFyIHdvdWxkbid0IHdv
cmsgYXMgeW91IGludGVuZGVkLiBDb25zaWRlciB0aGUKZm9sbG93aW5nIHJlZmFjdG9yaW5nIG9m
IHlvdXIgZ3JhbW1hciwgaW4gd2hpY2ggdGhlIHVzZXMgb2YgdGhlIGFkZCwgbXVsLAphbmQgaW5m
aXggcnVsZXMgaGF2ZSBiZWVuIGlubGluZWQ6CgpvbWV0YSBBcml0aG1ldGljIDw6IFBhcnNlciB7
CiAgICBudW0gPSBzcGFjZXMgZGlnaXQrOmRzIC0+IHBhcnNlSW50KGRzLmpvaW4oIiIpKSwKCiAg
ICBleHAgPSBleHA6bCAiKiIgZXhwOnIgLT4gWycqJywgbCwgcl0KICAgICAgICB8IGV4cDpsICIr
IiBleHA6ciAtPiBbJysnLCBsLCByXQogICAgICAgIHwgbnVtCiAgICAgICAgfCAiKCIgZXhwOmUg
IikiIC0+IGUKfQoKKEZvciB0aGUgc2FrZSBvZiBrZWVwaW5nIHRoaXMgZGlzY3Vzc2lvbiBhcyBz
aW1wbGUgYXMgcG9zc2libGUsIEkndmUgYWxzbwpnb3R0ZW4gcmlkIG9mIHRoZSAtIGFuZCAvIG9w
ZXJhdG9ycy4pCgpOb3cgdGhhdCBleHAgaXMgb25seSAqZGlyZWN0bHkqIGxlZnQtcmVjdXJzaXZl
LCBpdCdzIG11Y2ggZWFzaWVyIHRvIHJlYXNvbgphYm91dC4gQW5kIGl0J3MgZWFzeSB0byBzZWUg
dGhhdCBpdCB3b24ndCB3b3JrLCBiZWNhdXNlIHlvdSd2ZSAiZmxhdHRlbmVkIgp0d28gZGlmZmVy
ZW50IGxldmVscyBvZiBwcmVjZWRlbmNlIGludG8gYSBzaW5nbGUgcnVsZSwgZS5nLiwgaWYgeW91
IHRyeSB0bwpwYXJzZSAiMSsyKjMiLCB5b3UnbGwgZW5kIHVwIHdpdGggdGhlIHBhcnNlIHRyZWUg
WyssIDEsIFsqLCAyLCAzXV0uCgpNSU5JIFJBTlQ6IHRoZSBmYWN0IHRoYXQgSSBoYWQgdG8gcmVm
YWN0b3IgeW91ciBncmFtbWFyIGluIG9yZGVyIHRvIG1ha2UKdGhpcyBwb2ludCBpbGx1c3RyYXRl
cyB3aHkgSSBhYnNvbHV0ZWx5ICpoYXRlKiBpbmRpcmVjdCBsZWZ0IHJlY3Vyc2lvbiAtLSBpdAph
bHdheXMgb2JzY3VyZXMgdGhlIG1lYW5pbmcgb2YgYSBncmFtbWFyLCBhbmQgSU1PIHByb2dyYW1t
ZXJzIHNob3VsZG4ndAp0b3VjaCBpdCB3aXRoIGEgdGVuLWZvb3QgcG9sZS4gQnV0IEkgZGlncmVz
cyA6KQoKSGVyZSdzIGEgc3VnZ2VzdGlvbiBmb3IgeW91ciBncmFtbWFyLiBIb3cgYWJvdXQgeW91
IHJld3JpdGUgdGhlIGluZml4IHJ1bGUKc28gdGhhdCBpdCB0YWtlcyBib3RoIGFuIG9wZXJhdG9y
IGFuZCB0aGUgcnVsZXMgdGhhdCBzaG91bGQgcGFyc2UgaXRzCm9wZXJhbmRzICh1c2luZyBPTWV0
YSdzIGFwcGx5IHJ1bGUpPyBUaGVuIHlvdSBjb3VsZCB1c2UgaXQgbGlrZSB0aGlzOgoKYWRkRXhw
ciAgPSBpbmZpeCgnbXVsRXhwcicsICAnKycpIHwgaW5maXgoJ211bEV4cHInLCAgJy0nKSB8IG11
bEV4cHIsCm11bEV4cHIgID0gaW5maXgoJ3ByaW1FeHByJywgJyonKSB8IGluZml4KCdwcmltRXhw
cicsICcvJykgfCBwcmltRXhwciwKcHJpbUV4cHIgPSBudW0gfCAiKCIgZXhwcjplICIpIiAtPiBl
LApleHByID0gYWRkRXhwcgoKQ2hlZXJzLApBbGV4CgoyMDEwLzEvNyBBbmRyZXkgRmVkb3JvdiA8
YW5mZWRvcm92QGdtYWlsLmNvbT4KCj4gU2VlbXMgbGlrZSBpdC4gRnJhbmsgU2hlYXJhciBhbHNv
IHBvaW50ZWQgbWUgdG86Cj4gaHR0cDovL3Zwcmkub3JnL3BpcGVybWFpbC9vbWV0YS8yMDA5LU1h
eS8wMDAxMzcuaHRtbAo+Cj4gV2hlcmUgQWxleCBwb2ludHMgb3V0IHRoYXQgIk9NZXRhIGRvZXMg
bm90IG1lbW9pemUgdGhlIHJlc3VsdHMgb2YKPiBoaWdoZXItb3JkZXIvcGFyYW1ldGVyaXplZCBw
cm9kdWN0aW9ucywgYW5kIHRoaXMgbWVhbnMgdGhhdCB0aGV5IGNhbid0IGJlCj4gbGVmdC1yZWN1
cnNpdmUuIgo+Cj4gQ2hlZXJzLAo+IEFuZHJleQo+Cj4gMjAxMC8xLzcgSm9veXVuZyBIYW4gPGpv
b3l1bmcuaGFuQGdtYWlsLmNvbT4KPgo+IEhpLgo+Pgo+PiBJIHRoaW5rIGl0J3MgdGhlIGluZGly
ZWN0IGxlZnQgcmVjdXJzaW9uIHByb2JsZW0uIElmIHRoZSBvbWV0YQo+PiBpbXBsZW1lbnRhdGlv
biB1c2VzIG9sZCBvbWV0YSBhbGdvcml0aG0gaXQgY2FuJ3QgaGFuZGxlIGluZGlyZWN0IGxlZnQK
Pj4gcmVjdXJzaW9uLgo+Pgo+PiBZb3UgbWF5IHJlZm9ybXVsYXRlIHRoZSBwcm9kdWN0aW9uIHJ1
bGVzIG5vdCB1c2luZyBsZWZ0IHJlY3Vyc2lvbi4gT3IgZml4Cj4+IHRoZSBvbWV0YSBpbXBsZW1l
bnRhdGlvbi4KPj4KPj4KPj4gs6rAxyBpUG9kv6G8rSC6uLO/Cj4+Cj4+IDIwMTAuIDEuIDcuIL/A
yMQgNjoyMCBBbmRyZXkgRmVkb3JvdiA8YW5mZWRvcm92QGdtYWlsLmNvbT4gwNu8ujoKPj4KPj4g
SSdtIHRyeWluZyB0byBidWlsZCB1cCBoaWdoZXItb3JkZXIgcnVsZXMgbGlrZSBIYXNrZWxsJ3Mg
aW5maXhyLzxodHRwOi8vZ29vZ18xMjYyODUzMDA3MzQ0Pgo+PiBpbmZpeGwgPGh0dHA6Ly93d3cu
aGFza2VsbC5vcmcvdHV0b3JpYWwvZnVuY3Rpb25zLmh0bWwjc2VjdDMuMi4yPiBhbmQgYW0KPj4g
Z2V0dGluZyBzdHVjayBoZXJlOgo+Pgo+Pgo+PiBvbWV0YSBBcml0aG1ldGljIDw6IFBhcnNlciB7
Cj4+ICAgICBpbmZpeCA6eCA9IGV4cDpsIDpvcCA/KG9wPT14KSBleHA6ciAtPiBbeCwgbCwgcl0s
Cj4+Cj4+ICAgICAgbnVtID0gZGlnaXQrOmRzIC0+IHBhcnNlSW50KGRzLmpvaW4oIiIpKSwKPj4K
Pj4gICAgICBhZGQgPSBpbmZpeCgnKycpIHwgaW5maXgoJy0nKSwKPj4gICAgIG11bCA9IGluZml4
KCcqJykgfCBpbmZpeCgnLycpLAo+Pgo+PiAgICAgZXhwID0gbXVsIHwgYWRkIHwgbnVtIHwgIigi
IGV4cDplICIpIiAtPiBlCj4+IH0KPj4KPj4gPj4+IEFyaXRobWV0aWMubWF0Y2hBbGwoIjMqMiIs
ICJtdWwiKQo+PiBbKiwgMywgMl0KPj4KPj4gLS0gYnV0IC0tCj4+Cj4+ID4+PiBBcml0aG1ldGlj
Lm1hdGNoQWxsKCIzKjIiLCAiZXhwIikKPj4gMwo+Pgo+PiBDb3VsZCBzb21lb25lIGhlbHAgZXhw
bGFpbj8KPj4KPj4gQ2hlZXJzLAo+PiBBbmRyZXkKPj4KPj4gX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KPj4gT01ldGEgbWFpbGluZyBsaXN0Cj4+IE9NZXRh
QHZwcmkub3JnCj4+IGh0dHA6Ly92cHJpLm9yZy9tYWlsbWFuL2xpc3RpbmZvL29tZXRhCj4+Cj4+
Cj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4+IE9N
ZXRhIG1haWxpbmcgbGlzdAo+PiBPTWV0YUB2cHJpLm9yZwo+PiBodHRwOi8vdnByaS5vcmcvbWFp
bG1hbi9saXN0aW5mby9vbWV0YQo+Pgo+Pgo+Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KPiBPTWV0YSBtYWlsaW5nIGxpc3QKPiBPTWV0YUB2cHJpLm9y
Zwo+IGh0dHA6Ly92cHJpLm9yZy9tYWlsbWFuL2xpc3RpbmZvL29tZXRhCj4KPgotLS0tLS0tLS0t
LS0tLSBuZXh0IHBhcnQgLS0tLS0tLS0tLS0tLS0KQW4gSFRNTCBhdHRhY2htZW50IHdhcyBzY3J1
YmJlZC4uLgpVUkw6IGh0dHA6Ly92cHJpLm9yZy9waXBlcm1haWwvb21ldGEvYXR0YWNobWVudHMv
MjAxMDAxMDcvMTRjNjUyOTgvYXR0YWNobWVudC5odG0K
More information about the OMeta
mailing list