Вы включили ASP.NET, прослеживающий уже? У меня был экземпляр, где это не была сама хранимая процедура SQL, которая была проблемой, это было то, что процедура возвратила 5 000 строк, и приложение пыталось создать связанный с данными ListItems с теми 5 000 объектов, который вызывал проблему.
Вы могли бы изучить время выполнения между функциями веб-приложения также через трассировку для помогания отнести вещей дорожки.
Отвечая на вопрос после того, как нашел лучший способ ...
WS : (' '|'\t')+;
TOKEN : (('A'..'Z') | ('a'..'z'))+;
dttok : 'DT' WS TOKEN;
nntok : 'NN' WS TOKEN;
nounPhrase : (dttok WS nntok);
chunker : nounPhrase ;
Проблема заключалась в том, что я путался между лексером и синтаксическим анализатором (это, по-видимому, очень часто). Элементы верхнего регистра являются лексическими, нижний регистр - синтаксическим анализатором. Теперь это работает. (NB, я изменил NP на NN).
В исходной грамматике, почему бы не включить атрибут, который он запрашивает, скорее всего:
chunker : nounPhrase {System.out.println("chunk found "+"("+$nounPhrase.text+")");};
Каждое из ваших правил ( chunker
- это то, что я могу быстро определить ) имеют связанные с ними атрибуты (дополнительную информацию). Вы можете найти быстрый список различных атрибутов для разных типов правил на http://www.antlr.org/wiki/display/ANTLR3/Attribute+and+Dynamic+Scopes , было бы неплохо если описания были помещены на веб-страницу для каждого из этих атрибутов (например, атрибуты start и stop для правил синтаксического анализатора относятся к токенам из вашего лексера - что позволит вам вернуться к номеру строки и позиции).
Я думаю, что ваше правило фрагментации следует немного изменить, вместо $ nounPhrase
вы должны использовать $ nounPhrase.text
. text
- это атрибут для вашего правила nounPhrase
.
Вы можете также сделать немного другое форматирование, обычно правила парсера (начинаются со строчной буквы) появляются перед лексером правила (начинаются с прописной буквы)
PS. Когда я набираю текст в поле, правило фрагментации начинается с новой строки, но в моем исходном ответе оно не начинается с новой строки.