diff --git a/basis/html/templates/chloe/components/components.factor b/basis/html/templates/chloe/components/components.factor
index 19f2019266..d69dc08537 100644
--- a/basis/html/templates/chloe/components/components.factor
+++ b/basis/html/templates/chloe/components/components.factor
@@ -25,8 +25,7 @@ M: tuple-class component-tag ( tag class -- )
[ compile-component-attrs ] 2bi
[ render ] [code] ;
-: COMPONENT:
+SYNTAX: COMPONENT:
scan-word
[ name>> ] [ '[ _ component-tag ] ] bi
define-chloe-tag ;
- parsing
diff --git a/extra/multi-methods/multi-methods.factor b/extra/multi-methods/multi-methods.factor
index 7c5d5fb431..ec069a4894 100755
--- a/extra/multi-methods/multi-methods.factor
+++ b/extra/multi-methods/multi-methods.factor
@@ -224,8 +224,7 @@ M: no-method error.
] if ;
! Syntax
-: GENERIC:
- CREATE define-generic ; parsing
+SYNTAX: GENERIC: CREATE define-generic ;
: parse-method ( -- quot classes generic )
parse-definition [ 2 tail ] [ second ] [ first ] tri ;
@@ -238,13 +237,13 @@ M: no-method error.
: (METHOD:) ( -- method def ) CREATE-METHOD parse-definition ;
-: METHOD: (METHOD:) define ; parsing
+SYNTAX: METHOD: (METHOD:) define ;
! For compatibility
-: M:
+SYNTAX: M:
scan-word 1array scan-word create-method-in
parse-definition
- define ; parsing
+ define ;
! Definition protocol. We qualify core generics here
QUALIFIED: syntax
diff --git a/extra/peg-lexer/peg-lexer.factor b/extra/peg-lexer/peg-lexer.factor
index 1b5f17df4c..90d2e0e34c 100644
--- a/extra/peg-lexer/peg-lexer.factor
+++ b/extra/peg-lexer/peg-lexer.factor
@@ -9,36 +9,46 @@ CONSULT: assoc-protocol lex-hash hash>> ;
: pos-or-0 ( neg? -- pos/0 ) dup 0 < [ drop 0 ] when ;
:: prepare-pos ( v i -- c l )
- [let | n [ i v head-slice ] |
- v CHAR: \n n last-index -1 or 1+ -
- n [ CHAR: \n = ] count 1+ ] ;
+ [let | n [ i v head-slice ] |
+ v CHAR: \n n last-index -1 or 1+ -
+ n [ CHAR: \n = ] count 1+
+ ] ;
-: store-pos ( v a -- ) input swap at prepare-pos
- lexer get [ (>>line) ] keep (>>column) ;
+: store-pos ( v a -- )
+ input swap at prepare-pos
+ lexer get [ (>>line) ] keep (>>column) ;
-M: lex-hash set-at swap {
- { pos [ store-pos ] }
- [ swap hash>> set-at ] } case ;
+M: lex-hash set-at
+ swap {
+ { pos [ store-pos ] }
+ [ swap hash>> set-at ]
+ } case ;
:: at-pos ( t l c -- p ) t l head-slice [ length ] map sum l 1- + c + ;
-M: lex-hash at* swap {
+M: lex-hash at*
+ swap {
{ input [ drop lexer get text>> "\n" join t ] }
{ pos [ drop lexer get [ text>> ] [ line>> 1- ] [ column>> 1+ ] tri at-pos t ] }
- [ swap hash>> at* ] } case ;
+ [ swap hash>> at* ]
+ } case ;
: with-global-lexer ( quot -- result )
- [ f lrstack set
- V{ } clone error-stack set H{ } clone \ heads set
- H{ } clone \ packrat set ] f make-assoc
+ [
+ f lrstack set
+ V{ } clone error-stack set H{ } clone \ heads set
+ H{ } clone \ packrat set
+ ] f make-assoc
swap bind ; inline
-: parse* ( parser -- ast ) compile
- [ execute [ error-stack get first throw ] unless* ] with-global-lexer
- ast>> ;
+: parse* ( parser -- ast )
+ compile
+ [ execute [ error-stack get first throw ] unless* ] with-global-lexer
+ ast>> ;
-: create-bnf ( name parser -- ) reset-tokenizer [ lexer get skip-blank parse* parsed ] curry
- define word make-parsing ;
+: create-bnf ( name parser -- )
+ reset-tokenizer [ lexer get skip-blank parse* parsed ] curry
+ define-syntax ;
SYNTAX: ON-BNF:
CREATE-WORD reset-tokenizer ";ON-BNF" parse-multiline-string parse-ebnf