The attached patch allows the .macro_const directive to be used in PIR
files, not just in PASM files. Previous behavior, apparently, was only
to allow the .macro_const directive to be used when in "PASM mode",
which doesn't make much sense, considering that all our low-level work
is done in PIR and we are encouraging new users to learn PIR instead of
PASM.

If people think this is a good idea, I'll implement it and a test or two
for it. 

--Andrew Whitworth
Index: compilers/imcc/imcc.l
===================================================================
--- compilers/imcc/imcc.l	(revision 28320)
+++ compilers/imcc/imcc.l	(working copy)
@@ -421,13 +421,10 @@
 ">>>="                 return SHR_U_ASSIGN;
 ".="                   return CONCAT_ASSIGN;
 
-<emit,INITIAL>".macro" {
-        return read_macro(valp, interp, yyscanner);
-    }
-
-<emit>".macro_const" {
+<emit,INITIAL>".macro_const" {
         int c;
         int start_line;
+        int start_cond  = YY_START;
 
         BEGIN(macro);
         c = yylex_skip(valp, interp, " ", yyscanner);
@@ -450,10 +447,14 @@
 
         IMCC_INFO(interp)->cur_macro_name = NULL;
 
-        BEGIN(emit);
+        BEGIN(start_cond);
         return MACRO;
     }
 
+<emit,INITIAL>".macro" {
+        return read_macro(valp, interp, yyscanner);
+    }
+
 <emit,INITIAL>".include" {
         const int c = yylex(valp, yyscanner, interp);
         if (c != STRINGC)

Reply via email to