正则表达式语言中生成单词及应用
1. 正则表达式生成二进制数
在正则表达式的应用中,我们可以基于正则表达式生成特定规则的单词。以生成二进制数为例,我们有如下代码:
#lang fsm
;; [natnum>0] →word
;; Purpose: Generate a binary number without leading zeroes,
;; unless its 0, of length <= MAX-LENGTH
(define (generate-bn . n)
(define MAX-KS-REPS (if (null? n) 10 (first n)))
;; regexp →word
;; Purpose: Generate a word representing a valid binary number,
;; such that the number of Kleene star repetitions is
;; in [0..MAX-KS-REPS]
(define (gen-word r)
(cond [(singleton-regexp? r) (convert-singleton r)]
[(concat-regexp? r)
(let [(w1 (gen-word (concat-regexp-r1 r)))
(w2 (gen-word (concat-regexp-r2 r)))]
(append w1 w2))]
[(union-reg
超级会员免费看
订阅专栏 解锁全文

10万+

被折叠的 条评论
为什么被折叠?



