merged
[henge/apc.git] / src / lexer.rl
index ad37169..553ff3d 100644 (file)
@@ -11,6 +11,7 @@ void lexer_pushtok(int, YYSTYPE);
 /* Public */
 int lexer_setdirection(uint8_t*, int);
 int lexer_lexfile(const uint8_t*);
+int lexer_lexdir(const uint8_t*);
 int lexer_lexstring(const uint8_t*, int);
 int lexer_setstr(uint8_t*, int);
 //apc.c
@@ -115,12 +116,12 @@ yycstate* apc_cstate;
   SS = ('+SS' %to(push_SS)) | ('+SS' %to(push_SS) link ) ;
   ref = '0x' >set_ts alnum{8} $err(ref_error) %push_ref ;
   val = digit+ >set_ts %push_val ;
-  name = (lower+ >set_ts) %push_name ;
+  name = lower >set_ts (lower | digit)*  %push_name ;
   map = '+MAP' %to(push_map);
   tok = (name | val | ref | dimensions | map | link | SS | direction);
   
 
-  main := (tok tok_delimiter)+ tok [\0];
+  main := (tok tok_delimiter)* tok [\0];
 
   write data nofinal noerror noprefix;
   
@@ -171,6 +172,13 @@ int lexer_lexfile
   return en_main == 1;
 }
 
+int lexer_lexdir
+( uint8_t const* dirname )
+{ uint8_t const* de = dirname;
+  while (*de++);
+  return lexer_lexstring(dirname, (int)(de - dirname));
+}
+
 /**************************/
 /****Abandon All Hope******/
 /**************************/