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)) Ok(tree::Node::Int(num))
} }
token::Kind::StringLiteral => Ok(tree::Node::String(token.raw)), 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(), token::Kind::OBracket => self.parse_array(),
_ => self.syntax_error(format!("Unexpected token {}", token.kind), &token), _ => self.syntax_error(format!("Unexpected token {}", token.kind), &token),
} }

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

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

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

Loading…
Cancel
Save