Мне нужно некоторое руководство по переписыванию регулярного выражения в ракетке / схеме.Я пытаюсь сделать это r '[_A-Za-z] [_A-Za-z0-9] *' - PullRequest
0 голосов
/ 17 октября 2018

CODE IN RACKET:

(:: (:seq(:or(:* "_")(:+ upper-case)(:+ lower-case)) (:* "_")(:* upper-case)(:* lower-case)(:* digit))) (token-SYM lexeme)

Это регулярное выражение, похоже, не работает для тестовых случаев, таких как:

_ASFFDsfafg_03043435  or  adfdSFISDFIOON_asfDFOIN3055

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

1 Ответ

0 голосов
/ 17 октября 2018

Хмм ... Я думаю, вы можете просто искать

#px"[_A-Za-z][_A-Za-z0-9]*"

Например:

(regexp-match? #px"[_A-Za-z][_A-Za-z0-9]*" "_ASFFDsfafg_03043435")
(regexp-match? #px"[_A-Za-z][_A-Za-z0-9]*" "adfdSFISDFIOON_asfDFOIN3055")

... которые оба оценивают как истинные.

В целом, Racket поддерживает полные регулярные выражения Perl, AFAIK.

Я вижу, что вы, возможно, ищете поддержку в библиотеке анализатора;Я не уверен, каково состояние регулярных выражений в этом случае.

...