etanol_compiler/utils/
methods.rs

1use crate::utils::{Pointer, Token};
2
3pub fn readString(pointer: &mut Pointer) -> String {
4    let startString = pointer.toEqual("Punctuation", "\"");
5    if !startString {
6        pointer.error("Expected '\"'");
7    }
8
9    let mut value = String::new();
10
11    loop {
12        if pointer.toEqual("Punctuation", "\"") {
13            break;
14        }
15
16        match pointer.token.clone() {
17            None | Some(Token::EOF) => {
18                pointer.error("Expected a '\"'");
19            }
20            Some(data) => {
21                value.push_str(&data.tokenValue());
22
23                pointer.take(&data.tokenType());
24            }
25        }
26    }
27
28    value
29}