diff --git a/extra/modern/compiler/compiler.factor b/extra/modern/compiler/compiler.factor new file mode 100644 index 0000000000..9da11528e2 --- /dev/null +++ b/extra/modern/compiler/compiler.factor @@ -0,0 +1,121 @@ +! Copyright (C) 2017 Doug Coleman. +! See http://factorcode.org/license.txt for BSD license. +USING: arrays assocs combinators combinators.short-circuit fry +kernel lexer modern namespaces sequences sets strings ; +IN: modern.compiler + +<< +SYMBOL: left-decorators +left-decorators [ HS{ } clone ] initialize +>> +<< +: make-left-decorator ( string -- ) + left-decorators get adjoin ; + +>> +<< +SYNTAX: \LEFT-DECORATOR: scan-token make-left-decorator ; +>> + +LEFT-DECORATOR: delimiter +LEFT-DECORATOR: deprecated +LEFT-DECORATOR: final +LEFT-DECORATOR: flushable +LEFT-DECORATOR: foldable +LEFT-DECORATOR: inline +LEFT-DECORATOR: recursive + +: left-decorator? ( obj -- ? ) + left-decorators get in? ; + +<< +SYMBOL: arities +arities [ H{ } clone ] initialize +>> +<< +: make-arity ( n string -- ) + arities get set-at ; +>> +<< +SYNTAX: \ARITY: scan-token scan-token swap make-arity ; +>> + +ARITY: \ALIAS: 2 +ARITY: \ARITY: 2 +ARITY: \BUILTIN: 1 +ARITY: \CONSTANT: 2 +ARITY: \DEFER: 1 +ARITY: \GENERIC#: 3 +ARITY: \GENERIC: 2 +ARITY: \HOOK: 3 +ARITY: \IN: 1 +ARITY: \INSTANCE: 2 +ARITY: \MAIN: 1 +ARITY: \MATH: 1 +ARITY: \MIXIN: 1 +ARITY: \PRIMITIVE: 2 +ARITY: \QUALIFIED-WITH: 2 +ARITY: \QUALIFIED: 1 +ARITY: \RENAME: 3 +ARITY: \SINGLETON: 1 +ARITY: \SLOT: 1 +ARITY: \SYMBOL: 1 +ARITY: \UNUSE: 1 +ARITY: \USE: 1 + +: get-arity ( string -- n/f ) + arities get at ; + +<< +SYMBOL: variable-arities +variable-arities [ H{ } clone ] initialize +>> +<< +: make-variable-arity ( n string -- ) + variable-arities get set-at ; +>> +<< +SYNTAX: \VARIABLE-ARITY: scan-token scan-token swap make-arity ; +>> + +VARIABLE-ARITY: \EXCLUDE: 2 +VARIABLE-ARITY: \FROM: 2 +VARIABLE-ARITY: \INTERSECTION: 1 +VARIABLE-ARITY: \PREDICATE: 3 +VARIABLE-ARITY: \SYNTAX: 1 +VARIABLE-ARITY: \TUPLE: 1 +VARIABLE-ARITY: \UNION: 1 +VARIABLE-ARITY: \WORD: 2 + +VARIABLE-ARITY: \