Skip to content

Commit

Permalink
lexer fix
Browse files Browse the repository at this point in the history
  • Loading branch information
DecklynKern committed Jul 30, 2024
1 parent 688e50c commit da9dc01
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 16 deletions.
6 changes: 3 additions & 3 deletions src/elaborate.rs
Original file line number Diff line number Diff line change
Expand Up @@ -105,8 +105,8 @@ pub enum ElaboratedDataType {
GenericString,
Stack(Box<ElaboratedDataType>, usize),
UserEnum(usize),
UserStruct(usize)
//Array(Rc<DataType>, usize)
UserStruct(usize),
Array(Box<ElaboratedDataType>, usize)
}

impl ElaboratedDataType {
Expand Down Expand Up @@ -146,7 +146,7 @@ impl ElaboratedDataType {
Self::Stack(data_type, len) => (len + 1) * (data_type.get_size(user_definitions) + 1) + 1,
Self::UserEnum(_) => 1,
Self::UserStruct(struct_id) => user_definitions.structs[*struct_id].size,
//Self::Array(data_type, len) => data_type.get_size() * len
Self::Array(data_type, len) => data_type.get_size(user_definitions) * len,
Self::GenericNumber | Self::GenericString => unreachable!()
}
}
Expand Down
9 changes: 8 additions & 1 deletion src/lex.rs
Original file line number Diff line number Diff line change
Expand Up @@ -309,8 +309,15 @@ fn try_lex_symbol(chars: &mut Peekable<Chars>) -> Result<Option<Token>, ()> {
symbol_chars.push(*char);

if symbol_chars == "//" {
chars.for_each(drop);

while let Some(char) = chars.next() {
if char == '\n' {
return Ok(Some(Token::Comment));
}
}

return Ok(Some(Token::Comment));

}

if let Some(symbol) = Token::try_parse_symbol(&symbol_chars) {
Expand Down
31 changes: 19 additions & 12 deletions src/parse.rs
Original file line number Diff line number Diff line change
Expand Up @@ -732,20 +732,27 @@ impl<'a> Parser<'a> {

while let Some(&token) = self.tokens.peek() {

if *token == Token::End {
self.tokens.next();
break;
}

// hacky
if *token == Token::Else {
break;
}
match token {
Token::Newline => {
self.tokens.next();
continue;
}
Token::End => {
self.tokens.next();
break;
}
// hacky
Token::Else => {
break;
}
_ => {

statements.push(self.parse_statement()?);
statements.push(self.parse_statement()?);

if !self.tokens.is_empty() {
self.expect_newline()?;
if !self.tokens.is_empty() {
self.expect_newline()?;
}
}
}
}

Expand Down

0 comments on commit da9dc01

Please sign in to comment.