segment: Allow '.' as separate token with a line, for macros.
[pspp] / src / language / lexer / segment.h
index dbb43d529d59541e9635d93ca536a2a31625b934..02a269bdd2779b53a0f0bddd00e2641ddaf184b9 100644 (file)
@@ -67,7 +67,6 @@ enum segmenter_mode
     SEG_TYPE(UNQUOTED_STRING)                   \
     SEG_TYPE(RESERVED_WORD)                     \
     SEG_TYPE(IDENTIFIER)                        \
-    SEG_TYPE(MACRO_ID)                          \
     SEG_TYPE(PUNCT)                             \
                                                 \
     SEG_TYPE(SHBANG)                            \
@@ -79,6 +78,9 @@ enum segmenter_mode
     SEG_TYPE(DO_REPEAT_COMMAND)                 \
     SEG_TYPE(INLINE_DATA)                       \
                                                 \
+    SEG_TYPE(MACRO_ID)                          \
+    SEG_TYPE(MACRO_BODY)                        \
+                                                \
     SEG_TYPE(START_DOCUMENT)                    \
     SEG_TYPE(DOCUMENT)                          \
                                                 \
@@ -89,7 +91,6 @@ enum segmenter_mode
                                                 \
     SEG_TYPE(EXPECTED_QUOTE)                    \
     SEG_TYPE(EXPECTED_EXPONENT)                 \
-    SEG_TYPE(UNEXPECTED_DOT)                    \
     SEG_TYPE(UNEXPECTED_CHAR)
 
 /* Types of segments. */
@@ -112,6 +113,7 @@ struct segmenter
   {
     unsigned char state;
     unsigned char substate;
+    unsigned char nest;
     unsigned char mode;
   };