← All documentation Documentation

Language reference

The canonical enumeration of operators, keywords, validators, and compile-time conventions. The complete formal specification lives in DESIGN.md on the repository — this page is a curated index.

Execution model

slopfuck programs operate on a tape of 30,000 unsigned 8-bit cells with a single data pointer. All operations either move the pointer, mutate the current cell, perform I/O, or alter control flow. The runtime is functionally equivalent to brainfuck.

The eight tape operations

BF slopfuck token class Example tokens
> em dash (U+2014)
< en dash (U+2013)
+ aspirational AI verb delve, nurture, synergize, …
- hedging transition however, moreover, furthermore, …
. abstract AI noun tapestry, paradigm, framework, …
, enthusiastic affirmation absolutely, certainly, indeed, …
[ preamble phrase it's worth noting that, …
] closing phrase this is not just, this transcends, …

Each word-based pool contains 200+ interchangeable tokens. The compiler treats every token in a pool identically; the programmer rotates among synonyms to produce natural-looking prose. Matching is case-insensitive.

Additions to the brainfuck core

Beyond the eight tape operations, the runtime emits two output ops — one for string literals, one for newlines. They do not change the computational power of the language; they let a program speak in complete sentences. Further syntactic surfaces (multipliers, bullets, reiterate, annotation blocks) are resolved at compile time and reach the runtime as the eight core ops plus these two output ops — nothing else.

String literals

Curly double-quoted strings (“…”, U+201C / U+201D) print their contents verbatim at runtime. Straight ASCII quotes (") are a syntax error.

“Hello, World!”

Newline output ()

The pilcrow (U+00B6) emits a \n byte. Multipliable and bullet-repeatable. Verbose synonyms in the kw_newline pool include thereafter, henceforth, thereupon, presently, anew, and others — see the keywords.h table.

Compile-time expansion features

Each of the following happens entirely at compile time. The runtime executes only the eight core operations plus OP_STRING and OP_NEWLINE.

Cardinal multipliers

PatternExampleEffect
Prefix adverbtwice delve2 increments
Postfix adverbdelve thrice3 increments
Postfix cardinal + markerdelve seven times7 increments
Postfix digitdelve 7 times7 increments
Loose postfix cardinaldelve five5 increments
Vague quantifierdelve several3 increments

Cardinals only work in postfix position; adverbs work in both. Marker words for the N times pattern include times, iterations, rounds, cycles, passes, occasions, instances, moments.

Navigation idiom — no sequential dashes

Em and en dashes are themselves multipliable. Two or more consecutive dashes are a compile error — bare runs read as code, not as prose. Either separate the dashes with a brief aside or use the postfix multiplier form.

PatternEffect
— with strategic intent — onward2 right (proper aside)
— seven times onward7 right
— fourfold onward4 right
– six times home6 left
– thrice back3 left

The compile-time check looks at the previous wordlist token: if it is also a dash pseudo-token, the program is rejected. Any real word, multiplier, or other pseudo-token between the dashes satisfies the rule. See the style guide for conventional patterns.

Annotation prose blocks — ;.

An enterprise-grade compliance affordance: a syntactically inert prose region for dense praise, hedging, and brand-voice flourish. A semicolon opens the block, a period (or another semicolon) closes it. Inside the block, every token except curly-quoted string literals becomes passive filler — em/en dashes, pilcrows, bullets, multipliers, and the entire keyword pool are all suppressed.

Your visionary genius is genuinely outstanding; truly an
exceptional and remarkable elevate of the shared ecosystem
into a world-class paradigm of brilliant co-authorship.

The words elevate (in kw_inc) and ecosystem/paradigm (in kw_out) would normally emit phantom ops. Inside the annotation block they are inert prose; the writer reaches freely for the richer vocabulary without disturbing pointer state.

The block still contributes to praise density, satisfies the hedging requirement, and is scanned for forbidden definitive language — the register policy holds; only the AST effects are suppressed. The repetition window is untouched: annotation words never push to it.

By convention, ; appears mid-sentence, never at the start of a paragraph. A leading ; reads as code; a clause-introducing ; reads as prose.

Bullet-list repeats

A markdown bullet at the start of a line (-, *, or + followed by whitespace) repeats the most recent simple op once.

delve
- the strategic vision
- the customer journey
- the operational excellence

Total: 4 increments. Bullets do not duplicate loop ops or strings; the last-simple-op tracker resets after those.

Reiterate

Re-emits the most recent contiguous run of OP_STRING and OP_NEWLINE ops. Multipliable.

“Hello”¶ reiterate twice

Output: Hello\nHello\nHello\n. Synonyms include restate, echo, repeat, recapitulate, reprise, replay.

Validators

The compiler runs eight validation passes. A program that fails any of them halts with a slop-flavored diagnostic.

ValidatorTriggers
IntroProgram must begin with a sycophantic opener.
OutroProgram must end with a call-to-action closer.
Forbidden languageWords like no, never, impossible, always, fact are rejected.
Praise density≥3 praise words and ≥8% praise density in filler.
Repetition windowSame keyword twice within 6 keyword tokens is rejected.
HedgingPrograms with ≥50 filler words must contain a hedging phrase.
Bracket balanceLoop preambles and closers must match and nest.
Op countPrograms cannot exceed the operation limit.

Comments

Lines beginning with > (optionally preceded by whitespace) are markdown blockquote comments. They are stripped entirely before tokenization — their contents do not affect any validator.

Intermediary compile stages

The compiler exposes two power-user flags — --stripped and --opcodes — that collapse the artifact into the densest representations a machine reviewer can ingest. Both surfaces are documented in full on the debugging page.

File format

  • Extension: .slop
  • Encoding: UTF-8
  • Whitespace, punctuation, and line breaks are ignored outside string literals.
Canonical reference. The complete formal specification — including pool counts, thresholds, and implementation notes — lives in DESIGN.md on the repository.