summaryrefslogtreecommitdiff
path: root/src/stages/syntactic.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/stages/syntactic.rs')
-rw-r--r--src/stages/syntactic.rs21
1 files changed, 6 insertions, 15 deletions
diff --git a/src/stages/syntactic.rs b/src/stages/syntactic.rs
index 6453ae0..59b8b95 100644
--- a/src/stages/syntactic.rs
+++ b/src/stages/syntactic.rs
@@ -37,7 +37,7 @@ fn parse_syntactic_from_tokeniser(mut t: Tokeniser, label_name: &str) -> Result<
}
// Eat characters until the end character is found.
- macro_rules! is_any_end {
+ macro_rules! is_end {
($end:expr) => {
|t: &mut Tokeniser| {
t.eat_char() == Some($end)
@@ -45,15 +45,6 @@ fn parse_syntactic_from_tokeniser(mut t: Tokeniser, label_name: &str) -> Result<
};
}
- // Eat characters until the end character is found without a preceding back-slash.
- macro_rules! is_plain_end {
- ($end:expr) => {
- |t: &mut Tokeniser| {
- t.eat_if(concat!('\\', $end)).is_some() || t.eat_char() == Some($end)
- }
- };
- }
-
loop {
// Eat leading whitespace.
while let Some(c) = t.peek_char() {
@@ -67,7 +58,7 @@ fn parse_syntactic_from_tokeniser(mut t: Tokeniser, label_name: &str) -> Result<
let token = match c {
'"' => {
let source = t.get_source();
- match t.track_until(is_plain_end!('"')) {
+ match t.track_until(is_end!('"')) {
Some(string) => {
let mut bytes = string.into_bytes();
bytes.push(0x00);
@@ -78,14 +69,14 @@ fn parse_syntactic_from_tokeniser(mut t: Tokeniser, label_name: &str) -> Result<
}
'\'' => {
let source = t.get_source();
- match t.track_until(is_plain_end!('\'')) {
+ match t.track_until(is_end!('\'')) {
Some(string) => SyntacticToken::String(string.into_bytes()),
None => err!(SyntacticError::UnterminatedRawString, source),
}
}
'(' => {
let source = t.get_source();
- if let Some(string) = t.track_until(is_any_end!(')')) {
+ if let Some(string) = t.track_until(is_end!(')')) {
// Check if the comment fills the entire line.
if t.start.position.column == 0 && t.end_of_line() {
if let Some(path) = string.strip_prefix(": ") {
@@ -105,7 +96,7 @@ fn parse_syntactic_from_tokeniser(mut t: Tokeniser, label_name: &str) -> Result<
let source = t.get_source();
check_name!(name, source);
t.mark_child();
- if let Some(_) = t.track_until(is_any_end!(';')) {
+ if let Some(_) = t.track_until(is_end!(';')) {
let child = t.tokenise_child_span();
match parse_body_from_tokeniser(child, &label_name) {
Ok(body) => {
@@ -149,7 +140,7 @@ fn parse_syntactic_from_tokeniser(mut t: Tokeniser, label_name: &str) -> Result<
}
},
':' => {
- SyntacticToken::Symbol(String::from(':'))
+ SyntacticToken::Instruction(Instruction { value: 0x21 })
}
c => {
let token = format!("{c}{}", t.eat_token());