diff options
author | Luigi Rizzo <rizzo@icir.org> | 2006-04-28 14:17:03 +0000 |
---|---|---|
committer | Luigi Rizzo <rizzo@icir.org> | 2006-04-28 14:17:03 +0000 |
commit | 799126216eccca77aa5ad5a4a163a87ff7e38949 (patch) | |
tree | 51e1d1d40a35cd7292c6efb15f2c4338143c2047 /pbx/ael | |
parent | 43bfe82828b932bd59a7d0d1d49845b9a921ec26 (diff) |
- fix miscalculation in column numbers when multiple tabs
or empty lines are involved;
- change linku1() to return the head of the list (unused at the moment);
- ignore the source line number in runtests as they change with the
source and cause mismatches in the comparison with the reference output.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@23130 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'pbx/ael')
-rwxr-xr-x | pbx/ael/ael-test/runtests | 8 | ||||
-rw-r--r-- | pbx/ael/ael.flex | 4 | ||||
-rw-r--r-- | pbx/ael/ael.tab.c | 7 | ||||
-rw-r--r-- | pbx/ael/ael.y | 7 | ||||
-rw-r--r-- | pbx/ael/ael_lex.c | 4 |
5 files changed, 20 insertions, 10 deletions
diff --git a/pbx/ael/ael-test/runtests b/pbx/ael/ael-test/runtests index c0d148de4..a8de9eaec 100755 --- a/pbx/ael/ael-test/runtests +++ b/pbx/ael/ael-test/runtests @@ -1,9 +1,12 @@ #!/bin/bash - +ORIG=`mktemp /tmp/mytest.XXXXXX` +NEW=`mktemp /tmp/mytest.XXXXXX` for i in ael-test*; do echo -n Test: $i.................. (cd $i; ../../../../utils/aelparse -n -d | grep -v -i 'seconds' > ../res.$i) - if (diff -q res.$i ref.$i > /dev/null 2>&1 ) then + sed 's/line:[0-9]*//; /^Executed.*/d' < res.$i > $NEW + sed 's/line:[0-9]*//; /^Executed.*/d' < ref.$i > $ORIG + if (diff -q $NEW $ORIG > /dev/null 2>&1 ) then echo PASSED rm res.$i else @@ -12,3 +15,4 @@ for i in ael-test*; do fi done +rm $NEW $ORIG diff --git a/pbx/ael/ael.flex b/pbx/ael/ael.flex index 280960c14..0a063b8b7 100644 --- a/pbx/ael/ael.flex +++ b/pbx/ael/ael.flex @@ -213,9 +213,9 @@ switches { STORE_POS; return KW_SWITCHES;} eswitches { STORE_POS; return KW_ESWITCHES;} includes { STORE_POS; return KW_INCLUDES;} -\n { my_lineno++; my_col = 0; } +\n { my_lineno++; my_col = 1; } [ ]+ { my_col += yyleng; } -[\t]+ { my_col += 8-(my_col%8); } +[\t]+ { my_col += (yyleng*8)-(my_col%8); } [-a-zA-Z0-9'"_/.\<\>\*\+!$#\[\]][-a-zA-Z0-9'"_/.!\*\+\<\>\{\}$#\[\]]* { STORE_POS; diff --git a/pbx/ael/ael.tab.c b/pbx/ael/ael.tab.c index a238eb990..962c27854 100644 --- a/pbx/ael/ael.tab.c +++ b/pbx/ael/ael.tab.c @@ -185,7 +185,7 @@ static pval *npval(pvaltype type, int first_line, int last_line, int first_column, int last_column); -static void linku1(pval *head, pval *tail); +static pval * linku1(pval *head, pval *tail); void reset_parencount(yyscan_t yyscanner); void reset_semicount(yyscan_t yyscanner); @@ -3521,14 +3521,17 @@ static struct pval *npval2(pvaltype type, YYLTYPE *first, YYLTYPE *last) } /* append second element to the list in the first one */ -static void linku1(pval *head, pval *tail) +static pval * linku1(pval *head, pval *tail) { + if (!head) + return tail; if (!head->next) { head->next = tail; } else { head->u1_last->next = tail; } head->u1_last = tail; + return head; } diff --git a/pbx/ael/ael.y b/pbx/ael/ael.y index d9f709243..ead9501ee 100644 --- a/pbx/ael/ael.y +++ b/pbx/ael/ael.y @@ -32,7 +32,7 @@ static pval *npval(pvaltype type, int first_line, int last_line, int first_column, int last_column); -static void linku1(pval *head, pval *tail); +static pval * linku1(pval *head, pval *tail); void reset_parencount(yyscan_t yyscanner); void reset_semicount(yyscan_t yyscanner); @@ -959,13 +959,16 @@ static struct pval *npval2(pvaltype type, YYLTYPE *first, YYLTYPE *last) } /* append second element to the list in the first one */ -static void linku1(pval *head, pval *tail) +static pval * linku1(pval *head, pval *tail) { + if (!head) + return tail; if (!head->next) { head->next = tail; } else { head->u1_last->next = tail; } head->u1_last = tail; + return head; } diff --git a/pbx/ael/ael_lex.c b/pbx/ael/ael_lex.c index 5d0b4e73c..b1aa53f51 100644 --- a/pbx/ael/ael_lex.c +++ b/pbx/ael/ael_lex.c @@ -1309,7 +1309,7 @@ case 40: /* rule 40 can match eol */ YY_RULE_SETUP #line 216 "ael.flex" -{ my_lineno++; my_col = 0; } +{ my_lineno++; my_col = 1; } YY_BREAK case 41: YY_RULE_SETUP @@ -1319,7 +1319,7 @@ YY_RULE_SETUP case 42: YY_RULE_SETUP #line 218 "ael.flex" -{ my_col += 8-(my_col%8); } +{ my_col += (yyleng*8)-(my_col%8); } YY_BREAK case 43: YY_RULE_SETUP |