CORE_FORMS |
= |
%w[ lambda let let* letrec syntax-case define-syntax let-syntax letrec-syntax begin define quote if or and cond case do delay quasiquote set! cons force call-with-current-continuation call/cc ] |
IDENT_KIND |
= |
CaseIgnoringWordList.new(:ident). add(CORE_FORMS, :reserved) |
IDENTIFIER |
= |
/[a-zA-Z!@$%&*\/:<=>?~_^][\w!@$%&*\/:<=>?~^.+\-]*|[+-]|\.\.\./ |
|
IDENTIFIER_INITIAL = /[a-z!@\$%&*\/\:<=>\?~_\^]/i
IDENTIFIER_SUBSEQUENT = /#{IDENTIFIER_INITIAL}|\d|\.|+|-/ IDENTIFIER =
/#{IDENTIFIER_INITIAL}#{IDENTIFIER_SUBSEQUENT}*|+|-|\.{3}/
|
EXP |
= |
/#{EXP_MARK}#{SIGN}#{DIGIT}+/ |
PREFIX10 |
= |
/#{RADIX10}?#{EXACTNESS}?|#{EXACTNESS}?#{RADIX10}?/ |
PREFIX16 |
= |
/#{RADIX16}#{EXACTNESS}?|#{EXACTNESS}?#{RADIX16}/ |
PREFIX8 |
= |
/#{RADIX8}#{EXACTNESS}?|#{EXACTNESS}?#{RADIX8}/ |
PREFIX2 |
= |
/#{RADIX2}#{EXACTNESS}?|#{EXACTNESS}?#{RADIX2}/ |
DECIMAL |
= |
/#{DIGIT10}+#+\.#*#{SUFFIX}|#{DIGIT10}+\.#{DIGIT10}*#*#{SUFFIX}|\.#{DIGIT10}+#*#{SUFFIX}|#{UINT10}#{EXP}/ |
UREAL10 |
= |
/#{UINT10}\/#{UINT10}|#{DECIMAL}|#{UINT10}/ |
UREAL16 |
= |
/#{UINT16}\/#{UINT16}|#{UINT16}/ |
UREAL8 |
= |
/#{UINT8}\/#{UINT8}|#{UINT8}/ |
UREAL2 |
= |
/#{UINT2}\/#{UINT2}|#{UINT2}/ |
COMPLEX10 |
= |
/#{REAL10}@#{REAL10}|#{REAL10}\+#{IMAG10}|#{REAL10}-#{IMAG10}|\+#{IMAG10}|-#{IMAG10}|#{REAL10}/ |
COMPLEX16 |
= |
/#{REAL16}@#{REAL16}|#{REAL16}\+#{IMAG16}|#{REAL16}-#{IMAG16}|\+#{IMAG16}|-#{IMAG16}|#{REAL16}/ |
COMPLEX8 |
= |
/#{REAL8}@#{REAL8}|#{REAL8}\+#{IMAG8}|#{REAL8}-#{IMAG8}|\+#{IMAG8}|-#{IMAG8}|#{REAL8}/ |
COMPLEX2 |
= |
/#{REAL2}@#{REAL2}|#{REAL2}\+#{IMAG2}|#{REAL2}-#{IMAG2}|\+#{IMAG2}|-#{IMAG2}|#{REAL2}/ |
NUM10 |
= |
/#{PREFIX10}?#{COMPLEX10}/ |
NUM16 |
= |
/#{PREFIX16}#{COMPLEX16}/ |
NUM |
= |
/#{NUM10}|#{NUM16}|#{NUM8}|#{NUM2}/ |