projects
/
pspp
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
MATRIX
[pspp]
/
src
/
language
/
lexer
/
segment.h
diff --git
a/src/language/lexer/segment.h
b/src/language/lexer/segment.h
index 686b471e18d4bc7e3536c33ed3dcbb6c7bf9a937..199e390f7e4f1279d877c9e01935534d405a2289 100644
(file)
--- a/
src/language/lexer/segment.h
+++ b/
src/language/lexer/segment.h
@@
-1,5
+1,5
@@
/* PSPP - a program for statistical analysis.
/* 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
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
@@
-78,6
+78,10
@@
enum segmenter_mode
SEG_TYPE(DO_REPEAT_COMMAND) \
SEG_TYPE(INLINE_DATA) \
\
SEG_TYPE(DO_REPEAT_COMMAND) \
SEG_TYPE(INLINE_DATA) \
\
+ SEG_TYPE(MACRO_ID) \
+ SEG_TYPE(MACRO_NAME) \
+ SEG_TYPE(MACRO_BODY) \
+ \
SEG_TYPE(START_DOCUMENT) \
SEG_TYPE(DOCUMENT) \
\
SEG_TYPE(START_DOCUMENT) \
SEG_TYPE(DOCUMENT) \
\
@@
-88,7
+92,6
@@
enum segmenter_mode
\
SEG_TYPE(EXPECTED_QUOTE) \
SEG_TYPE(EXPECTED_EXPONENT) \
\
SEG_TYPE(EXPECTED_QUOTE) \
SEG_TYPE(EXPECTED_EXPONENT) \
- SEG_TYPE(UNEXPECTED_DOT) \
SEG_TYPE(UNEXPECTED_CHAR)
/* Types of segments. */
SEG_TYPE(UNEXPECTED_CHAR)
/* Types of segments. */
@@
-97,9
+100,13
@@
enum segment_type
#define SEG_TYPE(NAME) SEG_##NAME,
SEG_TYPES
#undef SEG_TYPE
#define SEG_TYPE(NAME) SEG_##NAME,
SEG_TYPES
#undef SEG_TYPE
- SEG_N_TYPES
};
};
+/* Number of segment types. */
+#define SEG_TYPE(NAME) + 1
+enum { SEG_N_TYPES = SEG_TYPES };
+#undef SEG_TYPE
+
const char *segment_type_to_string (enum segment_type);
/* A segmenter. Opaque. */
const char *segment_type_to_string (enum segment_type);
/* A segmenter. Opaque. */
@@
-107,14
+114,15
@@
struct segmenter
{
unsigned char state;
unsigned char substate;
{
unsigned char state;
unsigned char substate;
+ unsigned char nest;
unsigned char mode;
};
unsigned char mode;
};
-
void segmenter_init (struct segmenter *, enum segmenter_mode
);
+
struct segmenter segmenter_init (enum segmenter_mode, bool is_snippet
);
enum segmenter_mode segmenter_get_mode (const struct segmenter *);
enum segmenter_mode segmenter_get_mode (const struct segmenter *);
-int segmenter_push (struct segmenter *, const char *input, size_t n,
+int segmenter_push (struct segmenter *, const char *input, size_t n,
bool eof,
enum segment_type *);
enum prompt_style segmenter_get_prompt (const struct segmenter *);
enum segment_type *);
enum prompt_style segmenter_get_prompt (const struct segmenter *);