X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=runtime%2Fsyntax%2Ftoml.yaml;h=807872d6ae4e8640f77212a049753c327aecd32e;hb=54c23cae72d7237bc898a59f79aad0acffdf0ffe;hp=dcbc1254ecf2ad85f56667824b4c327a3662917a;hpb=47ef864295fa52202214098313b297c8af66654a;p=micro.git diff --git a/runtime/syntax/toml.yaml b/runtime/syntax/toml.yaml index dcbc1254..807872d6 100644 --- a/runtime/syntax/toml.yaml +++ b/runtime/syntax/toml.yaml @@ -4,39 +4,53 @@ detect: filename: "\\.toml" rules: - - statement: "(.*)[[:space:]]=" - - special: "=" - - # Bracket thingies - - special: "(\\[|\\])" - - # Numbers and strings - - constant.number: "\\b([0-9]+|0x[0-9a-fA-F]*)\\b|'.'" - - constant.number: "\\\\([0-7]{3}|x[A-Fa-f0-9]{2}|u[A-Fa-f0-9]{4}|U[A-Fa-f0-9]{8})" - + # Punctuation + - symbol: '[=,\.]' + - symbol.brackets: '[{\[\]}]' + # Strings - constant.string: - start: "\"" - end: "\"" - skip: "\\\\." + start: '"""' + end: '\"{3,5}' + skip: '\\.' rules: - - constant.specialChar: "\\\\." - + - constant.specialChar: '\\u[[:xdigit:]]{4}' + - constant.specialChar: '\\U[[:xdigit:]]{8}' + - constant.specialChar: '\\[btnfr"\\]' - constant.string: - start: "'" - end: "'" - skip: "\\\\." + start: '"' + end: '"' + skip: '\\.' rules: - - constant.specialChar: "\\\\." - + - constant.specialChar: '\\u[[:xdigit:]]{4}' + - constant.specialChar: '\\U[[:xdigit:]]{8}' + - constant.specialChar: '\\[btnfr"\\]' - constant.string: - start: "`" - end: "`" - rules: - - constant.specialChar: "\\\\." - + start: "'''" + end: "'{3,5}" + rules: [] + - constant.string: + start: "'" + end: "'" + rules: [] + # Integer + - constant.number: '[+-]?(\d+_)*\d+\b' + - constant.number: '(0x([[:xdigit:]]+_)*[[:xdigit:]]+|0o([0-7]_)*[0-7]+|0b([01]+_)*[01]+)' + # Float + - constant.number: '[+-]?(\d+_)*\d+\.(\d+_)*\d+' + - constant.number: '[+-]?(\d+_)*\d+(\.(\d+_)*\d+)?[Ee][+-]?(\d+_)*\d+' + - constant.number: '(\+|-)(inf|nan)' + # Bare key, keys starting with a digit or dash are ambiguous with numbers and are skipped + - identifier: '\b[A-Za-z_][A-Za-z0-9_-]*\b' + # Boolean and inf, nan without sign + - constant.bool.true: '\btrue\b' + - constant.bool.false: '\bfalse\b' + - constant.number: '\b(inf|nan)\b' + # Date and Time + - constant: '\d+-\d{2}-\d{2}([T ]\d{2}:\d{2}:\d{2}(\.\d+)?([+-]\d{2}:\d{2}|Z)?)?' + - constant: '\d{2}:\d{2}:\d{2}(\.\d+)?' + # Comments - comment: start: "#" end: "$" rules: - todo: "(TODO|XXX|FIXME):?" -