Монако Language Match Пустая строка - PullRequest
0 голосов
/ 12 декабря 2018

Я пытаюсь создать определение языка для редактора Monaco .Язык очень самоуверенный, и я не контролирую компилятор и т. Д.

Экранирующий символ "\" универсален;однострочные комментарии могут быть продолжены до следующей строки, заканчиваясь на "\"

Некоторые примеры с использованием комментариев в стиле C ++:

// This comment \
   continues on the following line

// This one does NOT continue \\
   because the escape char was itself escaped

// This one DOES continue because \\\
   the 1st '\' escapes the 2nd; the 3rd escapes EOL

// This comment continues to the following line \

But the line was empty. This should not be commented.

Я реализовал всю семантику, кромеПоследняя часть, потому что не представляется возможным сопоставить на пустой строке.Наиболее близким я нашел в документации «@eos», но я не могу понять, как его использовать.Вот моя текущая реализация:

comments: [
  [/\/\/$/, 'comment'], // empty single-line comment
  [/\/\//, 'comment', '@comment_cpp'],
],

comment_cpp: [
  [/(?:[^\\]|(?:\\.))+$/, 'comment', '@pop'],
  [/.+$/, 'comment'],
],

Есть ли правило, которое я могу добавить, которое позволит мне "@pop" из правила "@comment_cpp" в пустой строке, так что следующее верно?

// This comment continues to the following line \
   and this one continues to the following empty line \

But this line is not commented

1 Ответ

0 голосов
/ 16 мая 2019

Эта проблема была с тех пор решена;команда Монако добавила поддержку сопоставления на /$/.

https://github.com/microsoft/monaco-editor/issues/1235

...