Clarify differences between [] and {}
This commit is contained in:
parent
107a7d996e
commit
5e58cceae7
@ -1,6 +1,11 @@
|
|||||||
use std::convert::TryFrom;
|
use std::convert::TryFrom;
|
||||||
|
use std::default::Default;
|
||||||
|
use std::collections::HashMap;
|
||||||
use std::fmt::{self, Display};
|
use std::fmt::{self, Display};
|
||||||
|
|
||||||
|
use crate::Token;
|
||||||
|
use crate::mixin::Mixin;
|
||||||
|
|
||||||
#[derive(Copy, Clone, Debug, Eq, PartialEq)]
|
#[derive(Copy, Clone, Debug, Eq, PartialEq)]
|
||||||
pub enum Symbol {
|
pub enum Symbol {
|
||||||
/// .
|
/// .
|
||||||
@ -16,13 +21,13 @@ pub enum Symbol {
|
|||||||
/// )
|
/// )
|
||||||
CloseParen,
|
CloseParen,
|
||||||
/// {
|
/// {
|
||||||
OpenBrace,
|
OpenCurlyBrace,
|
||||||
/// }
|
/// }
|
||||||
CloseBrace,
|
CloseCurlyBrace,
|
||||||
/// [
|
/// [
|
||||||
OpenBracket,
|
OpenSquareBrace,
|
||||||
/// ]
|
/// ]
|
||||||
CloseBracket,
|
CloseSquareBrace,
|
||||||
/// ,
|
/// ,
|
||||||
Comma,
|
Comma,
|
||||||
/// +
|
/// +
|
||||||
@ -68,10 +73,10 @@ impl Display for Symbol {
|
|||||||
Symbol::Dollar => write!(f, "$"),
|
Symbol::Dollar => write!(f, "$"),
|
||||||
Symbol::OpenParen => write!(f, "("),
|
Symbol::OpenParen => write!(f, "("),
|
||||||
Symbol::CloseParen => write!(f, "),"),
|
Symbol::CloseParen => write!(f, "),"),
|
||||||
Symbol::OpenBrace => write!(f, "{{"),
|
Symbol::OpenCurlyBrace => write!(f, "{{"),
|
||||||
Symbol::CloseBrace => write!(f, "}}"),
|
Symbol::CloseCurlyBrace => write!(f, "}}"),
|
||||||
Symbol::OpenBracket => write!(f, "["),
|
Symbol::OpenSquareBrace => write!(f, "["),
|
||||||
Symbol::CloseBracket => write!(f, "]"),
|
Symbol::CloseSquareBrace => write!(f, "]"),
|
||||||
Symbol::Comma => write!(f, ","),
|
Symbol::Comma => write!(f, ","),
|
||||||
Symbol::Plus => write!(f, "+"),
|
Symbol::Plus => write!(f, "+"),
|
||||||
Symbol::Minus => write!(f, "-"),
|
Symbol::Minus => write!(f, "-"),
|
||||||
@ -104,10 +109,10 @@ impl TryFrom<char> for Symbol {
|
|||||||
'$' => Ok(Symbol::Dollar),
|
'$' => Ok(Symbol::Dollar),
|
||||||
'(' => Ok(Symbol::OpenParen),
|
'(' => Ok(Symbol::OpenParen),
|
||||||
')' => Ok(Symbol::CloseParen),
|
')' => Ok(Symbol::CloseParen),
|
||||||
'{' => Ok(Symbol::OpenBrace),
|
'{' => Ok(Symbol::OpenCurlyBrace),
|
||||||
'}' => Ok(Symbol::CloseBrace),
|
'}' => Ok(Symbol::CloseCurlyBrace),
|
||||||
'[' => Ok(Symbol::OpenBracket),
|
'[' => Ok(Symbol::OpenSquareBrace),
|
||||||
']' => Ok(Symbol::CloseBracket),
|
']' => Ok(Symbol::CloseSquareBrace),
|
||||||
',' => Ok(Symbol::Comma),
|
',' => Ok(Symbol::Comma),
|
||||||
'+' => Ok(Symbol::Plus),
|
'+' => Ok(Symbol::Plus),
|
||||||
'-' => Ok(Symbol::Minus),
|
'-' => Ok(Symbol::Minus),
|
||||||
@ -461,3 +466,24 @@ impl Display for Pos {
|
|||||||
write!(f, "line:{} col:{}", self.line, self.column)
|
write!(f, "line:{} col:{}", self.line, self.column)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, Default)]
|
||||||
|
pub struct Scope {
|
||||||
|
pub vars: HashMap<String, Vec<Token>>,
|
||||||
|
pub mixins: HashMap<String, Mixin>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Scope {
|
||||||
|
#[must_use]
|
||||||
|
pub fn new() -> Self {
|
||||||
|
Self {
|
||||||
|
vars: HashMap::new(),
|
||||||
|
mixins: HashMap::new(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn merge(&mut self, other: Scope) {
|
||||||
|
self.vars.extend(other.vars);
|
||||||
|
self.mixins.extend(other.mixins);
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user