;;; Regexps galore:
;; Utility regexp used by other regexps to match a Factor symbol name
-(setq-local symbol "\\(\\(?:\\sw\\|\\s_\\|\\s(\\|\\s)\\|\\s\\\\)+\\)")
+(setq-local symbol-nc "\\(?:\\sw\\|\\s_\\|\\s(\\|\\s)\\|\\s\\\\)+")
+(setq-local symbol (format "\\(%s\\)" symbol-nc))
(setq-local ws+ "[ \n\t]+")
(setq-local symbols-to-semicolon "\\([^;\t]*\\)\\(;\\)")
(one-symbol "<[^ >]+>"))
(defconst factor-getter-regex
- (one-symbol "\\(?:\\sw\\|\\s_\\)+>>"))
+ (one-symbol (concat symbol-nc ">>")))
(defconst factor-setter-regex
- (one-symbol ">>\\(?:\\sw\\|\\s_\\)+\\|\\(?:\\sw\\|\\s_\\)+<<"))
+ (one-symbol (format ">>%s\\|%s<<" symbol-nc symbol-nc)))
(defconst factor-stack-effect-regex
"\\( ( [^)]* )\\)\\|\\( (( [^)]* ))\\)")
(4 'factor-font-lock-type-name nil t)
;; A slot is either a single symbol or a sequence along the
;; lines: { foo initial: "bar }
- ("\\(\\(?:\\sw\\|\\s_\\)+\\)\\|\\(?:{[ \n]+\\(\\(?:\\sw\\|\\s_\\)+\\)[^}]+\\)"
+ (,(format
+ "\\(?:{[ \n]+%s[^}]+\\)}\\|%s" symbol symbol)
(factor-find-end-of-def)
nil
(1 'factor-font-lock-symbol nil t)
+USING: accessors ;
+IN: strange
+
+TUPLE: oh\no { and/again initial: "meh" } ;
+
! FUEL Syntax Demo
!
! The purpose of this file is to test that corner cases are
! ! Symbol names
+TUPLE: tup
+ ko
+ get\it
+ { eh\ integer }
+ { oh'ho } ;
+
! All slashes are symbol constituents.
-: hack/slash ( -- x ) 10 ;
+: hack/slash ( t -- x ) ko>> ;
-: slash\hack ( -- y ) 20 ;
+: um ( x y -- ) get\it<< ;
-TUPLE: oh\no ;
+: slash\hack ( m -- y )
+ get\it>> dup >>get\it ;
+
+TUPLE: oh\no { and/again initial: "meh" } ;
! As are quotes
: don't-do-that ( x -- y ) ;
! ! Numbers
{ -55 -0x10 100,00 1,000,000 0x2000,0000 0b01 } drop
+
+! ! Containers
+V{ 1 2 3 } drop
+HS{ 9 8 3 } drop