More symbols

This commit is contained in:
Aleksey Kladov 2017-12-30 18:25:37 +03:00
parent fad3e50987
commit 412948c0e2
5 changed files with 47 additions and 2 deletions

View file

@ -25,5 +25,10 @@ Grammar(
"COLON",
"COLONCOLON",
"DOLLAR",
"EQ",
"EQEQ",
"FAT_ARROW",
"NEQ",
"NOT",
]
)

View file

@ -52,6 +52,8 @@ fn next_token_inner(c: char, ptr: &mut Ptr) -> SyntaxKind {
'~' => return TILDE,
'?' => return QUESTION,
'$' => return DOLLAR,
// Multi-byte tokens.
'.' => return match (ptr.next(), ptr.nnext()) {
(Some('.'), Some('.')) => {
ptr.bump();
@ -76,6 +78,24 @@ fn next_token_inner(c: char, ptr: &mut Ptr) -> SyntaxKind {
}
_ => COLON
},
'=' => return match ptr.next() {
Some('=') => {
ptr.bump();
EQEQ
}
Some('>') => {
ptr.bump();
FAT_ARROW
}
_ => EQ,
},
'!' => return match ptr.next() {
Some('=') => {
ptr.bump();
NEQ
}
_ => NOT,
},
_ => (),
}
ERROR

View file

@ -26,8 +26,13 @@ pub const QUESTION: SyntaxKind = SyntaxKind(21);
pub const COLON: SyntaxKind = SyntaxKind(22);
pub const COLONCOLON: SyntaxKind = SyntaxKind(23);
pub const DOLLAR: SyntaxKind = SyntaxKind(24);
pub const EQ: SyntaxKind = SyntaxKind(25);
pub const EQEQ: SyntaxKind = SyntaxKind(26);
pub const FAT_ARROW: SyntaxKind = SyntaxKind(27);
pub const NEQ: SyntaxKind = SyntaxKind(28);
pub const NOT: SyntaxKind = SyntaxKind(29);
static INFOS: [SyntaxInfo; 25] = [
static INFOS: [SyntaxInfo; 30] = [
SyntaxInfo { name: "ERROR" },
SyntaxInfo { name: "IDENT" },
SyntaxInfo { name: "UNDERSCORE" },
@ -53,6 +58,11 @@ static INFOS: [SyntaxInfo; 25] = [
SyntaxInfo { name: "COLON" },
SyntaxInfo { name: "COLONCOLON" },
SyntaxInfo { name: "DOLLAR" },
SyntaxInfo { name: "EQ" },
SyntaxInfo { name: "EQEQ" },
SyntaxInfo { name: "FAT_ARROW" },
SyntaxInfo { name: "NEQ" },
SyntaxInfo { name: "NOT" },
];
pub(crate) fn syntax_info(kind: SyntaxKind) -> &'static SyntaxInfo {

View file

@ -1,3 +1,5 @@
; , ( ) { } [ ] @ # ~ ? $
. .. ... ..=
: ::
= =>
! !=

View file

@ -35,3 +35,11 @@ WHITESPACE 1 "\n"
COLON 1 ":"
WHITESPACE 1 " "
COLONCOLON 2 "::"
WHITESPACE 1 "\n"
EQ 1 "="
WHITESPACE 1 " "
FAT_ARROW 2 "=>"
WHITESPACE 1 "\n"
NOT 1 "!"
WHITESPACE 1 " "
NEQ 2 "!="