summaryrefslogtreecommitdiff
path: root/lexer.c
diff options
context:
space:
mode:
Diffstat (limited to 'lexer.c')
-rw-r--r--lexer.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/lexer.c b/lexer.c
index a8b7716..d9810a5 100644
--- a/lexer.c
+++ b/lexer.c
@@ -53,6 +53,7 @@ static char buf[BUFFER_SIZE];
static FILE* fd;
static size_t line_number = 0;
static size_t column_number = 0;
+static size_t leading_whitespace_len = 0;
static struct token *tok_start = NULL;
static struct token *tok_cursor = NULL;
@@ -64,6 +65,7 @@ get_current_loc(void) {
struct location l;
l.line = line_number;
l.column = column_number + 1;
+ l.leading_whitespace_len = leading_whitespace_len;
return l;
}
@@ -187,6 +189,8 @@ lex_colon(void) {
static int
lex_line(void) {
size_t length = strlen(buf);
+ leading_whitespace_len = 0;
+
while (column_number < length && column_number < strlen(buf)) {
switch (buf[column_number]) {
case ':':
@@ -195,6 +199,9 @@ lex_line(void) {
case ' ':
case '\t':
eat_whitespace();
+ if (leading_whitespace_len == 0) {
+ leading_whitespace_len = column_number;
+ }
break;
case '\r':
case '\n':