add true and false keywords

main
anna 2 years ago
parent 0620ce0468
commit 8bd25a3c6b
Signed by: fef
GPG Key ID: EC22E476DC2D3D84

@ -449,6 +449,8 @@ impl Parser {
Ok(tree::Node::Int(num))
}
token::Kind::StringLiteral => Ok(tree::Node::String(token.raw)),
token::Kind::TrueKeyword => Ok(tree::Node::Bool(true)),
token::Kind::FalseKeyword => Ok(tree::Node::Bool(false)),
token::Kind::OBracket => self.parse_array(),
_ => self.syntax_error(format!("Unexpected token {}", token.kind), &token),
}

@ -11,6 +11,7 @@ pub enum Node {
Ident(String),
DepList(Box<Node>),
SourceList(Box<Node>),
Bool(bool),
Int(i128),
String(String),
Array(Vec<Node>),
@ -73,9 +74,7 @@ pub enum Operator {
Minus,
MinusEq,
Asterisk,
AsteriskAsterisk,
AsteriskEq,
AsteriskAsteriskEq,
Slash,
SlashEq,
Percent,
@ -160,6 +159,10 @@ impl fmt::Display for Node {
"{}",
match self {
Node::Ident(name) => name.as_str(),
Node::Bool(b) => {
tmp = format!("{}", b);
tmp.as_str()
}
Node::Int(i) => {
tmp = format!("{}", i);
tmp.as_str()
@ -203,9 +206,7 @@ impl Operator {
token::Kind::Minus => Ok(Operator::Minus),
token::Kind::MinusEq => Ok(Operator::MinusEq),
token::Kind::Asterisk => Ok(Operator::Asterisk),
token::Kind::AsteriskAsterisk => Ok(Operator::AsteriskAsterisk),
token::Kind::AsteriskEq => Ok(Operator::AsteriskEq),
token::Kind::AsteriskAsteriskEq => Ok(Operator::AsteriskAsteriskEq),
token::Kind::Slash => Ok(Operator::Slash),
token::Kind::SlashEq => Ok(Operator::SlashEq),
token::Kind::Percent => Ok(Operator::Percent),
@ -243,9 +244,7 @@ impl Operator {
Operator::Minus => "-",
Operator::MinusEq => "-=",
Operator::Asterisk => "*",
Operator::AsteriskAsterisk => "**",
Operator::AsteriskEq => "*=",
Operator::AsteriskAsteriskEq => "**=",
Operator::Slash => "/",
Operator::SlashEq => "/=",
Operator::Percent => "%",

@ -35,14 +35,16 @@ const fn kw(raw: &'static str, kind: token::Kind) -> KeywordMap {
KeywordMap { raw, kind }
}
static KEYWORDS: [KeywordMap; 8] = [
kw("else", token::Kind::ElseKeyword),
static KEYWORDS: [KeywordMap; 10] = [
kw("depend", token::Kind::DependKeyword),
kw("else", token::Kind::ElseKeyword),
kw("false", token::Kind::FalseKeyword),
kw("if", token::Kind::IfKeyword),
kw("include", token::Kind::IncludeKeyword),
kw("set", token::Kind::SetKeyword),
kw("source", token::Kind::SourceKeyword),
kw("target", token::Kind::TargetKeyword),
kw("true", token::Kind::TrueKeyword),
kw("type", token::Kind::TypeKeyword),
];

@ -68,13 +68,15 @@ pub enum Kind {
Percent,
PercentEq,
ElseKeyword,
DependKeyword,
ElseKeyword,
FalseKeyword,
IfKeyword,
IncludeKeyword,
TargetKeyword,
SetKeyword,
SourceKeyword,
TargetKeyword,
TrueKeyword,
TypeKeyword,
StringLiteral,

Loading…
Cancel
Save