Commit Graph

142 Commits (b45af1dcd6a205b79816b35fc09e8ba748d51330)

Author SHA1 Message Date
Doug Coleman f8c54fd2bf core: Move new functors to core.
Also move enough to implement them in an ok style. I would prefer to use formatting in core, but it depends on calendar, etc.
2017-11-24 20:06:44 -06:00
Doug Coleman bc285f7072 core: Move multiline and interpolate to core.
caveats: peg.ebnf needs to find :> and let[ in "syntax" not locals anymore.
- You have to define a word ``IN: syntax`` before Factor picks up syntax changes
- You have to add a syntax word to core/bootstrap/syntax.factor
2017-11-24 19:12:04 -06:00
Doug Coleman 43628c8340 core: Move more things to core.
Tricky things:
f props>> == @ _ are not defined in syntax
2017-11-24 18:42:30 -06:00
Doug Coleman 085dbe716f core: Move hashtables.identity and hashtables.wrapped into core. 2017-11-24 16:46:47 -06:00
Doug Coleman 815591e10c factor: m: { a b } -> M\\ a b 2017-10-12 21:22:41 -05:00
Doug Coleman 4b35f2e0d9 factor: fix bootstrap. 2017-10-04 22:39:20 -05:00
Doug Coleman cada003d7f factor: Rename ``M\ array generic`` to ``m: { array generic }``.
The problem with M\ is that it has an arity of 1 where we need it to have arity 2. Also, for multimethods, the \ disables parsing of the array that follows, e.g. ``M\ { string string } multimethod-name`` parses as ``M\ {`` and leaves the rest unparsed. This is obviously wrong.

An alternative syntax that should be implement and looks ok is ``m{ array generic }``
2017-10-01 09:51:31 -05:00
Doug Coleman 29708329ab core: Fix how \words are parsed. 2017-08-31 21:21:15 -05:00
Doug Coleman baa6af4831 factor: All RENAME: and FROM: and EXCLUDE: to have \foo as word names.
Grab bag of other cleanups. tests and docs parse!
2017-08-31 21:21:14 -05:00
Doug Coleman 5a119fa9f7 syntax: Allow postpone: \foo 2017-08-31 21:21:13 -05:00
Doug Coleman a2eb7b854d core: SYNTAX: should allow \FOO words. 2017-08-31 21:21:13 -05:00
Doug Coleman c436f6dbad factor: char: postpone: color: hexcolor: flexhexcolor: decimal: 2017-08-31 21:21:13 -05:00
Doug Coleman 7c7bb93c55 factor: Rename GENERIC# to GENERIC#:.
Fixes #1670.
2017-06-01 13:58:58 -05:00
Doug Coleman e93d8f82bc core: Add TH{ for making assoc tuples.
See #1449.
https://github.com/factor/factor/issues/1449
2017-05-30 20:14:29 -05:00
Björn Lindqvist 0142d0b078 basis/,extra/: using parse-array-def in a bunch of places 2016-12-03 13:23:24 +01:00
John Benediktsson 4d83867cb4 strings.parser: remove parse-short-string, everyone should parse-string. 2016-04-04 15:00:04 -07:00
John Benediktsson 77c256412d lexer: make CHAR: ! work. 2016-03-30 21:21:40 -07:00
John Benediktsson 52a3f6f309 lexer: support universal comments. 2016-03-30 21:09:08 -07:00
John Benediktsson 59caf874a3 syntax: removing #! as a comment character.
We don't need two types of comments and shebang (#!) is handled
natively by the lexer, so the original reason for #! is not valid.
2015-09-09 18:28:08 -07:00
John Benediktsson 399d01f56e strings.parser: finish removing triple-strings.
parse-string => parse-short-string (on the same line)
parse-multiline-string-until => parse-full-string
2015-08-17 19:49:12 -07:00
John Benediktsson ceb75057da change ERROR: words from throw-foo back to foo. 2015-08-13 16:13:05 -07:00
Doug Coleman 02008979d9 factor: Change ERROR: foo ; to define ``throw-foo`` instead of having ``foo`` throw implicitly. The old ``foo`` still throws implicitly because this is a big change to get right in one patch, but it should be removed soon. 2015-08-12 15:26:18 -05:00
Doug Coleman 3d4bc1de1a core: rename parse-call( to parse-call-paren 2015-07-27 09:54:08 -07:00
Doug Coleman 1fcf96cada factor: remove """ string syntax for now. there are HEREDOC:, STRING:, escaping \", and something else soon. 2015-07-25 22:59:56 -07:00
Doug Coleman 117727d444 parser, source-files: you need to bootstrap after this patch.
cleans up some file vs path naming.

file -> current-source-file
file -> current-test-file somewhere else
source-file -> path>source-file
source-file-tuple -> source-file
2015-07-23 22:03:43 -07:00
Doug Coleman 0a7bfd3635 syntax: Add a "syntax" word property for tracking which words are defined with SYNTAX: as opposed to generated syntax words. 2015-06-29 18:45:16 -07:00
Doug Coleman 44e8e7b344 primitives: Change PRIMITIVE: to check that the word is in that vocabulary and the stack effect is correct.
Use PRIMITIVE: in core/ and basis/
2015-06-25 18:02:03 -07:00
Doug Coleman 6e60c811ac core: Rename create to create-word, create-in to create-word-in. 2015-06-08 12:47:35 -07:00
Doug Coleman afcb610960 core: Throw an error when defining MAIN: with a stack effect other than ( -- ). Fixes #1060. 2014-06-06 10:59:48 -07:00
John Benediktsson 5bc1567c05 syntax: adding \b \v and \f escape codes. 2014-06-03 18:04:51 -07:00
Doug Coleman 5fab749dcc words: Change word -> last-word, set-word -> set-last-word. 2013-03-23 16:12:03 -07:00
Doug Coleman 5a9e7cd374 classes.builtin: Add the BUILTIN: keyword which lets builtin classes show up in source files. Probably could use save-location to allow editing, but it seemed to break things. 2013-03-10 12:05:38 -07:00
John Benediktsson 5487480126 core: cleanup USING lists. 2013-03-05 10:34:47 -08:00
Doug Coleman 8637c1c012 hashtables: Enforce shape on hashtable literals. Fixes #568. 2012-08-24 15:11:03 -07:00
Doug Coleman 3507b9bad7 classes:
- Allow methods to dispatch off union{ } and intersection{ } classes.
- Add not{ } anonymous-complement syntax.
- Define class-name for anonymous-union/intersection/complement and maybes, and clean up pprint.
- Change maybe: foo to maybe{ foo }
- Call sort-classes when making anonymous-union/anonymous-intersection classes so that they are canonicalized.
2012-05-03 19:45:30 -07:00
Joe Groff 07abeee9d9 syntax: remove BIN: HEX: OCT: 2011-11-23 20:07:33 -08:00
Doug Coleman 82c5388f68 classes: add syntax for intersection{ and union{ anonymous classes. make classoid a mixin. 2011-11-22 18:49:42 -08:00
Doug Coleman fac17c10ba classes.maybe: move maybe definition from classes.union to classes.maybe 2011-11-22 02:46:36 -08:00
Doug Coleman 067f9830ef classes.union: Define a maybe: word that makes a tuple that acts as an anonymous union for a type and f. Updated all the places we define UNION: ?foo foo POSTPONE: f ;. Fixes #416 and lots of headaches. 2011-11-22 01:56:13 -08:00
Doug Coleman c731dc6edb Rename lookup to lookup-word. 2011-11-06 16:00:00 -08:00
Joe Groff 981862f35e Revert "syntax: make it so PRIMITIVE: verifies primitives"
This reverts commit 200ea70cffc4bdc74a97e4981442161f64cdbaa3.
2011-11-02 13:23:11 -07:00
Joe Groff c0b26a2781 syntax: make it so PRIMITIVE: verifies primitives
It's a bit strange for disparate vocabs to reference words that get created out of thin air during bootstrap, so this lets there be some trace in the seeded vocab source that there was a word created there.
2011-11-02 13:23:09 -07:00
Slava Pestov f827b74a11 Move definition of 't' from syntax to bootstrap/primitives to fix bootstrap, now that 't' really has to be a class early 2011-10-31 00:24:26 -07:00
John Benediktsson beb5b9bf64 hash-sets: separate <hash-set> and >hash-set to match other containers. Fixes #154. 2011-10-19 11:35:25 -07:00
John Benediktsson 80e1c8e3f2 Eliminate duplicate syntax for stack effects "(" no longer drops and is identical to the old "((", which is now removed. 2011-10-18 13:19:39 -07:00
Doug Coleman 181f11faa8 Make M\ throw an error upon lookup failure. Change method -> ?lookup-method, lookup-method is the throwing version of ?lookup-method. Fixes #229. 2011-10-03 15:49:49 -07:00
Doug Coleman 671f19d70f Remove all non-core uses of (scan-token)
Add scan-datum
Add scan-number
Document more words
Fixes #225.
2011-10-02 12:00:08 -07:00
Doug Coleman 76580da5d5 Refactor the lexer/parser to expose friendlier words for scanning tokens. The preferred top-level words now throw an exception on EOF.
CREATE -> scan-new
CREATE-CLASS -> scan-new-class
CREATE-WORD -> scan-new-word
CREATE-GENERIC -> scan-new-generic
scan -> (scan-token)
scan-token now throws on eof
(scan-word) returns word/number/f
scan-word now throws on eof
scan-word-name expects a non-number
Fixes #183.
Fixes #209.
2011-09-29 11:28:28 -07:00
Joe Groff e1390875ca parser, source-files, syntax: have MAIN: store the main entry point in the source-file record in addition to the vocabulary. Have run-file execute the MAIN: word for a file if present after evaluating its contents. 2011-08-17 20:58:09 -07:00
Slava Pestov 8a0525e5ce Add a scan-token word which is like scan, except throws an error on EOF; document scan-object word; mention that scan-token/scan-object are preferred over scan/scan-word 2010-07-06 16:20:08 -04:00