Introduces fluxc/src/diagnostics.rs with Level (Critical, Error,
Warning, Note), Label (Primary/Secondary with optional message), and
Diagnostic types. Diagnostic::render(src, filename) produces
rustc-style output: colored header, --> file:line:col pointer, source
line with gutter, and ^ / - underlines aligned to the offending span.
Replaces the flat ParseError struct in the parser; all five error
sites now emit Diagnostic values with source-pointing labels.
Introduces the fluxc Rust crate with the first two compiler stages:
- token.rs: define_tokens! macro generates TokenKind enum and its
Display impl from a single table covering all Flux tokens
(literals, keywords, operators, punctuation, Eof/Unknown).
Span (half-open u32 byte range) and Token<'src> (kind + span +
zero-copy text slice) round out the module.
- lexer.rs: Lexer<'src> produces Token<'src> from a source &str.
Skips whitespace, // line comments, and /* */ block comments.
Handles all integer bases (decimal, hex, octal, binary with _
separators), floats (fractional + exponent), string/char literals
with escape sequences, and Unicode identifiers via unicode-xid.
Implements Iterator<Item = Token> and includes 17 unit tests.
Also adds .gitignore (ignores fluxc/target) and expands
examples/fibonacci.flx with an iterative variant.
Add the LL(1) context-free grammar (GRAMMAR.ebnf), token and syntax
reference (SYNTAX.md), LL(1) verification tool (ll1_check.py), and a
fibonacci example demonstrating the language.