Browse Source

Add strings

github-actions
Garrit Franke 3 years ago
parent
commit
7ca96f9a43
  1. 2
      examples/hello_world.fx
  2. 8
      src/parser/mod.rs
  3. 1
      src/parser/node_type.rs

2
examples/hello_world.fx

@ -1,7 +1,7 @@
// This is a comment // This is a comment
fn main() { fn main() {
let x = 2; let x = "Hello World";
return x; return x;
} }

8
src/parser/mod.rs

@ -129,7 +129,7 @@ impl Parser {
while let Err(_) = self.peek_token(TokenKind::CurlyBracesClose) { while let Err(_) = self.peek_token(TokenKind::CurlyBracesClose) {
let statement = self.parse_statement()?; let statement = self.parse_statement()?;
println!("{:?}", statement); dbg!("{:?}", &statement);
statements.push(statement); statements.push(statement);
} }
@ -144,7 +144,7 @@ impl Parser {
fn parse_statement(&mut self) -> Result<Statement, String> { fn parse_statement(&mut self) -> Result<Statement, String> {
let token = self.next_token(); let token = self.next_token();
println!("parse_statement: {:?}", token); dbg!(&token);
match token.kind { match token.kind {
TokenKind::Keyword(Keyword::Let) => { TokenKind::Keyword(Keyword::Let) => {
let state = self.parse_declare(); let state = self.parse_declare();
@ -169,6 +169,10 @@ impl Parser {
let state = Expression::Int(token.raw.parse::<u32>().map_err(|e| e.to_string())?); let state = Expression::Int(token.raw.parse::<u32>().map_err(|e| e.to_string())?);
Ok(state) Ok(state)
} }
TokenKind::Literal(Value::Str) => {
let state = Expression::Str(token.raw);
Ok(state)
}
TokenKind::Identifier(val) => { TokenKind::Identifier(val) => {
let state = Expression::Variable(val); let state = Expression::Variable(val);
Ok(state) Ok(state)

1
src/parser/node_type.rs

@ -29,6 +29,7 @@ pub enum Statement {
#[derive(Debug, Eq, PartialEq)] #[derive(Debug, Eq, PartialEq)]
pub enum Expression { pub enum Expression {
Int(u32), Int(u32),
Str(String),
Char(u8), Char(u8),
FunctionCall(String, Vec<Expression>), FunctionCall(String, Vec<Expression>),
Variable(String), Variable(String),

Loading…
Cancel
Save