Fuzion Logo
fuzion-lang.dev — The Fuzion Language Portal

OPERATOR

'!' '$' '%' '&' '*' '+' '-' '.' ':' '<' '=' '>' '?' '^' '|' '~'

LF

'\r' '\n' '\r' ' '

COMMA

','

LPAREN

'('

RPAREN

')'

BRACEL

'{'

BRACER

'}'

LBRACKET

'['

RBRACKET

']'

SEMI

';'

IDENT

'a' .. 'z' 'A' .. 'Z' 'a' .. 'z' 'A' .. 'Z' '0' .. '9' '_'

NUM_LITERAL

DIGITS_W_DOT EXPONENT

EXPONENT

'E' PLUSMINUS DIGITS 'P' PLUSMINUS DIGITS ε

PLUSMINUS

'+' '-' ε

DIGITS

DEC_DIGIT_ DEC_DIGITS_ '0' 'b' BIN_DIGIT_ BIN_DIGITS_ '0' 'o' OCT_DIGIT_ OCT_DIGITS_ '0' 'd' DEC_DIGIT_ DEC_DIGITS_ '0' 'x' HEX_DIGIT_ HEX_DIGITS_

DIGITS_W_DOT

DIGITS DEC_DIGIT_ DEC_DIGITS_ DEC_TAIL '0' 'b' BIN_DIGIT_ BIN_DIGITS_ BIN_TAIL '0' 'o' OCT_DIGIT_ OCT_DIGITS_ OCT_TAIL '0' 'd' DEC_DIGIT_ DEC_DIGITS_ DEC_TAIL '0' 'x' HEX_DIGIT_ HEX_DIGITS_ HEX_TAIL

UNDERSCORE

'_' ε

BIN_DIGIT

'0' '1'

BIN_DIGIT_

UNDERSCORE BIN_DIGIT

BIN_DIGITS_

BIN_DIGIT_ BIN_DIGITS_ ε

BIN_DIGITS

BIN_DIGIT BIN_DIGITS ε

BIN_TAIL

'.' BIN_DIGITS

OCT_DIGIT

'0' '1' '2' '3' '4' '5' '6' '7'

OCT_DIGIT_

UNDERSCORE OCT_DIGIT

OCT_DIGITS_

OCT_DIGIT_ OCT_DIGITS_ ε

OCT_DIGITS

OCT_DIGIT OCT_DIGITS ε

OCT_TAIL

'.' OCT_DIGITS

DEC_DIGIT

'0' '1' '2' '3' '4' '5' '6' '7' '8' '9'

DEC_DIGIT_

UNDERSCORE DEC_DIGIT

DEC_DIGITS_

DEC_DIGIT_ DEC_DIGITS_ ε

DEC_DIGITS

DEC_DIGIT DEC_DIGITS ε

DEC_TAIL

'.' DEC_DIGITS

HEX_DIGIT

'0' '1' '2' '3' '4' '5' '6' '7' '8' '9' 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' 'r' 's' 't' 'u' 'v' 'w' 'x' 'y' 'z' 'A' 'B' 'C' 'D' 'E' 'F' 'G' 'H' 'I' 'J' 'K' 'L' 'M' 'N' 'O' 'P' 'Q' 'R' 'S' 'T' 'U' 'V' 'W' 'X' 'Y' 'Z'

HEX_DIGIT_

UNDERSCORE HEX_DIGIT

HEX_DIGITS_

HEX_DIGIT_ HEX_DIGITS_ ε

HEX_DIGITS

HEX_DIGIT HEX_DIGITS ε

HEX_TAIL

'.' HEX_DIGITS

COLON

':'

ARROW

'=>'

PIPE

'|'

STAR

'*'

QUESTION

'?'

unit

block EOF

semiOrFlatLF

semi LF

semi

SEMI semi ε

feature

modAndNames routOrField

modAndNames

visibility modifiers featNames

routOrField

routine field

routine

formArgsOpt returnType effects inherits contract implRout

field

returnType contract implFldOrRout

visibility

visiFlag ε

visiFlag

'private' colon 'module' 'private' colon 'public' 'private' 'module' colon 'public' 'module' 'public'

qual

name name dot qual type dot qual

name

IDENT opName 'ternary' QUESTION COLON 'index' LBRACKET '..' RBRACKET 'index' LBRACKET RBRACKET 'set' LBRACKET RBRACKET 'set' IDENT

opName

'infix' op 'prefix' op 'postfix' op

modifiers

modifier modifiers ε

modifier

'redef' 'fixed'

featNames

qual COMMA featNames ε

formArgsOpt

formArgs ε

formArgs

LPAREN argLst RPAREN

argLst

argList ε

argList

argument COMMA argList ε

argument

visibility modifiers argNames argType

argType

type type '...' typeType typeType COLON type ε

typeType

'type' 'type' '...'

argNames

name COMMA argNames ε

returnType

boundType 'value' 'ref' ε

effects

EXCLAMATION typeList ε

EXCLAMATION

'!'

inherits

inherit ε

inherit

COLON inheritanceCallList

inheritanceCallList

inheritanceCall COMMA inheritanceCallList ε

inheritanceCall

call0 expr

pureCall

name actualArgs pureCallTail

call

name actualArgs callTail

indexCall

LBRACKET actualCommas RBRACKET indexTail

indexTail

':=' exprInLine ε

pureCallTail

indexCall pureCallTail dot call pureCallTail ε

callTail

indexCall callTail dot call callTail dot 'env' callTail dot 'type' callTail dot 'this' callTail dot select callTail ε

select

NUM_LITERAL

typeList

type COMMA typeList ε

actualArgs

actualSpaces LPAREN actualCommas RPAREN

actualCommas

actualSome ε

actualSome

operatorExpr actualMore

actualMore

COMMA actualSome ε

actualSpaces

actualSpace actualSpaces ε

bracketTerm

brblock klammer inlineArray

actualSpace

operatorExpr

exprInLine

operatorExpr

operatorExpr

opExpr QUESTION expr COLON expr QUESTION casesBars ε

opExpr

opTail ops opTail op dot call

ops

dotCallOrOp ops dotCallOrOp

opTail

term term ops term ops opTail

klammer

klammerExpr tuple klammerLambd

klammerExpr

LPAREN expr RPAREN

tuple

LPAREN RPAREN LPAREN operatorExpr COMMA operatorExpr RPAREN

klammerLambd

tuple lambda

lambda

'->' block

plainLambda

argNames lambda

inlineArray

LBRACKET RBRACKET LBRACKET cmaSepElmts RBRACKET LBRACKET semiSepElmts RBRACKET

cmaSepElmts

operatorExpr addCmaElmts

addCmaElmts

COMMA cmaSepElmts COMMA ε

semiSepElmts

operatorExpr addSemiElmts

addSemiElmts

SEMI semiSepElmts SEMI ε

term

simpleterm callTail

simpleterm

bracketTerm stringTerm NUM_LITERAL match loop ifexpr callOrFeatOrThis

stringTerm

'&quot;any chars&quot;' '&quot; any chars &dollar;' IDENT stringTermD '&quot; any chars{' block stringTermB

stringTermD

'any chars&quot;' 'any chars&dollar;' IDENT stringTermD 'any chars{' block stringTermB

stringTermB

'}any chars&quot;' '}any chars&dollar;' IDENT stringTermD '}any chars{' block stringTermB

dotCallOrOp

dot call OPERATOR

match

'match' exprInLine cases 'match' exprInLine BRACEL cases BRACER

cases

'|' casesBars casesNoBars

casesNoBars

caze semiOrFlatLF casesNoBars ε

casesBars

caze '|' casesBars ε

caze

caseFldDcl caseTypes caseStar

caseFldDcl

IDENT type caseBlock

caseTypes

typeList caseBlock

caseStar

STAR caseBlock

caseBlock

ARROW ARROW block

block

exprs brblock

brblock

BRACEL exprs BRACER

exprs

expr semiOrFlatLF exprs semiOrFlatLF ε ε

expr

checkexpr assign destructure feature operatorExpr

loop

loopProlog loopBody loopEpilog loopBody loopEpilog loopProlog loopBody loopBody loopProlog loopEpilog

loopProlog

indexVars 'variant' exprInLine indexVars 'variant' exprInLine

loopBody

'while' exprInLine block 'while' exprInLine 'do' block 'do' block

loopEpilog

'until' exprInLine thenPart loopElseBlock 'else' block

indexVars

'for' indexVar semi indexVars

indexVar

visibility modifiers name type implFldInit nextValue implFldInit nextValue type implFldIter implFldIter

implFldIter

'in' exprInLine

nextValue

COMMA exprInLine ε

ifexpr

'if' exprInLine thenPart elseBlock

thenPart

'then' block block

elseBlock

'else' block ε

loopElseBlock

'else' block ε

checkexpr

'check' block

assign

'set' name ':=' exprInLine

destructure

destructr

destructr

'(' argNames ')' ':=' exprInLine

callOrFeatOrThis

anonymous plainLambda call0

call0

universeCall call

universe

'universe'

universeCall

universe dot call

universePureCall

universe dot pureCall

anonymous

'ref' inherit block

contract

require ensure

require

'pre' block 'pre' 'else' block ε

ensure

'post' block 'post' 'then' block ε

invariant

'inv' block ε

implRout

ARROW 'abstract' ARROW 'intrinsic' ARROW 'native' 'is' block ARROW block 'of' block fullStop

implFldOrRout

implRout implFldInit ε

implFldInit

':=' operatorExpr

type

boundType freeType

freeType

name ':' type

boundType

onetype PIPE onetype

onetype

simpletype '->' simpletype pTypeList '->' simpletype pTypeList LPAREN type RPAREN typeTail simpletype

pTypeList

LPAREN typeList RPAREN

pTypeListOpt

pTypeList ε

typeOpt

type ε

simpletype

name typePars typeTail

typeTail

dot simpletype dot 'this' ε

typePars

typeInParens typePars '(' typeList ')' ε

typeInParens

'(' typeInParens ')' type

comma

COMMA

colon

':'

dot

'.'

fullStop

'.'
last changed: 2025-03-14