парсеры/трансляторы на ANTLR никто не писал?
Правила форума
Пожалуйста, ознакомьтесь с правилами данного форума
Пожалуйста, ознакомьтесь с правилами данного форума
-
- Пользователь
- Сообщения: 113
- Зарегистрирован: 24 сен 2003, 21:52
парсеры/трансляторы на ANTLR никто не писал?
вопрос есть.
- Marmot
- Графоман
- Сообщения: 38454
- Зарегистрирован: 17 фев 2003, 17:58
- Откуда: Caulfeild
- Контактная информация:
Re: парсеры/трансляторы на ANTLR никто не писал?
Чего парсим?MarkM писал(а):вопрос есть.
И для чего? Может можно решение попроще найти...
Я это дело знаю, но объяснять не возмусь, у меня пальцы заболят всё печатать
![Smile :-)](./images/smilies/smile.gif)
- папа Карло
- Шарманщик
- Сообщения: 8565
- Зарегистрирован: 17 фев 2003, 15:04
- Откуда: НН -> BC -> WA -> UT -> CA
Re: парсеры/трансляторы на ANTLR никто не писал?
правильно. сложно четырмя пальцами печатать.Marmot писал(а):Чего парсим?MarkM писал(а):вопрос есть.
И для чего? Может можно решение попроще найти...
Я это дело знаю, но объяснять не возмусь, у меня пальцы заболят всё печатать
![Cool :cool2:](./images/smilies/re_07.gif)
PS
![Laughing :lol:](./images/smilies/lol.gif)
- Marmot
- Графоман
- Сообщения: 38454
- Зарегистрирован: 17 фев 2003, 17:58
- Откуда: Caulfeild
- Контактная информация:
Re: парсеры/трансляторы на ANTLR никто не писал?
Как умеем, так и растопыриваемсяпапа Карло писал(а):правильно. сложно четырмя пальцами печатать.Marmot писал(а):Чего парсим?MarkM писал(а):вопрос есть.
И для чего? Может можно решение попроще найти...
Я это дело знаю, но объяснять не возмусь, у меня пальцы заболят всё печатать
PS
![Laughing :lol:](./images/smilies/lol.gif)
То чего Марк спрашивает, может запросто вылится в обсуждение LALR(1) vs LL(k) etc.
Так что, я пожалуй в сторонке постою...
-
- Пользователь
- Сообщения: 113
- Зарегистрирован: 24 сен 2003, 21:52
Re: парсеры/трансляторы на ANTLR никто не писал?
[trn]Dlja chego... pochemu...Marmot писал(а):Чего парсим?MarkM писал(а):вопрос есть.
И для чего? Может можно решение попроще найти...
Я это дело знаю, но объяснять не возмусь, у меня пальцы заболят всё печатать
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 никто не писал?
Марк, а может взять JavaScript вот отсюда : http://www.mozilla.org/rhino/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]
А теперь об ANTLR, я например вопрос так и не понял
![Smile :-)](./images/smilies/smile.gif)
Exceptions где? В теле парсера или в том что ты парсишь?
PS
Если ты по делу ANTLR решил приспособить, я бы не советовал, возни много...
PPS
А если из желания потрахатся, тогда конечо да, только ещё неизвестно кто кого ты его(ANTLR) или он тебя...
-
- Пользователь
- Сообщения: 113
- Зарегистрирован: 24 сен 2003, 21:52
Re: парсеры/трансляторы на ANTLR никто не писал?
[trn]Marmot писал(а): Марк, а может взять JavaScript вот отсюда : http://www.mozilla.org/rhino/
Mne ne nado java script. Specializirovannyj jazychok, bolee pohozhij na DDL ot kakojnibud' BD tipa Orakla
[/trn]
[trn]Marmot писал(а): А теперь об ANTLR, я например вопрос так и не понял
Exceptions где? В теле парсера или в том что ты парсишь?
V tele parsera. V metodah, kotorye sootvetstvujut pravilam.
[/trn]
I need like that
Код: Выделить всё
public void MyRule throws ANTLsomeRexception, SQLexception
Код: Выделить всё
public void MyRule throws ANTLsomeRexception
[trn]Ugu, samomu parser pisat' eshe huzhe.[/trn]Marmot писал(а): PS
Если ты по делу ANTLR решил приспособить, я бы не советовал, возни много...
[/code][/trn]
- Marmot
- Графоман
- Сообщения: 38454
- Зарегистрирован: 17 фев 2003, 17:58
- Откуда: Caulfeild
- Контактная информация:
Re: парсеры/трансляторы на ANTLR никто не писал?
Понятно... изврат это imhoMarkM писал(а): [trn]
Mne ne nado java script. Specializirovannyj jazychok, bolee pohozhij na DDL ot kakojnibud' BD tipa Orakla
[/trn]
Ничего не понял, нафига вызывать DB при парсинге???!!!MarkM писал(а):
[trn]
V tele parsera. V metodah, kotorye sootvetstvujut pravilam.
[/trn]
I need like thatANTLR does like thatКод: Выделить всё
public void MyRule throws ANTLsomeRexception, SQLexception
Код: Выделить всё
public void MyRule throws ANTLsomeRexception
Кто у тебя процессит AST???
Ты ничего не путаешь? Парсинг это парсинг, execution/code generation делается потом, используя AST.
А XML, например, не легче будет использовать???MarkM писал(а): [trn]Ugu, samomu parser pisat' eshe huzhe.[/trn]
[/code][/trn]
![Smile :-)](./images/smilies/smile.gif)
-
- Пользователь
- Сообщения: 113
- Зарегистрирован: 24 сен 2003, 21:52
Re: парсеры/трансляторы на ANTLR никто не писал?
Marmot писал(а):MarkM писал(а): I need like thatANTLR does like thatКод: Выделить всё
public void MyRule throws ANTLsomeRexception, SQLexception
Код: Выделить всё
public void MyRule throws ANTLsomeRexception
[trn]Marmot писал(а): Ничего не понял, нафига вызывать DB при парсинге???!!!
Кто у тебя процессит AST???
Ты ничего не путаешь? Парсинг это парсинг, execution/code generation делается потом, используя AST.
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 никто не писал?
Теперь даMarkM писал(а):[trn]
Ty otvet na vopros znaesh?
[/trn]
![Smile :-)](./images/smilies/smile.gif)
попробуй сделай так:
Код: Выделить всё
try{
...
}
catch (SQLException sqle){
//jdk<1.4 throw new RuntimeException (sqle.getMеssage());
throw new RuntimeException (sqle);
}
PS.
Учись правильно вопросы задавать...
![Smile :-)](./images/smilies/smile.gif)
-
- Пользователь
- Сообщения: 113
- Зарегистрирован: 24 сен 2003, 21:52
Re: парсеры/трансляторы на ANTLR никто не писал?
Marmot писал(а):Теперь даMarkM писал(а):[trn]
Ty otvet na vopros znaesh?
[/trn]
попробуй сделай так:
try/catch конечно написать придётся, но и проброс будет...Код: Выделить всё
try{ ... } catch (SQLException sqle){ //jdk<1.4 throw new RuntimeException (sqle.getMеssage()); throw new RuntimeException (sqle); }
![Confused :?](./images/smilies/confused.gif)
Nu da hren s nim, net tak net.
[/trn]
[trn] Учись srazu правильно otvechat'! A to chto, da zachem, da mozhet XML[/trn]Marmot писал(а): Учись правильно вопросы задавать...
![Wink :wink:](./images/smilies/wink.gif)
- Marmot
- Графоман
- Сообщения: 38454
- Зарегистрирован: 17 фев 2003, 17:58
- Откуда: Caulfeild
- Контактная информация:
Re: парсеры/трансляторы на ANTLR никто не писал?
Если бы ты работал с AST или DOM у тебя бы никогда таких проблем не возникло...MarkM писал(а):[trn] Учись srazu правильно otvechat'! A to chto, da zachem, da mozhet XML[/trn]
-
- Пользователь
- Сообщения: 113
- Зарегистрирован: 24 сен 2003, 21:52
Re: парсеры/трансляторы на ANTLR никто не писал?
Никогда серьезно не работал с ДОМ или АСТ.Marmot писал(а): Если бы ты работал с AST или DOM у тебя бы никогда таких проблем не возникло...
Пробовал с АСТ на АНТЛР. Там после семантического парсинга можно создаеть АСТ.
Сложилось впечатление, что чтобы превратить АСТ в вызов(ы) моего АПИ надо обходить дерево, проверять наличие ветвей и типы значений.
И этот код надо писать ручками.
То же самое с ДОМ. Это я так понимаю.
Есть ли какой способ, чтобы "автоматизировать" процесс превращения АСТ/ДОМ в вызов(ы) АПИ? Типа наложить АСТ с реальными значениями на другое дерево с дефаултными значениями, для получения результирующего дерева, которое потом переводится в вызов АПИ с параметрами?
Пример
BNF
createEntity: "create" "entity" name
"property" value ("property" value ("property" value)?)?;
МойStatement:
Код: Выделить всё
CREATE ENTITY "myEntity" PROPERTY property1;
<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);
- Marmot
- Графоман
- Сообщения: 38454
- Зарегистрирован: 17 фев 2003, 17:58
- Откуда: Caulfeild
- Контактная информация:
Re: парсеры/трансляторы на ANTLR никто не писал?
Ты пойми, любое "стандартное и универсальное" означает - predefined method signatures.MarkM писал(а): Есть ли что-то готовое, стандартное и универсальное или все разборы АСТ/ДОМ надо писать ручками?
Следовательно, твои exceptions опять "лишние"
![Smile :-)](./images/smilies/smile.gif)
Закон природы, блин...
Ручками (вернее ножками
![Smile :-)](./images/smilies/smile.gif)
А в смысле application maintenance лучше чем XML/DOM ничего и нету...
А ещё можно написать XML Schema и сгенерить Java classes прямо под твои запросы, тогда весь обход превратится в перебор List-a statement-ов
![Smile :-)](./images/smilies/smile.gif)
об этом здесь http://castor.exolab.org/sourcegen.html или здесь http://java.sun.com/xml/jaxb/
-
- Пользователь
- Сообщения: 113
- Зарегистрирован: 24 сен 2003, 21:52
Re: парсеры/трансляторы на ANTLR никто не писал?
То есть ты предлагаешь сделать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?