Полезно ли знать регулярные выражения для создания языка? - PullRequest
2 голосов
/ 27 ноября 2009

Я читаю Flex & Bison от O'Reilly и хотел бы знать, поможет ли предварительное изучение регулярных выражений в разработке языка программирования?

Ответы [ 5 ]

14 голосов
/ 27 ноября 2009

Регулярные выражения могут быть определены с использованием теории формального языка , поэтому они являются дополнительными понятиями.

Было бы неплохо иметь представление о регулярных выражениях и теории формального языка, прежде чем приступить к созданию языка.

Итак, чтобы ответить на ваш логический вопрос: Да .

3 голосов
/ 27 ноября 2009

Регулярные выражения для синтаксиса обычных языков программирования довольно просты, поэтому, строго говоря, вам не нужно быть экспертом по регулярным выражениям для написания компилятора. С другой стороны, regexp относится к базовым навыкам программирования, поэтому я бы сказал, что вам нужно знать их ... почти для всего.

1 голос
/ 27 ноября 2009

Я бы так сказал. Похоже, вы наткнулись на сканер Flex в примере 1.3 Flex & Bison (стр. 5):

/* recognize tokens for the calculator and print them out */
%%
"+"      { printf("PLUS\n"); }
"-"      { printf("MINUS\n"); }
"*"      { printf("TIMES\n"); }
"/"      { printf("DIVIDE\n"); }
"|"      { printf("ABS\n"); }
[0-9]+   { printf("NUMBER %s\n", yytext); }
\n       { printf("NEWLINE\n"); }
[ \t]    { }
.        { printf("Mystery character %s\n", yytext); }
%%

Как вы уже видели, NUMBER, пробел и загадочный символ определяются с помощью простых регулярных выражений (ну, другие тоже, но они не очень интересны). Ваш язык программирования, несомненно, будет использовать другие регулярные выражения (например, подумайте о токенах для шестнадцатеричных литералов, восьмеричных литералов, чисел с плавающей запятой / double и комментариев в C / C ++ / Java). Они также являются полезной техникой для программирования в целом, поэтому я бы хотел узнать кое-что о них сейчас.

0 голосов
/ 27 ноября 2009

Может быть, я не в курсе, потому что другие ответчики думают, что вы спрашиваете о PCRE или о чем-то подобном. Но если вы говорите об изобретении языка, то регулярные выражения примерно так же важны, как синтаксис и все остальное.

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

0 голосов
/ 27 ноября 2009

Если вы создавали интерпретируемый язык, вы можете использовать регулярные выражения для идентификации различных атомов в строке кода.

...