diff --git a/extra/modern/modern-tests.factor b/extra/modern/modern-tests.factor index c0718a81e2..08740d8d8e 100644 --- a/extra/modern/modern-tests.factor +++ b/extra/modern/modern-tests.factor @@ -1,6 +1,7 @@ ! Copyright (C) 2017 Doug Coleman. ! See http://factorcode.org/license.txt for BSD license. -USING: modern modern.slices multiline tools.test ; +USING: kernel modern modern.out modern.slices multiline +sequences tools.test ; IN: modern.tests { f } [ "" upper-colon? ] unit-test diff --git a/extra/modern/modern.factor b/extra/modern/modern.factor index d6979c3960..985469ac0d 100644 --- a/extra/modern/modern.factor +++ b/extra/modern/modern.factor @@ -1,7 +1,7 @@ ! Copyright (C) 2016 Doug Coleman. ! See http://factorcode.org/license.txt for BSD license. USING: arrays assocs combinators combinators.short-circuit -continuations io.encodings.utf8 io.files kernel make math +constructors continuations io.encodings.utf8 io.files kernel make math math.order modern.paths modern.slices sequences sequences.extras sequences.generalizations sets shuffle splitting strings syntax.modern unicode vocabs.loader ; @@ -10,6 +10,44 @@ IN: modern ERROR: string-expected-got-eof n string ; ERROR: long-opening-mismatch tag open n string ch ; +TUPLE: lexed tokens ; + +TUPLE: bracket < lexed tag payload ; +CONSTRUCTOR: bracket ( tag payload -- obj ) ; + +TUPLE: dbracket < lexed tag payload ; +CONSTRUCTOR: dbracket ( tag payload -- obj ) ; + +TUPLE: brace < lexed tag payload ; +CONSTRUCTOR: brace ( tag payload -- obj ) ; + +TUPLE: dbrace < lexed tag payload ; +CONSTRUCTOR: dbrace ( tag payload -- obj ) ; + +TUPLE: lcolon < lexed tag payload ; +CONSTRUCTOR: lcolon ( tag payload -- obj ) ; + +TUPLE: ucolon < lexed name effect body ; +CONSTRUCTOR: ucolon ( name effect body -- obj ) ; + +TUPLE: dquote < lexed tag payload ; +CONSTRUCTOR: dquote ( tag payload -- obj ) ; + +TUPLE: section < lexed payload ; +CONSTRUCTOR:
section ( payload -- obj ) ; + +TUPLE: named-section < lexed name payload ; +CONSTRUCTOR: named-section ( name payload -- obj ) ; + +TUPLE: backslash < lexed object ; +CONSTRUCTOR: backslash ( object -- obj ) ; + +TUPLE: hashtag < lexed object ; +CONSTRUCTOR: hashtag ( object -- obj ) ; + +TUPLE: token < lexed name ; +CONSTRUCTOR: token ( name -- obj ) ; + ! (( )) [[ ]] {{ }} MACRO:: read-double-matched ( open-ch -- quot: ( n string tag ch -- n' string seq ) ) open-ch dup matching-delimiter {