парсеры/трансляторы на ANTLR никто не писал?

Все, что вы хотели знать о программизме, но боялись спросить.
MarkM
Пользователь
Сообщения: 113
Зарегистрирован: 24 сен 2003, 21:52

парсеры/трансляторы на ANTLR никто не писал?

Сообщение MarkM »

вопрос есть.
Аватара пользователя
Marmot
Графоман
Сообщения: 38454
Зарегистрирован: 17 фев 2003, 17:58
Откуда: Caulfeild
Контактная информация:

Re: парсеры/трансляторы на ANTLR никто не писал?

Сообщение Marmot »

MarkM писал(а):вопрос есть.
Чего парсим?
И для чего? Может можно решение попроще найти...
Я это дело знаю, но объяснять не возмусь, у меня пальцы заболят всё печатать :-)
Аватара пользователя
папа Карло
Шарманщик
Сообщения: 8565
Зарегистрирован: 17 фев 2003, 15:04
Откуда: НН -> BC -> WA -> UT -> CA

Re: парсеры/трансляторы на ANTLR никто не писал?

Сообщение папа Карло »

Marmot писал(а):
MarkM писал(а):вопрос есть.
Чего парсим?
И для чего? Может можно решение попроще найти...
Я это дело знаю, но объяснять не возмусь, у меня пальцы заболят всё печатать :-)
правильно. сложно четырмя пальцами печатать. :cool2:

PS :lol:
Аватара пользователя
Marmot
Графоман
Сообщения: 38454
Зарегистрирован: 17 фев 2003, 17:58
Откуда: Caulfeild
Контактная информация:

Re: парсеры/трансляторы на ANTLR никто не писал?

Сообщение Marmot »

папа Карло писал(а):
Marmot писал(а):
MarkM писал(а):вопрос есть.
Чего парсим?
И для чего? Может можно решение попроще найти...
Я это дело знаю, но объяснять не возмусь, у меня пальцы заболят всё печатать :-)
правильно. сложно четырмя пальцами печатать. :cool2:

PS :lol:
Как умеем, так и растопыриваемся :lol:
То чего Марк спрашивает, может запросто вылится в обсуждение LALR(1) vs LL(k) etc.
Так что, я пожалуй в сторонке постою...
MarkM
Пользователь
Сообщения: 113
Зарегистрирован: 24 сен 2003, 21:52

Re: парсеры/трансляторы на ANTLR никто не писал?

Сообщение MarkM »

Marmot писал(а):
MarkM писал(а):вопрос есть.
Чего парсим?
И для чего? Может можно решение попроще найти...
Я это дело знаю, но объяснять не возмусь, у меня пальцы заболят всё печатать :-)
[trn]Dlja chego... pochemu...
Karoche. Pishu nebol'shoj jazychok dlja prikladnyh celej.
Na Jave.
Problema v [/trn] [trn] ANTLR [/trn] [trn] v tom chto on ne daet [/trn] [trn] exceptions [/trn] [trn] pridelat' k metodam.
To est' svoi-to excepshny on pridelyvaet a moi, naprimer [/trn] [trn] IOException, SQLException [/trn] [trn] net.
Mozhno konechno ogorod s [/trn] [trn] try...catch [/trn] [trn] gorodit, no ne kuzjavo poluchaetsja. Hochu probrasyvat' naruzhu. Kak? [/trn]
Аватара пользователя
Marmot
Графоман
Сообщения: 38454
Зарегистрирован: 17 фев 2003, 17:58
Откуда: Caulfeild
Контактная информация:

Re: парсеры/трансляторы на ANTLR никто не писал?

Сообщение Marmot »

MarkM писал(а):[trn]Dlja chego... pochemu...
Karoche. Pishu nebol'shoj jazychok dlja prikladnyh celej.
Na Jave.
Problema v [/trn] [trn] ANTLR [/trn] [trn] v tom chto on ne daet [/trn] [trn] exceptions [/trn] [trn] pridelat' k metodam.
To est' svoi-to excepshny on pridelyvaet a moi, naprimer [/trn] [trn] IOException, SQLException [/trn] [trn] net.
Mozhno konechno ogorod s [/trn] [trn] try...catch [/trn] [trn] gorodit, no ne kuzjavo poluchaetsja. Hochu probrasyvat' naruzhu. Kak? [/trn]
Марк, а может взять JavaScript вот отсюда : http://www.mozilla.org/rhino/

А теперь об ANTLR, я например вопрос так и не понял :-)
Exceptions где? В теле парсера или в том что ты парсишь?

PS
Если ты по делу ANTLR решил приспособить, я бы не советовал, возни много...

PPS
А если из желания потрахатся, тогда конечо да, только ещё неизвестно кто кого ты его(ANTLR) или он тебя...
MarkM
Пользователь
Сообщения: 113
Зарегистрирован: 24 сен 2003, 21:52

Re: парсеры/трансляторы на ANTLR никто не писал?

Сообщение MarkM »

Marmot писал(а): Марк, а может взять JavaScript вот отсюда : http://www.mozilla.org/rhino/
[trn]
Mne ne nado java script. Specializirovannyj jazychok, bolee pohozhij na DDL ot kakojnibud' BD tipa Orakla
[/trn]
Marmot писал(а): А теперь об ANTLR, я например вопрос так и не понял :-)
Exceptions где? В теле парсера или в том что ты парсишь?
[trn]
V tele parsera. V metodah, kotorye sootvetstvujut pravilam.
[/trn]

I need like that

Код: Выделить всё

public void MyRule throws ANTLsomeRexception, SQLexception
ANTLR does like that

Код: Выделить всё

public void MyRule throws ANTLsomeRexception
Marmot писал(а): PS
Если ты по делу ANTLR решил приспособить, я бы не советовал, возни много...
[trn]Ugu, samomu parser pisat' eshe huzhe.[/trn]
[/code][/trn]
Аватара пользователя
Marmot
Графоман
Сообщения: 38454
Зарегистрирован: 17 фев 2003, 17:58
Откуда: Caulfeild
Контактная информация:

Re: парсеры/трансляторы на ANTLR никто не писал?

Сообщение Marmot »

MarkM писал(а): [trn]
Mne ne nado java script. Specializirovannyj jazychok, bolee pohozhij na DDL ot kakojnibud' BD tipa Orakla
[/trn]
Понятно... изврат это imho
MarkM писал(а):
[trn]
V tele parsera. V metodah, kotorye sootvetstvujut pravilam.
[/trn]

I need like that

Код: Выделить всё

public void MyRule throws ANTLsomeRexception, SQLexception
ANTLR does like that

Код: Выделить всё

public void MyRule throws ANTLsomeRexception
Ничего не понял, нафига вызывать DB при парсинге???!!!
Кто у тебя процессит AST???
Ты ничего не путаешь? Парсинг это парсинг, execution/code generation делается потом, используя AST.
MarkM писал(а): [trn]Ugu, samomu parser pisat' eshe huzhe.[/trn]
[/code][/trn]
А XML, например, не легче будет использовать??? :-)
MarkM
Пользователь
Сообщения: 113
Зарегистрирован: 24 сен 2003, 21:52

Re: парсеры/трансляторы на ANTLR никто не писал?

Сообщение MarkM »

Marmot писал(а):
MarkM писал(а): I need like that

Код: Выделить всё

public void MyRule throws ANTLsomeRexception, SQLexception
ANTLR does like that

Код: Выделить всё

public void MyRule throws ANTLsomeRexception
Marmot писал(а): Ничего не понял, нафига вызывать DB при парсинге???!!!
Кто у тебя процессит AST???
Ты ничего не путаешь? Парсинг это парсинг, execution/code generation делается потом, используя AST.
[trn]
Pochemu tak kategorichno?
Ja ne putaju. Nafiga mne AST? U menja ne dvuhprohodnyj transljator.
Esli delat' cherez AST to eto sperva budet sintaksicheskij parsing, a potom mne pridetcja "parsit'" AST, begat' po etim derev'am i analizirovat' kakie vetki est', kakih net, kakoj tip, kakoe znachenie.
Vse rukami. Nafiga?
Ja srazu kod API iz parsera vyzovu. I eto sdelaet ANTLR.

Ty otvet na vopros znaesh?
[/trn]
Аватара пользователя
Marmot
Графоман
Сообщения: 38454
Зарегистрирован: 17 фев 2003, 17:58
Откуда: Caulfeild
Контактная информация:

Re: парсеры/трансляторы на ANTLR никто не писал?

Сообщение Marmot »

MarkM писал(а):[trn]
Ty otvet na vopros znaesh?
[/trn]
Теперь да :-)
попробуй сделай так:

Код: Выделить всё

try{
...
}
catch (SQLException sqle){
  //jdk<1.4  throw new RuntimeException (sqle.getMеssage());
  throw new RuntimeException (sqle);

}
try/catch конечно написать придётся, но и проброс будет...

PS.
Учись правильно вопросы задавать...:-)
MarkM
Пользователь
Сообщения: 113
Зарегистрирован: 24 сен 2003, 21:52

Re: парсеры/трансляторы на ANTLR никто не писал?

Сообщение MarkM »

Marmot писал(а):
MarkM писал(а):[trn]
Ty otvet na vopros znaesh?
[/trn]
Теперь да :-)
попробуй сделай так:

Код: Выделить всё

try{
...
}
catch (SQLException sqle){
  //jdk<1.4  throw new RuntimeException (sqle.getMеssage());
  throw new RuntimeException (sqle);

}
try/catch конечно написать придётся, но и проброс будет...
:? [trn]Nu eto-to ja i tak znal. Mne ohota bylo v "chistom" vide.
Nu da hren s nim, net tak net.
[/trn]
Marmot писал(а): Учись правильно вопросы задавать...:-)
[trn] Учись srazu правильно otvechat'! A to chto, da zachem, da mozhet XML[/trn] :wink:
Аватара пользователя
Marmot
Графоман
Сообщения: 38454
Зарегистрирован: 17 фев 2003, 17:58
Откуда: Caulfeild
Контактная информация:

Re: парсеры/трансляторы на ANTLR никто не писал?

Сообщение Marmot »

MarkM писал(а):[trn] Учись srazu правильно otvechat'! A to chto, da zachem, da mozhet XML[/trn] :wink:
Если бы ты работал с AST или DOM у тебя бы никогда таких проблем не возникло...
MarkM
Пользователь
Сообщения: 113
Зарегистрирован: 24 сен 2003, 21:52

Re: парсеры/трансляторы на ANTLR никто не писал?

Сообщение MarkM »

Marmot писал(а): Если бы ты работал с AST или DOM у тебя бы никогда таких проблем не возникло...
Никогда серьезно не работал с ДОМ или АСТ.
Пробовал с АСТ на АНТЛР. Там после семантического парсинга можно создаеть АСТ.
Сложилось впечатление, что чтобы превратить АСТ в вызов(ы) моего АПИ надо обходить дерево, проверять наличие ветвей и типы значений.
И этот код надо писать ручками.
То же самое с ДОМ. Это я так понимаю.

Есть ли какой способ, чтобы "автоматизировать" процесс превращения АСТ/ДОМ в вызов(ы) АПИ? Типа наложить АСТ с реальными значениями на другое дерево с дефаултными значениями, для получения результирующего дерева, которое потом переводится в вызов АПИ с параметрами?

Пример

BNF
createEntity: "create" "entity" name
"property" value ("property" value ("property" value)?)?;

МойStatement:

Код: Выделить всё

 CREATE ENTITY "myEntity"  PROPERTY property1; 
Actual AST/DOM:
<CREATE_ENTITY type=string value="myEntity">
<PROPERTY>property1</PROPERTY>
</CREATE_ENTITY>

+

Template AST/DOM
<CREATE_ENTITY type=string >
<PROPERTY>defaultProperty1</PROPERTY>
<PROPERTY>defaultProperty2</PROPERTY>
<PROPERTY>defaultProperty3</PROPERTY>
</CREATE_ENTITY>

=

Merged Result AST/DOM
<CREATE_ENTITY type=string value="myEntity">
<PROPERTY>property1</PROPERTY>
<PROPERTY>defaultProperty2</PROPERTY>
<PROPERTY>defaultProperty3</PROPERTY>
</CREATE_ENTITY>

API Call

Код: Выделить всё

createEntity(property1,property2,property3);
Есть ли что-то готовое, стандартное и универсальное или все разборы АСТ/ДОМ надо писать ручками?[/code]
Аватара пользователя
Marmot
Графоман
Сообщения: 38454
Зарегистрирован: 17 фев 2003, 17:58
Откуда: Caulfeild
Контактная информация:

Re: парсеры/трансляторы на ANTLR никто не писал?

Сообщение Marmot »

MarkM писал(а): Есть ли что-то готовое, стандартное и универсальное или все разборы АСТ/ДОМ надо писать ручками?
Ты пойми, любое "стандартное и универсальное" означает - predefined method signatures.
Следовательно, твои exceptions опять "лишние" :-)
Закон природы, блин...

Ручками (вернее ножками :-)), то-же DOM пройти - невелика проблема, тем более что дерево у тебя не такое уж и ветвистое.
А в смысле application maintenance лучше чем XML/DOM ничего и нету...
А ещё можно написать XML Schema и сгенерить Java classes прямо под твои запросы, тогда весь обход превратится в перебор List-a statement-ов :-)
об этом здесь http://castor.exolab.org/sourcegen.html или здесь http://java.sun.com/xml/jaxb/
MarkM
Пользователь
Сообщения: 113
Зарегистрирован: 24 сен 2003, 21:52

Re: парсеры/трансляторы на ANTLR никто не писал?

Сообщение MarkM »

Marmot писал(а):
MarkM писал(а): Есть ли что-то готовое, стандартное и универсальное или все разборы АСТ/ДОМ надо писать ручками?
Ручками (вернее ножками :-)), то-же DOM пройти - невелика проблема, тем более что дерево у тебя не такое уж и ветвистое.
А в смысле application maintenance лучше чем XML/DOM ничего и нету...
А ещё можно написать XML Schema и сгенерить Java classes прямо под твои запросы, тогда весь обход превратится в перебор List-a statement-ов :-)
об этом здесь http://castor.exolab.org/sourcegen.html или здесь http://java.sun.com/xml/jaxb/
То есть ты предлагаешь сделать

Step 1. Command Language translated to AST (by ANTLR generated parser).
Step 2. marshal AST to XML (by custom code?)
Step 3. unmarshal XML to Content Objects (generated by JAXB from XML Schema Lang)
Step 4. ????? what to do with Content Objects? How they will call my API?

Why it is more maintainable than simply calling my API from the ANTLR generated parser?
Ответить