More error reporting improvemnts.
[pspp] / src / language / lexer / scan.h
index fdb50801c44c34b8fdeae4181a705d3ad4ea5651..0dde2738049d6d8fdbe2f4bcdb6f5a2bf7b8a3e2 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)
@@ -67,6 +66,8 @@ enum scan_type
 const char *scan_type_to_string (enum scan_type);
 bool is_scan_type (enum scan_type);
 
+char *scan_token_to_error (const struct token *);
+
 /* A scanner.  Opaque. */
 struct scanner
   {
@@ -89,5 +90,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 */