package cangjie_tpc::prism4cj.languages
public class PrismRust {
public static func create(prism: Prism): Grammar {
let rust: Grammar = GrammarUtils.extendGrammar(
GrammarUtils.require(prism, "cpp"),
"rust",
ArrayList<Token>([
Prism.token("number",
Prism.pattern(
Regex(
"\\b(?:0[xX][\\da-fA-F]+(?:_[\\da-fA-F]+)*|0[bB][01]+(?:_[01]+)*|\\d+(?:_\\d+)*(?:\\.\\d+(?:_\\d+)*)?(?:[eE][+-]?\\d+(?:_\\d+)*)?[fFL]?)\\b"/*cjlint-ignore !G.CHK.04 */
))),
Prism.token("keyword",
Prism.pattern(
Regex(
"\\b(?:as|box|break|const|continue|create|dyn|else|enum|extern|fn|for|if|impl|in|let|loop|macro|match|mod|move|mut|pub|ref|return|Self|self|static|struct|super|trait|type|unsafe|use|where|while|yield|async|await|default|union|try|u8|i8|u16|i16|u32|i32|u64|i64|u128|i128|usize|isize|f32|f64)\\b"/*cjlint-ignore !G.CHK.04 */
))
),
Prism.token("boolean",
Prism.pattern(
Regex(
"\\b(?:true|false)\\b"/*cjlint-ignore !G.CHK.04 */
)
)
),
Prism.token("class-name",
Prism.pattern(Regex("(?<=impl\\s)\\w+")),/*cjlint-ignore !G.CHK.04 */
Prism.pattern(Regex("println!")),/*cjlint-ignore !G.CHK.04 */
Prism.pattern(Regex("assert_eq!")),/*cjlint-ignore !G.CHK.04 */
),
Prism.token("operator",
Prism.pattern(
Regex(
"\\{|\\}|\\[|\\]|\\(|\\)|::|:|\\.\\.\\.|\\.\\.=|\\.\\.|\\.|==|!=|\\|=|[\\^]=?|\\|\\||\\||&&|&=|&|\\*=|\\*|\\/=|\\/|%=|!|%|=>|=|\\+=|\\+|-=|->|-|#|<<=|<=|<<|<|>>=|>=|>>|>|\\?[?]|\\?|~|@|\\$|;|,|_'"/*cjlint-ignore !G.CHK.04 */
))),
Prism.token("shebang", Prism.pattern(Regex("#![\\s]*[^\\[\\s]+")))/*cjlint-ignore !G.CHK.04 */
])
)
return rust
}
}