summaryrefslogtreecommitdiff
path: root/soltools
diff options
context:
space:
mode:
authorSander Vesik <svesik@openoffice.org>2004-04-21 12:24:47 +0000
committerSander Vesik <svesik@openoffice.org>2004-04-21 12:24:47 +0000
commita0b80dd4ed826f117f29efc05af587a413da8287 (patch)
treedc42aeee1f29911fb137cde6f7a3ae265927ab2f /soltools
parent7dca155e22a3a911eb9d7e1a47e110c026eaefb6 (diff)
INTEGRATION: CWS ooo20040329 (1.2.48); FILE MERGED
2004/03/17 12:45:51 waratah 1.2.48.1: #i1858# add braces around each structure initialiser make the if test for characters explict and add code to make it work for S390 as well
Diffstat (limited to 'soltools')
-rw-r--r--soltools/cpp/_lex.c254
1 files changed, 128 insertions, 126 deletions
diff --git a/soltools/cpp/_lex.c b/soltools/cpp/_lex.c
index da5cb02cf083..1f9e262a49d4 100644
--- a/soltools/cpp/_lex.c
+++ b/soltools/cpp/_lex.c
@@ -7,7 +7,6 @@
#include <unistd.h>
#endif
#include "cpp.h"
-
/*
* lexical FSM encoding
* when in state state, and one of the characters
@@ -59,183 +58,183 @@ struct fsm
/*const*/ struct fsm fsm[] = {
/* start state */
- START, {C_XX}, ACT(UNCLASS, S_SELF),
- START, {' ', '\t', '\v'}, WS1,
- START, {C_NUM}, NUM1,
- START, {'.'}, NUM3,
- START, {C_ALPH}, ID1,
- START, {'L'}, ST1,
- START, {'"'}, ST2,
- START, {'\''}, CC1,
- START, {'/'}, COM1,
- START, {EOFC}, S_EOF,
- START, {'\n'}, S_NL,
- START, {'-'}, MINUS1,
- START, {'+'}, PLUS1,
- START, {'<'}, LT1,
- START, {'>'}, GT1,
- START, {'='}, ASG1,
- START, {'!'}, NOT1,
- START, {'&'}, AND1,
- START, {'|'}, OR1,
- START, {'#'}, SHARP1,
- START, {'%'}, PCT1,
- START, {'['}, ACT(SBRA, S_SELF),
- START, {']'}, ACT(SKET, S_SELF),
- START, {'('}, ACT(LP, S_SELF),
- START, {')'}, ACT(RP, S_SELF),
- START, {'*'}, STAR1,
- START, {','}, ACT(COMMA, S_SELF),
- START, {'?'}, ACT(QUEST, S_SELF),
- START, {':'}, ACT(COLON, S_SELF),
- START, {';'}, ACT(SEMIC, S_SELF),
- START, {'{'}, ACT(CBRA, S_SELF),
- START, {'}'}, ACT(CKET, S_SELF),
- START, {'~'}, ACT(TILDE, S_SELF),
- START, {'^'}, CIRC1,
+ {START, {C_XX}, ACT(UNCLASS, S_SELF)},
+ {START, {' ', '\t', '\v'}, WS1},
+ {START, {C_NUM}, NUM1},
+ {START, {'.'}, NUM3},
+ {START, {C_ALPH}, ID1},
+ {START, {'L'}, ST1},
+ {START, {'"'}, ST2},
+ {START, {'\''}, CC1},
+ {START, {'/'}, COM1},
+ {START, {EOFC}, S_EOF},
+ {START, {'\n'}, S_NL},
+ {START, {'-'}, MINUS1},
+ {START, {'+'}, PLUS1},
+ {START, {'<'}, LT1},
+ {START, {'>'}, GT1},
+ {START, {'='}, ASG1},
+ {START, {'!'}, NOT1},
+ {START, {'&'}, AND1},
+ {START, {'|'}, OR1},
+ {START, {'#'}, SHARP1},
+ {START, {'%'}, PCT1},
+ {START, {'['}, ACT(SBRA, S_SELF)},
+ {START, {']'}, ACT(SKET, S_SELF)},
+ {START, {'('}, ACT(LP, S_SELF)},
+ {START, {')'}, ACT(RP, S_SELF)},
+ {START, {'*'}, STAR1},
+ {START, {','}, ACT(COMMA, S_SELF)},
+ {START, {'?'}, ACT(QUEST, S_SELF)},
+ {START, {':'}, ACT(COLON, S_SELF)},
+ {START, {';'}, ACT(SEMIC, S_SELF)},
+ {START, {'{'}, ACT(CBRA, S_SELF)},
+ {START, {'}'}, ACT(CKET, S_SELF)},
+ {START, {'~'}, ACT(TILDE, S_SELF)},
+ {START, {'^'}, CIRC1},
/* saw a digit */
- NUM1, {C_XX}, ACT(NUMBER, S_SELFB),
- NUM1, {C_NUM, C_ALPH, '.'}, NUM1,
- NUM1, {'E', 'e'}, NUM2,
- NUM1, {'_'}, ACT(NUMBER, S_SELFB),
+ {NUM1, {C_XX}, ACT(NUMBER, S_SELFB)},
+ {NUM1, {C_NUM, C_ALPH, '.'}, NUM1},
+ {NUM1, {'E', 'e'}, NUM2},
+ {NUM1, {'_'}, ACT(NUMBER, S_SELFB)},
/* saw possible start of exponent, digits-e */
- NUM2, {C_XX}, ACT(NUMBER, S_SELFB),
- NUM2, {'+', '-'}, NUM1,
- NUM2, {C_NUM, C_ALPH}, NUM1,
- NUM2, {'_'}, ACT(NUMBER, S_SELFB),
+ {NUM2, {C_XX}, ACT(NUMBER, S_SELFB)},
+ {NUM2, {'+', '-'}, NUM1},
+ {NUM2, {C_NUM, C_ALPH}, NUM1},
+ {NUM2, {'_'}, ACT(NUMBER, S_SELFB)},
/* saw a '.', which could be a number or an operator */
- NUM3, {C_XX}, ACT(DOT, S_SELFB),
- NUM3, {'.'}, DOTS1,
- NUM3, {C_NUM}, NUM1,
+ {NUM3, {C_XX}, ACT(DOT, S_SELFB)},
+ {NUM3, {'.'}, DOTS1},
+ {NUM3, {C_NUM}, NUM1},
- DOTS1, {C_XX}, ACT(UNCLASS, S_SELFB),
- DOTS1, {C_NUM}, NUM1,
- DOTS1, {'.'}, ACT(ELLIPS, S_SELF),
+ {DOTS1, {C_XX}, ACT(UNCLASS, S_SELFB)},
+ {DOTS1, {C_NUM}, NUM1},
+ {DOTS1, {'.'}, ACT(ELLIPS, S_SELF)},
/* saw a letter or _ */
- ID1, {C_XX}, ACT(NAME, S_NAME),
- ID1, {C_ALPH, C_NUM}, ID1,
+ {ID1, {C_XX}, ACT(NAME, S_NAME)},
+ {ID1, {C_ALPH, C_NUM}, ID1},
/* saw L (start of wide string?) */
- ST1, {C_XX}, ACT(NAME, S_NAME),
- ST1, {C_ALPH, C_NUM}, ID1,
- ST1, {'"'}, ST2,
- ST1, {'\''}, CC1,
+ {ST1, {C_XX}, ACT(NAME, S_NAME)},
+ {ST1, {C_ALPH, C_NUM}, ID1},
+ {ST1, {'"'}, ST2},
+ {ST1, {'\''}, CC1},
/* saw " beginning string */
- ST2, {C_XX}, ST2,
- ST2, {'"'}, ACT(STRING, S_SELF),
- ST2, {'\\'}, ST3,
- ST2, {'\n'}, S_STNL,
- ST2, {EOFC}, S_EOFSTR,
+ {ST2, {C_XX}, ST2},
+ {ST2, {'"'}, ACT(STRING, S_SELF)},
+ {ST2, {'\\'}, ST3},
+ {ST2, {'\n'}, S_STNL},
+ {ST2, {EOFC}, S_EOFSTR},
/* saw \ in string */
- ST3, {C_XX}, ST2,
- ST3, {'\n'}, S_STNL,
- ST3, {EOFC}, S_EOFSTR,
+ {ST3, {C_XX}, ST2},
+ {ST3, {'\n'}, S_STNL},
+ {ST3, {EOFC}, S_EOFSTR},
/* saw ' beginning character const */
- CC1, {C_XX}, CC1,
- CC1, {'\''}, ACT(CCON, S_SELF),
- CC1, {'\\'}, CC2,
- CC1, {'\n'}, S_STNL,
- CC1, {EOFC}, S_EOFSTR,
+ {CC1, {C_XX}, CC1},
+ {CC1, {'\''}, ACT(CCON, S_SELF)},
+ {CC1, {'\\'}, CC2},
+ {CC1, {'\n'}, S_STNL},
+ {CC1, {EOFC}, S_EOFSTR},
/* saw \ in ccon */
- CC2, {C_XX}, CC1,
- CC2, {'\n'}, S_STNL,
- CC2, {EOFC}, S_EOFSTR,
+ {CC2, {C_XX}, CC1},
+ {CC2, {'\n'}, S_STNL},
+ {CC2, {EOFC}, S_EOFSTR},
/* saw /, perhaps start of comment */
- COM1, {C_XX}, ACT(SLASH, S_SELFB),
- COM1, {'='}, ACT(ASSLASH, S_SELF),
- COM1, {'*'}, COM2,
- COM1, {'/'}, COM4,
+ {COM1, {C_XX}, ACT(SLASH, S_SELFB)},
+ {COM1, {'='}, ACT(ASSLASH, S_SELF)},
+ {COM1, {'*'}, COM2},
+ {COM1, {'/'}, COM4},
/* saw "/*", start of comment */
- COM2, {C_XX}, COM2,
- COM2, {'\n'}, S_COMNL,
- COM2, {'*'}, COM3,
- COM2, {EOFC}, S_EOFCOM,
+ {COM2, {C_XX}, COM2},
+ {COM2, {'\n'}, S_COMNL},
+ {COM2, {'*'}, COM3},
+ {COM2, {EOFC}, S_EOFCOM},
/* saw the * possibly ending a comment */
- COM3, {C_XX}, COM2,
- COM3, {'\n'}, S_COMNL,
- COM3, {'*'}, COM3,
- COM3, {'/'}, S_COMMENT,
+ {COM3, {C_XX}, COM2},
+ {COM3, {'\n'}, S_COMNL},
+ {COM3, {'*'}, COM3},
+ {COM3, {'/'}, S_COMMENT},
/* // comment */
- COM4, {C_XX}, COM4,
- COM4, {'\n'}, S_NL,
- COM4, {EOFC}, S_EOFCOM,
+ {COM4, {C_XX}, COM4},
+ {COM4, {'\n'}, S_NL},
+ {COM4, {EOFC}, S_EOFCOM},
/* saw white space, eat it up */
- WS1, {C_XX}, S_WS,
- WS1, {'\t', '\v', ' '}, WS1,
+ {WS1, {C_XX}, S_WS},
+ {WS1, {'\t', '\v', ' '}, WS1},
/* saw -, check --, -=, -> */
- MINUS1, {C_XX}, ACT(MINUS, S_SELFB),
- MINUS1, {'-'}, ACT(MMINUS, S_SELF),
- MINUS1, {'='}, ACT(ASMINUS, S_SELF),
- MINUS1, {'>'}, ACT(ARROW, S_SELF),
+ {MINUS1, {C_XX}, ACT(MINUS, S_SELFB)},
+ {MINUS1, {'-'}, ACT(MMINUS, S_SELF)},
+ {MINUS1, {'='}, ACT(ASMINUS, S_SELF)},
+ {MINUS1, {'>'}, ACT(ARROW, S_SELF)},
/* saw +, check ++, += */
- PLUS1, {C_XX}, ACT(PLUS, S_SELFB),
- PLUS1, {'+'}, ACT(PPLUS, S_SELF),
- PLUS1, {'='}, ACT(ASPLUS, S_SELF),
+ {PLUS1, {C_XX}, ACT(PLUS, S_SELFB)},
+ {PLUS1, {'+'}, ACT(PPLUS, S_SELF)},
+ {PLUS1, {'='}, ACT(ASPLUS, S_SELF)},
/* saw <, check <<, <<=, <= */
- LT1, {C_XX}, ACT(LT, S_SELFB),
- LT1, {'<'}, LT2,
- LT1, {'='}, ACT(LEQ, S_SELF),
- LT2, {C_XX}, ACT(LSH, S_SELFB),
- LT2, {'='}, ACT(ASLSH, S_SELF),
+ {LT1, {C_XX}, ACT(LT, S_SELFB)},
+ {LT1, {'<'}, LT2},
+ {LT1, {'='}, ACT(LEQ, S_SELF)},
+ {LT2, {C_XX}, ACT(LSH, S_SELFB)},
+ {LT2, {'='}, ACT(ASLSH, S_SELF)},
/* saw >, check >>, >>=, >= */
- GT1, {C_XX}, ACT(GT, S_SELFB),
- GT1, {'>'}, GT2,
- GT1, {'='}, ACT(GEQ, S_SELF),
- GT2, {C_XX}, ACT(RSH, S_SELFB),
- GT2, {'='}, ACT(ASRSH, S_SELF),
+ {GT1, {C_XX}, ACT(GT, S_SELFB)},
+ {GT1, {'>'}, GT2},
+ {GT1, {'='}, ACT(GEQ, S_SELF)},
+ {GT2, {C_XX}, ACT(RSH, S_SELFB)},
+ {GT2, {'='}, ACT(ASRSH, S_SELF)},
/* = */
- ASG1, {C_XX}, ACT(ASGN, S_SELFB),
- ASG1, {'='}, ACT(EQ, S_SELF),
+ {ASG1, {C_XX}, ACT(ASGN, S_SELFB)},
+ {ASG1, {'='}, ACT(EQ, S_SELF)},
/* ! */
- NOT1, {C_XX}, ACT(NOT, S_SELFB),
- NOT1, {'='}, ACT(NEQ, S_SELF),
+ {NOT1, {C_XX}, ACT(NOT, S_SELFB)},
+ {NOT1, {'='}, ACT(NEQ, S_SELF)},
/* & */
- AND1, {C_XX}, ACT(AND, S_SELFB),
- AND1, {'&'}, ACT(LAND, S_SELF),
- AND1, {'='}, ACT(ASAND, S_SELF),
+ {AND1, {C_XX}, ACT(AND, S_SELFB)},
+ {AND1, {'&'}, ACT(LAND, S_SELF)},
+ {AND1, {'='}, ACT(ASAND, S_SELF)},
/* | */
- OR1, {C_XX}, ACT(OR, S_SELFB),
- OR1, {'|'}, ACT(LOR, S_SELF),
- OR1, {'='}, ACT(ASOR, S_SELF),
+ {OR1, {C_XX}, ACT(OR, S_SELFB)},
+ {OR1, {'|'}, ACT(LOR, S_SELF)},
+ {OR1, {'='}, ACT(ASOR, S_SELF)},
/* # */
- SHARP1, {C_XX}, ACT(SHARP, S_SELFB),
- SHARP1, {'#'}, ACT(DSHARP, S_SELF),
+ {SHARP1, {C_XX}, ACT(SHARP, S_SELFB)},
+ {SHARP1, {'#'}, ACT(DSHARP, S_SELF)},
/* % */
- PCT1, {C_XX}, ACT(PCT, S_SELFB),
- PCT1, {'='}, ACT(ASPCT, S_SELF),
+ {PCT1, {C_XX}, ACT(PCT, S_SELFB)},
+ {PCT1, {'='}, ACT(ASPCT, S_SELF)},
/* * */
- STAR1, {C_XX}, ACT(STAR, S_SELFB),
- STAR1, {'='}, ACT(ASSTAR, S_SELF),
+ {STAR1, {C_XX}, ACT(STAR, S_SELFB)},
+ {STAR1, {'='}, ACT(ASSTAR, S_SELF)},
/* ^ */
- CIRC1, {C_XX}, ACT(CIRC, S_SELFB),
- CIRC1, {'='}, ACT(ASCIRC, S_SELF),
+ {CIRC1, {C_XX}, ACT(CIRC, S_SELFB)},
+ {CIRC1, {'='}, ACT(ASCIRC, S_SELF)},
- -1
+ {-1}
};
/* first index is char, second is state */
@@ -264,8 +263,12 @@ void
continue;
case C_ALPH:
for (j = 0; j <= 256; j++)
- if ('a' <= j && j <= 'z' || 'A' <= j && j <= 'Z'
+#ifdef S390
+ if( isalpha( j ) || (j == '_') )
+#else
+ if (('a' <= j && j <= 'z') || ('A' <= j && j <= 'Z')
|| j == '_')
+#endif
bigfsm[j][fp->state] = nstate;
continue;
case C_NUM:
@@ -321,7 +324,6 @@ int
int runelen;
Source *s = cursource;
int nmac = 0;
- extern char outbuf[];
tp = trp->lp;
ip = s->inp;