[antlr-interest] line by line parser

niry niry at 263.net
Tue Feb 8 07:17:50 PST 2005


RGVhciBSaWMgS2xhcmVuDQoJUmVhbGx5IHRoYW5rcyBmb3IgeW91ciByZXBseSEgQnV0IG1heWJl
IG15IHBhcnNlciBpcyBub3QgYSBzdHJpY3QgbGluZSBieSBsaW5lIHBhcnNlciwgc28gSSBjYW4g
d3JpdGUgcnVsZXMgdG8gcGFyc2UgaXQgd2VsbCEoU2VlIGJlbG93IG15IHJ1bGVzKQ0KCVdoYXQg
SSB3YW50IHRvIGRvIGlzIHRvIGNvbnZlcnQgdXNlci1pbnB1dCB0ZXh0IHRvIGludGVybmFsIGNv
ZGUsIHNvbWUgdGhpbmcgbGlrZSBNQVNNIGRvZXMuIA0KCWUuZy4gVXNlciB3aWxsIGlucHV0IGxp
bmVzIGxpa2UgIihOb3VuLnNwYWNlKShWZXJiLnBhc3NpdmUpOjpsaygxLCBOb3VuKTtsayg0LCBW
ZXJiKS0+bXJnOyIsIHdoZXJlIGludGVybmFsbHkgTm91biBpcyBjb2RlZCBieSAwMiwgc3BhY2Ug
MjMsIFZlcmIgMDMsIHBhc3NpdmUgMzUuDQoJU28gdGhlIGlucHV0IHdpbGwgYmUgY29udmVydGVk
IHRvIDoNCgkiMDIyMzAzMzVsaygxLDAyKW1yZyIgd2hlcmUgbGsgYW5kIG1yZyBhcmUgZnVuY3Rp
b25zLg0KCUFuZCBkdXJpbmcgY29udmVydGluZywgSSB3aWxsIGNoZWNrIGlmIHRoZXJlIGRvZXMg
aGF2ZSBhIHR5cGUgY2FsbGVkICJOb3VuIiwgd2hpY2ggaGFzIGEgc3VidHlwZSBjYWxsZWQgInNw
YWNlIiwgYW5kIGV0Yy4sIGFuZCBhbHNvIHdpbGwgY2hlY2sgaWYgdGhlcmUgZG9lcyBoYXZlIGEg
ZnVuY3Rpb24gY2FsbGVkICJsayIsIHdoaWNoIGhhcyB0d28gcGFyYW1ldGVycywgYW5kIHRoZSBm
aXJzdCBzaG91bGQgYmUgZGlnaXQsIHNlY29uZCBzaG91bGQgYmUgdHlwZShlLmcuICJOb3VuIiwg
IlZlcmIiKS4NCgkibGsiIGlzIGEgY29uZGl0aW9uIGZ1bmN0aW9uLCB3aGljaCBzaG91bGQgYmUg
YWZ0ZXIgIjo6IiwgIm1yZyIgaXMgb3BlcmF0aW9uIGZ1bmN0aW9uLCB3aGljaCBzaG91bGQgYmUg
YWZ0ZXIgIi0+Ig0KCWFsbCBvZiBhYm92ZSBzaG91bGQgYmUgY2hlY2tlZCBkdXJpbmcgY29udmVy
dGluZywgYW5kIHRoZSBtZXRhIGluZm9ybWF0aW9uIGFib3V0IG15IGRlZmluZWQgbGFuZ3VhZ2Ug
aXMgc3RvcmVkIHdpdGggWE1MIGZvcm1hdCwgd2hpY2ggaXMgcmVhZCBieSBwYXJzZXIgYmVmb3Jl
IGNvbnZlcnRpbmcuDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLy8gUnVsZS5nDQoNCmhlYWRlciB7DQoJI2lu
Y2x1ZGUgInN0ZGFmeC5oIg0KCSNpbmNsdWRlIDxzdHJpbmc+DQoJI2luY2x1ZGUgPHZlY3Rvcj4N
CgkjaW5jbHVkZSA8aXRlcmF0b3I+DQoJI2luY2x1ZGUgInBhcnNlLmgiDQoJI2luY2x1ZGUgIlRl
cm1FeGNlcHRpb24uaCINCgkjaW5jbHVkZSAiRnVuY3Rpb25FeGNlcHRpb24uaCINCglBTlRMUl9V
U0lOR19OQU1FU1BBQ0Uoc3RkKQ0KfSAgDQoNCm9wdGlvbnMgew0KCWxhbmd1YWdlPSJDcHAiOw0K
fQ0KDQovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8vIFRoZSBSdWxlIHBhcnNlcg0KLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tDQpjbGFzcyBSdWxlUGFyc2VyIGV4dGVuZHMgUGFyc2VyOw0Kb3B0aW9ucyB7
DQoJayA9IDI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHdvIHRva2VuIGxvb2thaGVh
ZA0KCWV4cG9ydFZvY2FiPVJ1bGU7ICAgICAgICAgICAgICAgIC8vIENhbGwgaXRzIHZvY2FidWxh
cnkgIlJ1bGUiDQoJY29kZUdlbk1ha2VTd2l0Y2hUaHJlc2hvbGQgPSAyOyAgLy8gU29tZSBvcHRp
bWl6YXRpb25zIChkb24ndCBzZWVtIHRvIGRvDQoJY29kZUdlbkJpdHNldFRlc3RUaHJlc2hvbGQg
PSAzOyAgLy8gbXVjaCBzcGVlZHdpc2UgaW4gQysrIGNvbXBhcmVkIHRvIGRlZmF1bHRzKQ0KCWRl
ZmF1bHRFcnJvckhhbmRsZXIgPSB0cnVlOyAgICAgLy8gRG9uJ3QgZ2VuZXJhdGUgcGFyc2VyIGVy
cm9yIGhhbmRsZXJzDQp9DQoNCnsNCnByaXZhdGU6DQoJYm9vbCBwYXJzZU9LOw0KcHVibGljOg0K
CWlubGluZSBib29sIElzUGFyc2VPSygpIHsNCgkJcmV0dXJuIHBhcnNlT0s7DQoJfQ0KCXZpcnR1
YWwgdm9pZCByZXBvcnRFcnJvcihjb25zdCBBTlRMUl9VU0VfTkFNRVNQQUNFKGFudGxyKVJlY29n
bml0aW9uRXhjZXB0aW9uJiBleCkNCgl7DQoJCV9fc3VwZXI6OnJlcG9ydEVycm9yKGV4KTsNCgkJ
cGFyc2VPSyA9IGZhbHNlOw0KCX0NCg0KfQ0KDQpmaWxlW3ZlY3RvcjxzdHJpbmc+JiBvdXRwdXRM
aXN0XQ0KewlwYXJzZU9LID0gdHJ1ZTsgICAgICAvLyBpbml0aWFsbHksIHNldCBwYXJzZU9LID0g
dHJ1ZQ0KCXN0ZDo6c3RyaW5nIGxpbmVTdHI7DQp9DQoJOgkoDQoJCQlsaW5lW2xpbmVTdHJdDQoJ
CQl7DQoJCQkJb3V0cHV0TGlzdC5wdXNoX2JhY2sobGluZVN0cik7DQoJCQl9DQoJCSkqIGVvZjpF
T0YNCgk7DQoNCmxpbmVbc3RyaW5nJiBsaW5lU3RyXQ0KewlzdHJpbmcgc3RyOw0KfQ0KCTogICAo
DQoJCQkoDQoJCQkJdGVybVtzdHJdDQoJCQkJeyBsaW5lU3RyICs9IHN0cjsJfQ0KCQkJKSsNCgkJ
CShEQkxDT0xPTiANCgkJCQkoDQoJCQkJCWZ1bmN0aW9uWzAsIHN0cl0NCgkJCQkJeyBsaW5lU3Ry
ICs9IHN0cisnOyc7IH0NCgkJCQkpKw0KCQkJKT8NCgkJCUFSUk9XICgNCgkJCQkJZnVuY3Rpb25b
MSwgc3RyXQ0KCQkJCQl7IGxpbmVTdHIgKz0gc3RyKyc7JzsgfQ0KCQkJCSkrDQoJCSk/DQoJCU5F
V0xJTkUNCgkJeyBsaW5lU3RyICs9ICdcbic7IH0NCgk7DQoNCnRlcm1bc3RyaW5nJiB0ZXJtU3Ry
XQ0KCTogIAlMUEFSRU4gd29yZDpTVFJJTkdfTElURVJBTA0KCQl7IHRlcm1TdHIgKz0gd29yZC0+
Z2V0VGV4dCgpOyB9DQoJCQkoRE9UIHdvcmQyOlNUUklOR19MSVRFUkFMDQoJCQl7IHRlcm1TdHIg
Kz0gJy4nK3dvcmQyLT5nZXRUZXh0KCk7IH0NCgkJCQkoDQoJCQkJCURPVCB3b3JkMzpTVFJJTkdf
TElURVJBTA0KCQkJCQl7IHRlcm1TdHIgKz0gJy4nK3dvcmQzLT5nZXRUZXh0KCk7IH0NCgkJCQkp
Pw0KCQkJKT8NCgkJUlBBUkVODQoJCXsNCgkJCUNTdHJpbmcgc3RyU3JjKHRlcm1TdHIuY19zdHIo
KSk7DQoJCQlDU3RyaW5nIHN0ckRzdDsNCgkJCWlmKFRyYW5zbGF0ZVdvcmQoc3RyU3JjLCBzdHJE
c3QpKSB7DQoJCQkJdGVybVN0ciA9IChMUENUU1RSKXN0ckRzdDsNCgkJCX0NCgkJCWVsc2Ugew0K
CQkJCUFOVExSX1VTRV9OQU1FU1BBQ0UoYW50bHIpU2VtYW50aWNFeGNlcHRpb24gZXgoDQoJCQkJ
CSJ0ZXJtIGlucHV0IGVycm9yIiwgZ2V0RmlsZW5hbWUoKSwgd29yZC0+Z2V0TGluZSgpLCB3b3Jk
LT5nZXRDb2x1bW4oKSk7DQoJCQkJcmVwb3J0RXJyb3IoZXgpOw0KCQkJfQ0KCQl9DQoJOw0KZnVu
Y3Rpb25baW50IG5DdXJQb3MsIHN0cmluZyYgZnVuY1N0cl0NCnsJc3RyaW5nIHBhcmFtczsgfQ0K
CToJZnVuYzpTVFJJTkdfTElURVJBTCANCgkJKA0KCQkJTFBBUkVOIHBhcmFtOlNUUklOR19MSVRF
UkFMICANCgkJCXsgcGFyYW1zICs9IHBhcmFtLT5nZXRUZXh0KCk7IH0NCgkJCSgNCgkJCQlDT01N
QSBwYXJhbTI6U1RSSU5HX0xJVEVSQUwNCgkJCQl7IHBhcmFtcyArPSAnLCcrcGFyYW0yLT5nZXRU
ZXh0KCk7IH0NCgkJCSkqIA0KCQkJUlBBUkVODQoJCSk/DQoJCXsNCgkJCUNTdHJpbmcgc3RyRnVu
YyhmdW5jLT5nZXRUZXh0KCkuY19zdHIoKSksIHN0clBhcmFtKHBhcmFtcy5jX3N0cigpKSwgc3Ry
RHN0Ow0KCQkJaW50IG5FcnIgPSBUcmFuc2xhdGVGdW5jdGlvbihuQ3VyUG9zLCBzdHJGdW5jLCBz
dHJQYXJhbSwgc3RyRHN0KTsNCgkJCWlmKG5FcnIgPT0gRVJSX0ZVTkMpIHsNCgkJCQlBTlRMUl9V
U0VfTkFNRVNQQUNFKGFudGxyKVNlbWFudGljRXhjZXB0aW9uIGV4KA0KCQkJCQkiTm8gc3VjaCBm
dW5jdGlvbiBlcnJvciIsIGdldEZpbGVuYW1lKCksIGZ1bmMtPmdldExpbmUoKSwgZnVuYy0+Z2V0
Q29sdW1uKCkpOw0KCQkJCXJlcG9ydEVycm9yKGV4KTsNCgkJCX0NCgkJCWVsc2UgaWYobkVyciA9
PSBFUlJfUEFSQU0pIHsNCgkJCQlBTlRMUl9VU0VfTkFNRVNQQUNFKGFudGxyKVNlbWFudGljRXhj
ZXB0aW9uIGV4KA0KCQkJCQkicGFyYW1ldGVycyBlcnJvciIsIGdldEZpbGVuYW1lKCksIGZ1bmMt
PmdldExpbmUoKSwgZnVuYy0+Z2V0Q29sdW1uKCkpOw0KCQkJCXJlcG9ydEVycm9yKGV4KTsNCgkJ
CX0NCgkJCWVsc2Ugew0KCQkJCWZ1bmNTdHIgPSAoTFBDVFNUUilzdHJEc3Q7DQoJCQl9DQoJCX0N
CgkJU0VNSQ0KCTsNCg0KLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQovLyBUaGUgUnVsZSBzY2FubmVy
DQovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnsNCiNpbmNsdWRlIDxzdHJpbmc+DQp9DQpjbGFzcyBS
dWxlTGV4ZXIgZXh0ZW5kcyBMZXhlcjsNCg0Kb3B0aW9ucyB7DQoJZXhwb3J0Vm9jYWI9UnVsZTsg
ICAgICAvLyBjYWxsIHRoZSB2b2NhYnVsYXJ5ICJSdWxlIg0KCXRlc3RMaXRlcmFscz1mYWxzZTsg
ICAgLy8gZG9uJ3QgYXV0b21hdGljYWxseSB0ZXN0IGZvciBsaXRlcmFscw0KCWs9MjsgICAgICAg
ICAgICAgICAgICAgLy8gdHdvIGNoYXJhY3RlcnMgb2YgbG9va2FoZWFkDQoJY2hhclZvY2FidWxh
cnk9J1x1MDAwMycuLidcdTAwRkYnOw0KCS8vCWNvZGVHZW5CaXRzZXRUZXN0VGhyZXNob2xkPTIw
Ow0KfQ0KDQovLyBPUEVSQVRPUlMNCkxQQVJFTgkJb3B0aW9ucyB7DQoJcGFyYXBocmFzZSA9ICIo
IjsNCn0JCQkNCgk6CScoJwkJDQoJOw0KDQpSUEFSRU4JCW9wdGlvbnMgew0KCXBhcmFwaHJhc2Ug
PSAiKSI7DQp9CQkJDQoJOgknKScJCQ0KCTsNCg0KREJMQ09MT04Jb3B0aW9ucyB7DQoJcGFyYXBo
cmFzZSA9ICI6OiI7DQp9CQkJDQoJOgkiOjoiIA0KCTsNCg0KQVJST1cJCW9wdGlvbnMgew0KCXBh
cmFwaHJhc2UgPSAiLT4iOw0KfQkJICAgDQoJOgkiLT4iCQ0KCTsNCg0KQ09NTUEJCW9wdGlvbnMg
ew0KCXBhcmFwaHJhc2UgPSAiLCI7DQp9CQkgICANCgk6CScsJwkJDQoJOw0KDQpET1QJCQlvcHRp
b25zIHsNCglwYXJhcGhyYXNlID0gIi4iOw0KfQkJCQ0KCToJJy4nCQkNCgk7DQoNClNFTUkJCQlv
cHRpb25zIHsNCglwYXJhcGhyYXNlID0gIjsiOw0KfQkNCgk6CSc7JwkJDQoJOw0KDQovLyBoYW5k
bGUgbmV3bGluZXMNCk5FV0xJTkUJCQlvcHRpb25zIHsNCglwYXJhcGhyYXNlID0gImVudGVyKFxu
KSI7CQkNCn0NCgk6CSgNCgkJCShvcHRpb25zIHtnZW5lcmF0ZUFtYmlnV2FybmluZ3M9ZmFsc2U7
fQ0KCQkJOgkiXHJcbiIgIC8vIEV2aWwgRE9TDQoJCQl8CSdccicgICAgLy8gTWFjaW50b3NoDQoJ
CQl8CSdcbicgICAgLy8gVW5peCAodGhlIHJpZ2h0IHdheSkNCgkJCSkNCgkJCXsgbmV3bGluZSgp
OyB9DQoJCSkrDQoJOw0KLy8gV2hpdGVzcGFjZSAtLSBpZ25vcmVkDQpXUwk6CSgJJyAnDQoJCXwJ
J1x0Jw0KCQl8CSdcZicNCgkJeyAkc2V0VHlwZShBTlRMUl9VU0VfTkFNRVNQQUNFKGFudGxyKVRv
a2VuOjpTS0lQKTsgfQ0KCQkpKw0KCTsNCg0KLy8gU2luZ2xlLWxpbmUgY29tbWVudHMNClNMX0NP
TU1FTlQNCgk6CSIvLyINCgkJKH4oJ1xuJ3wnXHInKSkqDQoJCXsNCgkJCSRzZXRUeXBlKEFOVExS
X1VTRV9OQU1FU1BBQ0UoYW50bHIpVG9rZW46OlNLSVApOw0KCQl9DQoJOw0KDQovLyBtdWx0aXBs
ZS1saW5lIGNvbW1lbnRzDQpNTF9DT01NRU5UDQoJOgkiLyoiDQoJCSgNCgkJCW9wdGlvbnMgew0K
CQkJCWdlbmVyYXRlQW1iaWdXYXJuaW5ncz1mYWxzZTsNCgkJCX0NCgkJOgl7IExBKDIpIT0nLycg
fT8gJyonDQoJCXwJIlxyXG4iCQkJe25ld2xpbmUoKTt9ICAJLy8gRXZpbCBET1MNCgkJfAknXHIn
CQkJe25ld2xpbmUoKTt9CS8vIE1hY2ludG9zaA0KCQl8CSdcbicJCQl7bmV3bGluZSgpO30JLy8g
VW5peCAodGhlIHJpZ2h0IHdheSkNCgkJfAl+KCcqJ3wnXG4nfCdccicpDQoJCSkqDQoJCSIqLyIN
CgkJeyRzZXRUeXBlKEFOVExSX1VTRV9OQU1FU1BBQ0UoYW50bHIpVG9rZW46OlNLSVApO30NCgk7
DQoJDQoJCQ0KDQovLyBzdHJpbmcgbGl0ZXJhbHMNClNUUklOR19MSVRFUkFMCQkJb3B0aW9ucyB7
DQoJcGFyYXBocmFzZSA9ICJzdHJpbmcgbGl0ZXJhbCI7CQkNCn0JOgkoDQoJCQl+KCAnKCcgfCAn
KScgfCAnWycgfCAnXScgDQoJCQkJfCAnLScgfCAnOicgfCAnLycgfCAnKicgDQoJCQkJfCAnLCcg
fCAnLicgfCAnOycgfCAnXG4nIHwgJ1xyJyB8ICdcdCcgfCAnICcgfCAnXHUwMDBjJyApDQoJCQl8
DQoJCQkJeyBMQSgyKSE9Jz4nIH0/IAkJCSctJwkvLyBubyAiLT4iDQoJCQl8DQoJCQl7IExBKDIp
IT0nOicgfT8gCQkJJzonIC8vIG5vICI6OiINCgkJCXwNCgkJCXsgTEEoMikhPScvJyAmJiBMQSgy
KSE9JyonfT8nLycgLy8gbm8gIi8vIiBhbmQgIi8qIg0KCQkJLyoNCgkJCXsgTEEoMikhPScvJyB9
PwkJCQknLycgLy8gbm8gIi8vIiAgKkJVVCBhY3R1cmFsbHkgdGhpcyB3aWxsIGhpdCAiLyoiDQoJ
CQl8DQoJCQl7IExBKDIpIT0nKicgfT8JCQkJJy8nIC8vIG5vICIvKiIJKkJVVCBhY3R1cmFsbHkg
dGhpcyB3aWxsIGhpdCAiLy8iDQoJCQkqLw0KCQkJfA0KCQkJeyBMQSgyKSE9Jy8nIH0/IAkJCScq
JyAvLyBubyAiKi8iDQoJCSkrDQoJOw0KDQoNCj09PT09PT0gMjAwNS0wMi0wOCAxNzozNjoxNyBZ
b3Ugd3JvdGUgaW4gcHJldmlvdXMgbWFpbKO6PT09PT09PQ0KDQo+T24gVHVlLCA4IEZlYiAyMDA1
IDE1OjM5OjA3ICswODAwLCBuaXJ5IDxuaXJ5QDI2My5uZXQ+IHdyb3RlOg0KPj4gPk1heWJlIHlv
dSBhcmUgdHJ5aW5nIHRvIGRvIGxpbmUtYnktbGluZSBwYXJzaW5nPyBBZGQgdGhlIEVPRiB0b2tl
biB0byB0aGUNCj4+ID5lbmQgb2YgeW91ciBtYWluIHByb2R1Y3Rpb24vcnVsZS4gVGhhdCB3aWxs
IGZvcmNlIG1hdGNoaW5nIG9mIG9ubHkgb25lDQo+PiA+ZXhwcmVzc2lvbiBhdCBhIHRpbWUuDQo+
PiBZZXMhIFlvdSBoYXZlIGFuc3dlcmVkIG15IGFub3RoZXIgcXVlc3Rpb246IjIuIHdoYXQncyB1
cCB3aXRoIHRoZSBlcnJvciBkZXRlY3Q/IGNvbmZ1c2VkISAobmlyeSkiDQo+PiBBZnRlciBJIHBv
c3RlZCB0aGF0IHF1ZXN0aW9uLCBJIGFkZGVkIGEgRU9GIHRvIHRoZSBlbmQgb2YgbXkgbWFpbiBy
dWxlLg0KPj4gbW1tLCBhbnl3YXksIHdoZW4gaW5wdXQgaXMgbm90IHN1aXRlZCBmb3IgdGhlIHJ1
bGUsIHNvbWUgZXJyb3IgbWVzc2FnZSBsaWtlICJleHBlY3QgRU9GIiBhcHBlYXJzLA0KPj4gbG9v
a3MgbW9yZSB0aGFuIHByb2Zlc3Npb25hbDooDQo+DQo+VGhpcyBtaWdodCBiZSBvZiBpbnRlcmVz
dCBpZiB5b3UgZG8gbGluZSBieSBsaW5lIHBhcnNpbmcuDQo+DQo+aHR0cDovL3d3dy5qZ3VydS5j
b20vZmFxL3ZpZXcuanNwP0VJRD04OTM3MDYNCj4NCj5DaGVlcnMsDQo+DQo+UmljDQo+DQo+Lg0K
DQo9ID0gPSA9ID0gPSA9ID0gPSA9ID0gPSA9ID0gPSA9ID0gPSA9ID0NCgkJCQ0KDQpCZXN0IFJl
Z2FyZHMhDQogDQoJCQkJIA0KoaGhoaGhoaGhoaGhoaGhoW5pcnkNCqGhoaGhoaGhoaGhoaGhoaFu
aXJ5QDI2My5uZXQNCqGhoaGhoaGhoaGhoaGhoaGhoaGhMjAwNS0wMi0wOA0KDQo=




More information about the antlr-interest mailing list