2017-01-19 8 views
1

Q:Regex синтаксис для поддержки ц/к/KDB + комментарий с помощью JLexer

Что мне нужно с помощью моего лексического анализатора логики? Только регулярное выражение или, может быть, специальные функции lexer?

Где ошибка в моем синтаксисе для q многокоммерческого?

Детали:

Я пытаюсь написать IntelliJ IDEA плагин для к/д/KDB + (wiki, q/kdb+), и мой плагин основан на другом k language idea plugin.

Для начала я пытаюсь написать lexer с помощью JLexer (это стандартный способ для плагина идеи). Мне нужна поддержка q lang comments. И у меня проблемы с многострочными комментариями.

Мой прогибается файл (этот синтаксис работает неустойчиво):

LINE_WS=[\ \t\f] 
WHITE_SPACE={LINE_WS}+ 
NEWLINE=\r|\n|\r\n 
MULTY_COMMENT={NEWLINE} \/ {WHITE_SPACE}* {NEWLINE} (([^\r\n\\][^\r\n]* {NEWLINE})|{NEWLINE})* \\ 
// ... 
<YYINITIAL> { 
    {WHITE_SPACE}    { return com.intellij.psi.TokenType.WHITE_SPACE; } 
    {MULTY_COMMENT}    { return COMMENT; } 
    // ... 

Синтаксис д языка комментарии (see more):

Правильные комментарии:

  • / this is comment

  • x: 1;/after '/' we see comment, spaces are important

  • / this is a comment \

  • / after single "/" - all lines are comment if we don't find: NEW_LINE + "\"

недопустимые комментарии:

  • / this is't a comment, break line is important \

  • x: 1;/ this is't a comment, spaces are important

  • \ this is't a comment /

Ссылки:

ответ

1

Этот код описывает Q-как многострочный комментарий для JFlex:

LINE_WS=[\ \t\f] 
WHITE_SPACE={LINE_WS}+ 
NEWLINE=\r|\n|\r\n 
MULTY_COMMENT=\/ {WHITE_SPACE}* {NEWLINE} (([^\r\n\\][^\r\n]* {NEWLINE})|{NEWLINE})* \\ 
// ... 
<YYINITIAL> { 
    {WHITE_SPACE}    { return com.intellij.psi.TokenType.WHITE_SPACE; } 
    ^{MULTY_COMMENT}    { return COMMENT; } 
    // ... 
0

Скачать и попробовать файл XML здесь: http://www.timestored.com/b/kdb-code-highlighting-in-intellij/

+0

Спасибо Райан Гамильтон. Но это не то, что мне нужно. Beacause этот xml для выделения не поддерживает многострочные комментарии. –

+0

Чтобы быть честным, я бы избегал многострочных комментариев, так как они могут легко ошибиться и привести к тому, что разделы кода не будут работать. Однако, если вы получите комментарии, сообщите мне, и я добавлю ссылку на эту статью. –

 Смежные вопросы

  • Нет связанных вопросов^_^