C3 AI Documentation Home

Type File Syntax

This page documents the syntax of the C3 "type" files (.c3typ) in BNF. There is also a list of the keywords.

Note that these are only the syntax rules; additional semantic rules further restrict valid usage.

start

start syntax diagram

type

type syntax diagram

union_anyof

union_anyof syntax diagram

type_modif

  • abstract | private | inline | final | not mixable | not remixable | entity | extendable | not extendable | remix | native

type_modif syntax diagram

type_suffix

type_suffix syntax diagram

default_rt

default_rt syntax diagram

ann_field

ann_field syntax diagram

type_field

type_field syntax diagram

field_mod

  • private | const

field_mod syntax diagram

fkey_ref_type

fkey_ref_type syntax diagram

field_suffix

field_suffix syntax diagram

schema_name

schema_name syntax diagram

schema_suffix

schema_suffix syntax diagram

type_key

type_key syntax diagram

calculated

calculated syntax diagram

translate

translate syntax diagram

ann_enum_field

ann_enum_field syntax diagram

enum_field

enum_field syntax diagram

kw_type

  • kw_base
  • as
  • calc
  • const
  • duck
  • extendable
  • period
  • periodic
  • schedule
  • scheduled
  • stored
  • type
  • union

kw_type syntax diagram

ident

ident syntax diagram

value_type_start

value_type_start syntax diagram

annotations_start

annotations_start syntax diagram

param_types_start

param_types_start syntax diagram

param_types

param_types syntax diagram

param_type

param_type syntax diagram

bind_vars

bind_vars syntax diagram

bind_var

bind_var syntax diagram

bind_restr

bind_restr syntax diagram

extends_

extends_ syntax diagram

mixes

mixes syntax diagram

value_type

value_type syntax diagram

ann_value_type

ann_value_type syntax diagram

data_type

data_type syntax diagram

ann_data_type

ann_data_type syntax diagram

simple_type

simple_type syntax diagram

atom_type

atom_type syntax diagram

basic_type

basic_type syntax diagram

any_type

any_type syntax diagram

prim_type

prim_type syntax diagram

serialized

serialized syntax diagram

ser_rhs_type

ser_rhs_type syntax diagram

prim_types

prim_types syntax diagram

prim_other

  • byte | int16 | int32 | bigint
  • float | double | decimal
  • boolean | number

prim_other syntax diagram

ref_type

ref_type syntax diagram

ref_path

ref_path syntax diagram

bind_meta

bind_meta syntax diagram

ref_var

ref_var syntax diagram

coll_type

coll_type syntax diagram

push_stream_type

push_stream_type syntax diagram

event_stream_type

event_stream_type syntax diagram

tuple_type

tuple_type syntax diagram

tuple_field

tuple_field syntax diagram

simple_ref

simple_ref syntax diagram

vector_type

vector_type syntax diagram

func_type

func_type syntax diagram

lambda_type

lambda_type syntax diagram

func_mod

  • abstract | optional | final | inline | cached | stateful

func_mod syntax diagram

func_mods

func_param

func_param syntax diagram

inherit_from

inherit_from syntax diagram

claim_suffix

claim_suffix syntax diagram

lang_runtime

lang_runtime syntax diagram

lang_only

lang_only syntax diagram

lang_key

  • java | js | py | ts | tsx

lang_key syntax diagram

runtime_ver

runtime_ver syntax diagram

inherit_type

inherit_type syntax diagram

inherit_param

inherit_param syntax diagram

inherit_pt

inherit_pt syntax diagram

return_type

return_type syntax diagram

native_type

native_type syntax diagram

void_type

  • void

void_type syntax diagram

vt_mods

  • '!' | '?' | '!?'

vt_mods syntax diagram

defaultv

defaultv syntax diagram

annotation

annotation syntax diagram

annotations

annotations syntax diagram

ann_values

ann_values syntax diagram

ann_value

ann_value syntax diagram

ann_value_only

ann_value_only syntax diagram

ann_val_lhs

ann_val_lhs syntax diagram

ann_val_rhs

ann_val_rhs syntax diagram

literal

literal syntax diagram

primitive

primitive syntax diagram

object_val

object_val syntax diagram

key_value

key_value syntax diagram

array_val

array_val syntax diagram

datefn

datefn syntax diagram

id_path

id_path syntax diagram

ident_path

ident_path syntax diagram

enum_vals

enum_vals syntax diagram

union_alts

union_alts syntax diagram

union_alt

union_alt syntax diagram

union_elt

union_elt syntax diagram

expr_start

expr_start syntax diagram

expr_top

expr_top syntax diagram

expr_ternary

expr_ternary syntax diagram

expr_or

expr_or syntax diagram

expr_and

expr_and syntax diagram

expr_bitOr

expr_bitOr syntax diagram

expr_bitXOr

expr_bitXOr syntax diagram

expr_bitAnd

expr_bitAnd syntax diagram

expr_equal

expr_equal syntax diagram

expr_comp

expr_comp syntax diagram

expr_shift

expr_shift syntax diagram

expr_add

expr_add syntax diagram

expr_mul

expr_mul syntax diagram

expr_exp

expr_exp syntax diagram

expr_unary

expr_unary syntax diagram

expr_dotcall

expr_dotcall syntax diagram

expr_callargs

expr_callargs syntax diagram

expr_namedarg

expr_namedarg syntax diagram

expr_lambda

expr_lambda syntax diagram

lambda_param

lambda_param syntax diagram

expr_value

expr_value syntax diagram

expr_array

expr_array syntax diagram

expr_object

expr_object syntax diagram

expr_objkv

expr_objkv syntax diagram

kw_base

  • boolean
  • binary
  • byte
  • decimal
  • double
  • float
  • int
  • int16
  • int32
  • bigint
  • json
  • BOOL
  • abstract
  • any
  • cached
  • collection
  • entity
  • enum
  • extends
  • final
  • function
  • inline
  • lambda
  • mixes
  • mixing
  • native
  • optional
  • private
  • property
  • remix
  • stateful
  • stream
  • tuple
  • typed
  • utc
  • void
  • kw_func
  • kw_safe

kw_base syntax diagram

kw_func

kw_func syntax diagram

kw_safe

  • default
  • from
  • in
  • instanceof
  • isA
  • java
  • js
  • py
  • serialized
  • ts
  • tsx

kw_safe syntax diagram

multi_string

multi_string syntax diagram

PRIM_TYPE_DATETIME

  • datetime | date

PRIM_TYPE_DATETIME syntax diagram

VERSION

VERSION syntax diagram

BOOL

  • true | false

BOOL syntax diagram

INT

INT syntax diagram

DEC

DEC syntax diagram

FLOAT

FLOAT syntax diagram

STRING

  • '"' ( STRING_ESC | ~ ( '"' | '\\' | '\n' | '\r' ) ) * '"'
  • '\'' ( STRING_ESC | ~ ( '\'' | '\\' | '\n' | '\r' ) ) * '\''

ID

ID syntax diagram

ID_PATH

  • '\' ? [ID_FIRST](#id_first) [ID_REST](#id_rest) \* ( '.'` ID_FIRST ID_REST * ) +

ID_PATH syntax diagram

WS_WS

  • ( ' ' | '\t' | '\u000C' | '\r' ) +

WS_WS syntax diagram

WS_NL

WS_NL syntax diagram

WS_COMMENT

  • ( '//' ~ ( '\n' | '\r' ) * ( '\r\n' | '\r' | '\n' )
  • '//' ~ ( '\n' | '\r' ) *
  • '/*' ( . ) * '*/' )

WS_COMMENT syntax diagram

ID_FIRST

ID_FIRST syntax diagram

ID_REST

ID_REST syntax diagram

STRING_ESC

LETTER

  • UNICODE_CLASS_LL | UNICODE_CLASS_LU | UNICODE_CLASS_LM | UNICODE_CLASS_LO

LETTER syntax diagram

DIGIT

  • '0'..'9'

DIGIT syntax diagram

DIGITS

DIGITS syntax diagram

HEX_DIGIT

  • DIGIT | 'a'..'f' | 'A'..'F'

HEX_DIGIT syntax diagram

EXP

  • ( e | E ) '-' ? DIGIT +

EXP syntax diagram

Was this page helpful?