From a071e09412d602d184a70b4b1fc0158fafd3e38e Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Sun, 31 Dec 2017 15:29:09 +0300 Subject: Lexer: more symbols --- src/lexer/mod.rs | 13 +++++++++++++ src/syntax_kinds.rs | 20 +++++++++++++++++++- 2 files changed, 32 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/lexer/mod.rs b/src/lexer/mod.rs index d66046ca1..be86416c4 100644 --- a/src/lexer/mod.rs +++ b/src/lexer/mod.rs @@ -59,6 +59,13 @@ fn next_token_inner(c: char, ptr: &mut Ptr) -> SyntaxKind { '~' => return TILDE, '?' => return QUESTION, '$' => return DOLLAR, + '&' => return AMPERSAND, + '|' => return PIPE, + '+' => return PLUS, + '*' => return STAR, + '/' => return SLASH, + '^' => return CARET, + '%' => return PERCENT, // Multi-byte tokens. '.' => return match (ptr.next(), ptr.nnext()) { @@ -103,6 +110,12 @@ fn next_token_inner(c: char, ptr: &mut Ptr) -> SyntaxKind { } _ => NOT, }, + '-' => return if ptr.next_is('>') { + ptr.bump(); + THIN_ARROW + } else { + MINUS + }, // If the character is an ident start not followed by another single // quote, then this is a lifetime name: diff --git a/src/syntax_kinds.rs b/src/syntax_kinds.rs index 4a68acb31..83fabe403 100644 --- a/src/syntax_kinds.rs +++ b/src/syntax_kinds.rs @@ -40,8 +40,17 @@ pub const STRING: SyntaxKind = SyntaxKind(35); pub const RAW_STRING: SyntaxKind = SyntaxKind(36); pub const BYTE_STRING: SyntaxKind = SyntaxKind(37); pub const RAW_BYTE_STRING: SyntaxKind = SyntaxKind(38); +pub const PLUS: SyntaxKind = SyntaxKind(39); +pub const MINUS: SyntaxKind = SyntaxKind(40); +pub const STAR: SyntaxKind = SyntaxKind(41); +pub const SLASH: SyntaxKind = SyntaxKind(42); +pub const CARET: SyntaxKind = SyntaxKind(43); +pub const PERCENT: SyntaxKind = SyntaxKind(44); +pub const AMPERSAND: SyntaxKind = SyntaxKind(45); +pub const PIPE: SyntaxKind = SyntaxKind(46); +pub const THIN_ARROW: SyntaxKind = SyntaxKind(47); -static INFOS: [SyntaxInfo; 39] = [ +static INFOS: [SyntaxInfo; 48] = [ SyntaxInfo { name: "ERROR" }, SyntaxInfo { name: "IDENT" }, SyntaxInfo { name: "UNDERSCORE" }, @@ -81,6 +90,15 @@ static INFOS: [SyntaxInfo; 39] = [ SyntaxInfo { name: "RAW_STRING" }, SyntaxInfo { name: "BYTE_STRING" }, SyntaxInfo { name: "RAW_BYTE_STRING" }, + SyntaxInfo { name: "PLUS" }, + SyntaxInfo { name: "MINUS" }, + SyntaxInfo { name: "STAR" }, + SyntaxInfo { name: "SLASH" }, + SyntaxInfo { name: "CARET" }, + SyntaxInfo { name: "PERCENT" }, + SyntaxInfo { name: "AMPERSAND" }, + SyntaxInfo { name: "PIPE" }, + SyntaxInfo { name: "THIN_ARROW" }, ]; pub(crate) fn syntax_info(kind: SyntaxKind) -> &'static SyntaxInfo { -- cgit v1.2.3