Changing comments to use //, /*

This commit is contained in:
greg 2018-03-17 19:12:58 -07:00
parent ad8d2b22cd
commit 7a606980cb
3 changed files with 12 additions and 7 deletions

View File

@ -67,7 +67,7 @@ lazy_static! {
"-" => (Func(bx!(Const(Int)), bx!(Func(bx!(Const(Int)), bx!(Const(Int))))), (), 10), "-" => (Func(bx!(Const(Int)), bx!(Func(bx!(Const(Int)), bx!(Const(Int))))), (), 10),
"*" => (Func(bx!(Const(Int)), bx!(Func(bx!(Const(Int)), bx!(Const(Int))))), (), 20), "*" => (Func(bx!(Const(Int)), bx!(Func(bx!(Const(Int)), bx!(Const(Int))))), (), 20),
"/" => (Func(bx!(Const(Int)), bx!(Func(bx!(Const(Int)), bx!(Const(Float))))), (), 20), "/" => (Func(bx!(Const(Int)), bx!(Func(bx!(Const(Int)), bx!(Const(Float))))), (), 20),
"//" => (Func(bx!(Const(Int)), bx!(Func(bx!(Const(Int)), bx!(Const(Int))))), (), 20), "//" => (Func(bx!(Const(Int)), bx!(Func(bx!(Const(Int)), bx!(Const(Int))))), (), 20), //TODO change this to `quot`
"%" => (Func(bx!(Const(Int)), bx!(Func(bx!(Const(Int)), bx!(Const(Int))))), (), 20), "%" => (Func(bx!(Const(Int)), bx!(Func(bx!(Const(Int)), bx!(Const(Int))))), (), 20),
"++" => (Func(bx!(Const(StringT)), bx!(Func(bx!(Const(StringT)), bx!(Const(StringT))))), (), 30), "++" => (Func(bx!(Const(StringT)), bx!(Func(bx!(Const(StringT)), bx!(Const(StringT))))), (), 30),
"^" => (Func(bx!(Const(Int)), bx!(Func(bx!(Const(Int)), bx!(Const(Int))))), (), 20), "^" => (Func(bx!(Const(Int)), bx!(Func(bx!(Const(Int)), bx!(Const(Int))))), (), 20),

View File

@ -550,6 +550,7 @@ impl Parser {
Operator(op) => BinOp::get_precedence(&*op), Operator(op) => BinOp::get_precedence(&*op),
Period => BinOp::get_precedence("."), Period => BinOp::get_precedence("."),
Pipe => BinOp::get_precedence("|"), Pipe => BinOp::get_precedence("|"),
Slash => BinOp::get_precedence("/"),
_ => break, _ => break,
}; };

View File

@ -15,6 +15,7 @@ pub enum TokenType {
Pipe, Pipe,
Comma, Period, Colon, Underscore, Comma, Period, Colon, Underscore,
Slash,
Operator(Rc<String>), Operator(Rc<String>),
DigitGroup(Rc<String>), HexLiteral(Rc<String>), BinNumberSigil, DigitGroup(Rc<String>), HexLiteral(Rc<String>), BinNumberSigil,
@ -99,7 +100,7 @@ impl Token {
} }
} }
const OPERATOR_CHARS: [char; 19] = ['!', '$', '%', '&', '*', '+', '-', '.', '/', ':', '<', '>', '=', '?', '@', '^', '|', '~', '`']; const OPERATOR_CHARS: [char; 18] = ['!', '$', '%', '&', '*', '+', '-', '.', ':', '<', '>', '=', '?', '@', '^', '|', '~', '`'];
fn is_operator(c: &char) -> bool { fn is_operator(c: &char) -> bool {
OPERATOR_CHARS.iter().any(|x| x == c) OPERATOR_CHARS.iter().any(|x| x == c)
} }
@ -116,16 +117,19 @@ pub fn tokenize(input: &str) -> Vec<Token> {
while let Some((line_idx, ch_idx, c)) = input.next() { while let Some((line_idx, ch_idx, c)) = input.next() {
let cur_tok_type = match c { let cur_tok_type = match c {
'#' => { '/' => match input.peek() {
if let Some(&(_, _, '{')) = input.peek() { Some(&(_, _, '/')) => {
} else {
while let Some((_, _, c)) = input.next() { while let Some((_, _, c)) = input.next() {
if c == '\n' { if c == '\n' {
break; break;
} }
} }
} continue;
continue; },
Some(&(_, _, '*')) => {
continue
},
_ => Slash
}, },
c if c.is_whitespace() && c != '\n' => continue, c if c.is_whitespace() && c != '\n' => continue,
'\n' => Newline, ';' => Semicolon, '\n' => Newline, ';' => Semicolon,