2012-12-19 3 views
3

Я пытаюсь написать свой собственный синтаксис синтаксиса кода, но моя единственная трудность - решить, как начать работать с кодом. Например, чтобы анализировать каждый токен, я должен делать это только с регулярным выражением? Или, может быть, я должен разделить код для каждого пространства? Или для каждой линии? Я знаю, что я должен уметь разделять слова, чтобы предотвратить двойное совпадение. Например, если я хочу найти все ключевые слова, такие как «это, var, in, return и т. Д.», очевидно, что в this.index соответствует индекс также.Напишите мой собственный синтаксис highlighter

Итак, на основе вашего опыта, каковы ваши мнения?

+0

Для этого уже существуют прекрасные решения. Почему вы хотите сделать свой собственный? – Ian

+3

Это может быть для личной разведки –

+0

lan: Потому что мне нужно построить новую для одного из моих проектов. Змей и кофе: Я знаю, но я прошу, чтобы последний ресурс, это означает, что я нахожусь в слепом месте. – koMah

ответ

0

Я бы посоветовал вам взглянуть на существующие решения. Что касается меня - я очень впечатлен этим маркером - http://softwaremaniacs.org/soft/highlight/en/

Он использует плагины для разбора разных языков - у вас может быть хороший опыт в этом вопросе.

+0

Mine - это логический вопрос программирования. Легко создать какой-то рабочий код на основе другого, но никто ничего не делает. Спасибо за ваш ответ, я уже думал об этом, но хочу логическое и безусловное решение. – koMah

+0

Ваш вопрос не очень практичен (умные люди (читайте, как буйство), используя существующие решения). Я просто думаю, что мало их никогда не бывает лишним. Но иногда практическая реализация делает теорию яснее. В этом-то и дело. –

+0

Правильные «умные люди» ... умные люди создали эти проблемы и нашли свои собственные решения, думает первый создатель подсветки синтаксиса. Я все еще не «умный человек», но я хочу стать им. – koMah

1

Это хороший вопрос. Я провел аналогичные исследования, когда разработал собственный язык программирования (только для доказательства концепции). Я исследовал реализацию JSLint и JSMin Дугласом Крокфордом. Я видел, что он символизирует код, читая исходный символ символом. Вы можете увидеть этот подход, например, here и here. На самом деле вам нужно только токенизацию, прежде чем выделять код, поэтому я думаю, что этот подход подойдет лучше всего. После этого вы создадите расширенный парсер, который будет содержать меньше ошибок. Вероятно, у вас также будет большее использование кода при создании маркеров для разных языков.

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