fix string lexer
[pspp] / src / language / lexer / scan.h
index fdb50801c44c34b8fdeae4181a705d3ad4ea5651..1c0ff7a1e5477286ff1d1256a4e6c5823877fba0 100644 (file)
@@ -1,5 +1,5 @@
 /* PSPP - a program for statistical analysis.
-   Copyright (C) 2010, 2011 Free Software Foundation, Inc.
+   Copyright (C) 2010, 2011, 2013 Free Software Foundation, Inc.
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -45,7 +45,6 @@ struct token;
                                                 \
     SCAN_TYPE(EXPECTED_QUOTE)                   \
     SCAN_TYPE(EXPECTED_EXPONENT)                \
-    SCAN_TYPE(UNEXPECTED_DOT)                   \
     SCAN_TYPE(UNEXPECTED_CHAR)                  \
                                                 \
     SCAN_TYPE(SKIP)
@@ -89,5 +88,19 @@ enum scan_result
 void scanner_init (struct scanner *, struct token *);
 enum scan_result scanner_push (struct scanner *, enum segment_type,
                                struct substring, struct token *);
+\f
+/* A simplified lexer for handling syntax in a string. */
+
+struct string_lexer
+  {
+    const char *input;
+    size_t length;
+    size_t offset;
+    struct segmenter segmenter;
+  };
+
+void string_lexer_init (struct string_lexer *, const char *input,
+                        size_t length, enum segmenter_mode, bool is_snippet);
+bool string_lexer_next (struct string_lexer *, struct token *);
 
 #endif /* scan.h */