]> git.ipfire.org Git - thirdparty/plymouth.git/commitdiff
[scan] Remember white space between tokens
authorCharlie Brej <cbrej@cs.man.ac.uk>
Mon, 22 Jun 2009 20:30:09 +0000 (21:30 +0100)
committerCharlie Brej <cbrej@cs.man.ac.uk>
Mon, 22 Jun 2009 20:30:09 +0000 (21:30 +0100)
Tokens now contain the number of white space characters since the last token.
This is useful in situations where white space between symbols changes the
meaning (e.g. a++ vs. a+ +).

src/plugins/splash/script/ply-scan.c
src/plugins/splash/script/ply-scan.h

index 0f9ff0770c74551c7327ff3f222115150378b18f..eb5e964333bcee20f033fb1c87802e1a53ac4239 100644 (file)
@@ -61,6 +61,7 @@ void ply_scan_token_clean(ply_scan_token_t* token)
         break;
     }
  token->type = PLY_SCAN_TOKEN_TYPE_EMPTY;
+ token->whitespace = 0;
 }
 
 void ply_scan_free(ply_scan_t* scan)
@@ -100,11 +101,11 @@ unsigned char ply_scan_get_next_char(ply_scan_t* scan)
 void ply_scan_read_next_token(ply_scan_t* scan, ply_scan_token_t* token)
 {
  unsigned char curchar = ply_scan_get_current_char(scan);
+ token->whitespace = 0;
  while(true){
-    if (curchar == ' ')  {curchar = ply_scan_get_next_char(scan); continue;}
-    if (curchar == '\n') {curchar = ply_scan_get_next_char(scan); continue;}
-    if (curchar == '\t') {curchar = ply_scan_get_next_char(scan); continue;}
+    if (curchar == ' ')  {curchar = ply_scan_get_next_char(scan); token->whitespace++; continue;}
+    if (curchar == '\n') {curchar = ply_scan_get_next_char(scan); token->whitespace++; continue;}
+    if (curchar == '\t') {curchar = ply_scan_get_next_char(scan); token->whitespace++; continue;}
     break;
     }
  if (ply_bitarray_lookup(scan->identifier_1st_char, curchar)){
index 521873aa43e4e39209ac94c68554cb13f1080761..bf5bdb919f8e8129b567392cfda485034d684ec4 100644 (file)
@@ -25,6 +25,7 @@ typedef struct
     long long int integer;
     double floatpoint;
  } data;
+ int whitespace;
 } ply_scan_token_t;
 
 typedef struct