diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/libexecline/PARSING.txt | 30 | ||||
-rw-r--r-- | src/libexecline/el_parse.c | 8 |
2 files changed, 19 insertions, 19 deletions
diff --git a/src/libexecline/PARSING.txt b/src/libexecline/PARSING.txt index b84c0ff..293d812 100644 --- a/src/libexecline/PARSING.txt +++ b/src/libexecline/PARSING.txt @@ -72,28 +72,28 @@ Q1: after a backslash in whitespace Q2: after a backslash in an unquoted word Q3: after a backslash in a quoted string Q: in a quoted string -OCT: after \0 in a quoted string -OCT1: after \0a in a quoted string -OCT2: after \0ab in a quoted string -DEC1: after \a in a quoted string -DEC2: after \ab in a quoted string -HEX: after \0x in a quoted string -HEX1: after \0xa in a quoted string -ENDNUM: after \0abc, \abc or \0xab in a quoted string +OCT: after \0 +OCT1: after \0a +OCT2: after \0ab +DEC1: after \a +DEC2: after \ab +HEX: after \0x +HEX1: after \0xa +ENDNUM: after \0abc, \abc or \0xab END: success X: syntax error Actions -8000 s scan integer from mark to cur +8000 s scan integer from mark, push it 4000 m set mark -2000 n add blevel spaces -1000 { inc blevel + unpush blevel -0800 } dec blevel + unpush 2 -0400 p add cur to word -0200 c add control char (depending on cur) to word -0100 0 end word +2000 n new word: push blevel spaces +1000 { begin block (inc blevel, unpush) +0800 } end block (dec blevel, unpush) +0400 p push cur +0200 c push control char (depending on cur) +0100 0 end word: push \0 0080 b switch base according to cur 0040 unused 0020 unused diff --git a/src/libexecline/el_parse.c b/src/libexecline/el_parse.c index 6ef7ce9..23a9df5 100644 --- a/src/libexecline/el_parse.c +++ b/src/libexecline/el_parse.c @@ -69,18 +69,18 @@ int el_parse (stralloc *sa, el_chargen_func_ref next, void *source) if (!blevel--) return -4 ; sa->len -= 2 ; } - if (c & 0x0400) if (!stralloc_catb(sa, (char *)&cur, 1)) return -1 ; - if (c & 0x0200) + if (c & 0x0400U) if (!stralloc_catb(sa, (char *)&cur, 1)) return -1 ; + if (c & 0x0200U) { char x = 7 + byte_chr("abtnvfr", 7, cur) ; if (!stralloc_catb(sa, &x, 1)) return -1 ; } - if (c & 0x0100) + if (c & 0x0100U) { if (n++ >= INT_MAX) return (errno = E2BIG, -1) ; if (!stralloc_0(sa)) return -1 ; } - if (c & 0x0080) + if (c & 0x0080U) { switch (cur) { |