Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Errors ¶
type Errors struct {
ChildErrors []error
// Source is the original blueprint-language source. Optional; when set,
// Error() renders a source-snippet under each child diagnostic.
Source string
}
Errors aggregates the diagnostics collected across lexing and parsing into a single returnable error. When Source is non-empty, each child error is rendered with a source snippet showing the offending line and a caret column-aligned under the column the error points at.
type LexError ¶
LexError represents a single error encountered during lexing, with a message and source position.
type LexErrors ¶
LexErrors represents multiple errors encountered during lexing, with a message and a list of child errors.
type ParseError ¶
ParseError represents a single error encountered during parsing, with a message and source position.
func (*ParseError) Error ¶
func (e *ParseError) Error() string
type Token ¶
Token is a single lexical token carrying its source position range. Start is inclusive and End is exclusive (the position immediately after the token's final rune).
func Tokenize ¶
Tokenize lexes a blueprint language source string into its full token stream, terminated by a single TokenEOF token. Unlike ParseString, the stream preserves comments and newlines, so callers such as a language server can reconstruct a concrete syntax tree for features like completion and document symbols.
The token slice is always returned, even on lexical errors. This allows a partial CST to be built for an in-progress edit. Any lexical errors are aggregated into the returned error, which is a *Errors envelope (the same type ParseString returns) or nil when lexing succeeds.
type TokenType ¶
type TokenType string
TokenType identifies the kind of a lexical Token produced by the lexer.
const ( TokenLeftBracket TokenType = "leftBracket" TokenRightBracket TokenType = "rightBracket" TokenLeftParen TokenType = "leftParen" TokenRightParen TokenType = "rightParen" TokenLeftBrace TokenType = "leftBrace" TokenRightBrace TokenType = "rightBrace" TokenColon TokenType = "colon" TokenAssign TokenType = "assign" TokenComma TokenType = "comma" TokenPeriod TokenType = "period" TokenEq TokenType = "eq" TokenNeq TokenType = "neq" TokenLt TokenType = "lt" TokenGt TokenType = "gt" TokenLte TokenType = "lte" TokenGte TokenType = "gte" TokenAnd TokenType = "and" TokenOr TokenType = "or" TokenNot TokenType = "not" TokenSlash TokenType = "slash" TokenStar TokenType = "star" TokenIntLiteral TokenType = "intLiteral" TokenFloatLiteral TokenType = "floatLiteral" TokenBoolLiteral TokenType = "boolLiteral" TokenNoneLiteral TokenType = "noneLiteral" TokenStringStart TokenType = "stringStart" TokenStringEnd TokenType = "stringEnd" TokenStringLiteral TokenType = "stringLiteral" TokenMultilineStringLiteral TokenType = "multilineStringLiteral" TokenInterpolationStart TokenType = "interpolationStart" TokenInterpolationEnd TokenType = "interpolationEnd" TokenNewline TokenType = "newline" TokenComment TokenType = "comment" TokenIdent TokenType = "identifier" TokenKeywordVariables TokenType = "keywordVariables" TokenKeywordValues TokenType = "keywordValues" TokenKeywordDatasources TokenType = "keywordDatasources" TokenKeywordResources TokenType = "keywordResources" TokenKeywordChildren TokenType = "keywordChildren" TokenKeywordElem TokenType = "keywordElem" TokenKeywordI TokenType = "keywordI" TokenKeywordVariable TokenType = "keywordVariable" TokenKeywordValue TokenType = "keywordValue" TokenKeywordData TokenType = "keywordData" TokenKeywordResource TokenType = "keywordResource" TokenKeywordInclude TokenType = "keywordInclude" TokenKeywordExport TokenType = "keywordExport" TokenKeywordMetadata TokenType = "keywordMetadata" TokenKeywordSpec TokenType = "keywordSpec" TokenKeywordSelect TokenType = "keywordSelect" TokenKeywordFilter TokenType = "keywordFilter" TokenKeywordForeach TokenType = "keywordForeach" TokenKeywordAs TokenType = "keywordAs" TokenKeywordBy TokenType = "keywordBy" TokenKeywordLabel TokenType = "keywordLabel" TokenKeywordVersion TokenType = "keywordVersion" TokenKeywordTransform TokenType = "keywordTransform" TokenKeywordNot TokenType = "keywordNot" TokenKeywordIn TokenType = "keywordIn" TokenKeywordHas TokenType = "keywordHas" TokenKeywordKey TokenType = "keywordKey" TokenKeywordContains TokenType = "keywordContains" TokenKeywordStarts TokenType = "keywordStarts" TokenKeywordWith TokenType = "keywordWith" TokenKeywordEnds TokenType = "keywordEnds" TokenKeywordString TokenType = "keywordString" TokenKeywordInteger TokenType = "keywordInteger" TokenKeywordFloat TokenType = "keywordFloat" TokenKeywordBoolean TokenType = "keywordBoolean" TokenKeywordArray TokenType = "keywordArray" TokenKeywordObject TokenType = "keywordObject" TokenEOF TokenType = "eof" )
Token kinds produced by the lexer. Consumers building a concrete syntax tree from the token stream (e.g. a language server) will use these.