aboutsummaryrefslogtreecommitdiffstats
path: root/pbx/ael
diff options
context:
space:
mode:
authormurf <murf@f38db490-d61c-443f-a65b-d21fe96a405b>2006-08-31 02:53:15 +0000
committermurf <murf@f38db490-d61c-443f-a65b-d21fe96a405b>2006-08-31 02:53:15 +0000
commit6a1a080f671ca54318e8193c0e0a469818e3dd81 (patch)
treeac2165a2a83b341fb8cae9e66844b123ae77cb1c /pbx/ael
parent8773d3792fdbb38cf528dac530acac3889ec0b93 (diff)
This commit is a basic AEL enhancement: c-style comments
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@41527 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'pbx/ael')
-rw-r--r--pbx/ael/ael-test/ael-test15/extensions.ael17
-rwxr-xr-xpbx/ael/ael-test/ael-test3/extensions.ael2
-rwxr-xr-xpbx/ael/ael-test/ael-test3/telemarket_torture.ael2812
-rw-r--r--pbx/ael/ael-test/ref.ael-test1513
-rw-r--r--pbx/ael/ael-test/ref.ael-test328
-rw-r--r--pbx/ael/ael.flex9
-rw-r--r--pbx/ael/ael_lex.c793
7 files changed, 1256 insertions, 418 deletions
diff --git a/pbx/ael/ael-test/ael-test15/extensions.ael b/pbx/ael/ael-test/ael-test15/extensions.ael
new file mode 100644
index 000000000..c9cfdab96
--- /dev/null
+++ b/pbx/ael/ael-test/ael-test15/extensions.ael
@@ -0,0 +1,17 @@
+/* and some comments
+ would make a nice touch */
+
+context t1
+{
+ /* this a test of block comments */
+
+ _15x => {
+ /* more comments
+ across several lines
+ * what do you think*
+ */
+ }
+
+}
+
+/* amd some more */
diff --git a/pbx/ael/ael-test/ael-test3/extensions.ael b/pbx/ael/ael-test/ael-test3/extensions.ael
index ae3b4bedf..dd77c0531 100755
--- a/pbx/ael/ael-test/ael-test3/extensions.ael
+++ b/pbx/ael/ael-test/ael-test3/extensions.ael
@@ -3178,6 +3178,6 @@ context announce-all {
// now include the telemarketer torture scripts!
-#include "/etc/asterisk/telemarket_torture.ael2"
+#include "telemarket_torture.ael2"
diff --git a/pbx/ael/ael-test/ael-test3/telemarket_torture.ael2 b/pbx/ael/ael-test/ael-test3/telemarket_torture.ael2
new file mode 100755
index 000000000..ebd8e9f2f
--- /dev/null
+++ b/pbx/ael/ael-test/ael-test3/telemarket_torture.ael2
@@ -0,0 +1,812 @@
+//
+// AN EXCERSIZE IN BAD DIALPLAN DESIGN
+// (What better testing ground than on telemarketers?)
+//
+
+
+// BAD DESIGN: long, boring introductions followed by long, drawn out menus of choices.
+// if they survive to the last option, how will they remember the choices?
+//
+
+// BAD DESIGN: Amateur Recording. Poor voice quality, too quiet.
+// Also, the announcer is definitely not vocally gifted.
+// Also, the long pauses and clicks between the intro
+// and menu choices might lead some to think that
+// the announcements are over, and hang up. Too bad!
+
+// WORSE DESIGN: Instead of using the Background application, the Playback
+// application is used. After taking so much time and trouble
+// to record this material, the caller must listen and enjoy
+// every syllable before they can make an option choice. None
+// of that interrupting with a choice. We want them to savour
+// every word!
+
+// GOOD/BAD, ER INSIDIOUS -- DANGLE A CARROT-- GIVE THE LISTENER A GOOD REASON TO
+// HANG ON AND VOLUNTARILY LISTEN TO THE TORTURE.
+// BUT, DON'T MAKE PROMISES YOU WON'T KEEP!
+
+
+context telemarket {
+ s => {
+ begin:
+ Playback(telemarketer-intro); // ; Script:
+ // Due to the extremely high volume of calls from everything from telemarketers
+ // to Septic System Bacteria vendors, we are asking all such organizations
+ // to remove this number from their call list, or as need be, to add this
+ // number to their No-Call list, whichever is relevent.
+
+ // [THE CARROT:]
+ // We HAVE made some exceptions, and if you wish to see if your organization
+ // has been exempted, please listen to and follow the following prompts.
+ //
+ // Otherwise, please Cease calling this number!
+ //
+ Playback(telemarketer-choices);
+ // if you represent a charitable organization, please dial 1,
+ // if you represent a political organization, please dial 2.
+ // if you represent a polling company, please dial 3,
+ // if you represent a market research organization, please dial 4.
+ // if you represent a magazine or newsletter, please dial 5.
+ // if you represent a commercial organization, please dial 6.
+ }
+ 1 => goto telemarket-charity|s|begin;
+ 2 => goto telemarket-political|s|begin;
+ 3 => goto telemarket-pollster|s|begin;
+ 4 => goto telemarket-research|s|begin;
+ 5 => goto telemarket-magazine|s|begin;
+ 6 => goto telemarket-commercial|s|begin;
+ 7 => goto telemarket-other|s|begin;
+ t => goto telemarket|s|begin;
+ i => goto telemarket|s|begin;
+ o => goto telemarket|s|begin;
+}
+
+context telemarket-charity {
+ s => {
+ begin:
+ Playback(telemark-charity-intro);
+ // We have contributed generously to many worthy causes in the past, and will
+ // continue to do so in the future. But we suspect that such organizatons
+ // have sold our name and phone number to each other until we are now hounded
+ // day and night by literally hundreds of such organizations.
+ // Enough is Enough!
+ //
+ // If we have contributed to your cause in the past, we may, perhaps, be disposed to
+ // do so in the future, at our option,
+ // we give no pledges nor make any commitments here.
+ // Send us material via the post if you feel this necessary
+ // but do not even consider email. Any email or further phone calls from your organization
+ // in the future, will be considered an act of aggression, and we will
+ // blacklist your organization for the rest of our natural lives.
+ //
+ // To see if your organization is exempt from these prohibitions, please
+ // comply with the following options.
+ Playback(telemark-charity-choices);
+ // If your organization is disease or genetic defect related, dial 1,
+ // If your organization is handicap related, dial 2.
+ // If your organization is a police or fireman or other similar support entity, please dial 3.
+ // If your organization is a grade school to high school related
+ // fund raiser or other type of activity, please dial 4.
+ // If your organization is a college or univerity or alumnis organization, please dial 5.
+ // If your organization is animal rights or ecology related organization, please dial 6.
+ // If your organization is a political action or candidate support related, please dial 7.
+ // If your organization is a substance abuse related organization or cause, please dial 8.
+ // And any other charity or tax exempt organization should dial 9.
+ }
+ 1 => goto telemarket-char-disease|s|begin;
+ 2 => goto telemarket-char-handicap|s|begin;
+ 3 => goto telemarket-char-police|s|begin;
+ 4 => goto telemarket-char-school|s|begin;
+ 5 => goto telemarket-char-college|s|begin;
+ 6 => goto telemarket-char-animal|s|begin;
+ 7 => goto telemarket-char-candidate|s|begin;
+ 8 => goto telemarket-char-abuse|s|begin;
+ 9 => goto telemarket-char-other|s|begin;
+// BAD DESIGN: referring all timeouts,invalid choices, etc, back to the root of the menu tree will frustrate users no end!
+// WORSE DESIGN: How about having the user have to push a button to repeat the current menu? When a time out could just
+// automatically do it for the user?
+ t => goto telemarket|s|begin;
+ i => goto telemarket|s|begin;
+ o => goto telemarket|s|begin;
+}
+
+context telemarket-char-disease {
+ s => {
+ begin:
+ goto telemarket-sorry|s|begin;
+ }
+}
+
+context telemarket-char-handicap {
+ s => {
+ begin:
+ goto telemarket-sorry|s|begin;
+ }
+}
+
+context telemarket-char-police {
+ s => {
+ begin:
+ goto telemarket-sorry|s|begin;
+ }
+}
+
+context telemarket-char-school {
+ s => {
+ begin:
+ goto telemarket-sorry|s|begin;
+ }
+}
+
+context telemarket-char-college {
+ s => {
+ begin:
+ goto telemarket-sorry|s|begin;
+ }
+}
+
+context telemarket-char-animal {
+ s => {
+ begin:
+ goto telemarket-sorry|s|begin;
+ }
+}
+
+context telemarket-char-candidate {
+ s => {
+ begin:
+ goto telemarket-sorry|s|begin;
+ }
+}
+
+context telemarket-char-abuse {
+ s => {
+ begin:
+ goto telemarket-sorry|s|begin;
+ }
+}
+
+context telemarket-char-other {
+ s => {
+ begin:
+ goto telemarket-sorry|s|begin;
+ }
+}
+
+context telemarket-sorry {
+ s => {
+ begin:
+ Playback(telemarket-sorry);
+ // Sorry -- your organization is not exempt. Please stop calling us.
+ // Thank you. goodbye.
+ Hangup();
+ }
+}
+
+
+// BAD DESIGN: Hanging up on your audience, no matter what the outcome, is not a nice thing to do!
+
+context telemarket-exception {
+ s => {
+ begin:
+ Playback(telemarket-success);
+ // Congratulations. Your organization IS exempt. Please call us back,
+ // but this time, just act like a normal caller. Thank you. Goodbye.
+ Hangup();
+ }
+}
+
+
+// BAD DESIGN: Making long cascading menu choices is a nasty thing to do to callers!
+// BAD DESIGN: Putting the most frequently encountered items at the end of a list is also a nasty thing to do!
+
+
+// GOOD DESIGN: All rejection notices use a single context. All Acceptance also. To change a rejection to an
+// acceptance, just change the reference from telemarket-sorry to telemarket-exception
+
+
+context telemarket-political {
+ s => {
+ begin:
+ Playback(telemark-polit-intro);
+ // To see if your organization is exempt from our prohibitions,
+ // please follow the following prompts.
+ // please note that they are not in alphabetical order, and you will have to
+ // give them your full attention.
+ Playback(telemark-polit-choices);
+ // if You represent the America First Party, dial 1.
+ // if You represent the American Party, dial 2.
+ // if You represent the American Heritage Party, dial 3.
+ // if You represent the American Independent Party, dial 4.
+ // if You represent the American Nazi Party, dial 5.
+ // if You represent the Pot Party, dial 6.
+ // if You represent the American Reform Party, dial 7.
+ // if You represent the Christian Falenqist Party of America, dial 8.
+ // all others, please dial 9.
+ }
+ 1 => goto telemarket-poli-Am1st|s|begin;
+ 2 => goto telemarket-poli-American|s|begin;
+ 3 => goto telemarket-poli-AmHer|s|begin;
+ 4 => goto telemarket-poli-AmInd|s|begin;
+ 5 => goto telemarket-poli-AmNaz|s|begin;
+ 6 => goto telemarket-poli-Pot|s|begin;
+ 7 => goto telemarket-poli-AmRef|s|begin;
+ 8 => goto telemarket-poli-CFP|s|begin;
+ 9 => goto telemarket-political2|s|begin;
+ t => goto telemarket|s|begin;
+ i => goto telemarket|s|begin;
+ o => goto telemarket|s|begin;
+}
+
+context telemarket-political2 {
+ s => {
+ begin:
+ Playback(telemark-politx-intro);
+ // Thank you for your patience, and I congratulate you for your persistence.
+ // Just a few more options!
+ //
+ Playback(telemark-polit2-choices);
+ // if You represent the Communist Party USA, dial 1.
+ // if You represent the Constitution Party, dial 2.
+ // if You represent the Family Values Party, dial 3.
+ // if You represent the Freedom Socialist Party, dial 4.
+ // if You represent the Grass Roots Party, dial 5.
+ // if You represent the Green Party, dial 6.
+ // if You represent the Greens Party, dial 7.
+ // if You represent the Independence Party, dial 8.
+ // all others, goto 9.
+ }
+ 1 => goto telemarket-poli-Communist|s|begin;
+ 2 => goto telemarket-poli-Constit|s|begin;
+ 3 => goto telemarket-poli-FamVal|s|begin;
+ 4 => goto telemarket-poli-FreedSoc|s|begin;
+ 5 => goto telemarket-poli-Grassroot|s|begin;
+ 6 => goto telemarket-poli-Green|s|begin;
+ 7 => goto telemarket-poli-Greens|s|begin;
+ 8 => goto telemarket-poli-Independence|s|begin;
+ 9 => goto telemarket-political3|s|begin;
+ t => goto telemarket|s|begin;
+ i => goto telemarket|s|begin;
+ o => goto telemarket|s|begin;
+}
+
+context telemarket-political3 {
+ s => {
+ begin:
+ Playback(telemark-politx-intro);
+ Playback(telemark-polit3-choices);
+ // if You represent the Independant American Party, dial 1.
+ // if You represent the Labor Party, dial 2.
+ // if You represent the Libertarian Party, dial 3.
+ // if You represent the Light Party, dial 4.
+ // if You represent the Natural Law Party, dial 5.
+ // if You represent the New Party, dial 6.
+ // if You represent the New Union Party, dial 7.
+ // if You represent the Peace and Freedom Party, dial 8.
+ // all others, hang on, dial 9.
+ }
+ 1 => goto telemarket-poli-IndAm|s|begin;
+ 2 => goto telemarket-poli-Labor|s|begin;
+ 3 => goto telemarket-poli-Liber|s|begin;
+ 4 => goto telemarket-poli-Light|s|begin;
+ 5 => goto telemarket-poli-NatLaw|s|begin;
+ 6 => goto telemarket-poli-New|s|begin;
+ 7 => goto telemarket-poli-NewUn|s|begin;
+ 8 => goto telemarket-poli-PeaceFree|s|begin;
+ 9 => goto telemarket-political4|s|begin;
+ t => goto telemarket|s|begin;
+ i => goto telemarket|s|begin;
+ o => goto telemarket|s|begin;
+}
+
+
+context telemarket-political4 {
+ s => {
+ begin:
+ Playback(telemark-politx-intro);
+ Playback(telemark-polit4-choices);
+ // if You represent the Prohibition Party, dial 1.
+ // if You represent the Reform Party, dial 2.
+ // if You represent the Revolution , dial 3.
+ // if You represent the Socialist Party USA, dial 4.
+ // if You represent the Socialist Action Party, dial 5.
+ // if You represent the Socialist Equality Party, dial 6.
+ // if You represent the Socialist Labor Party, dial 7.
+ // if You represent the Socialist Workers Party, dial 8.
+ // all others, hang on, and dial 9.
+ }
+ 1 => goto telemarket-poli-Prohib|s|begin;
+ 2 => goto telemarket-poli-Ref|s|begin;
+ 3 => goto telemarket-poli-Revol|s|begin;
+ 4 => goto telemarket-poli-SocPart|s|begin;
+ 5 => goto telemarket-poli-SocAct|s|begin;
+ 6 => goto telemarket-poli-SocEq|s|begin;
+ 7 => goto telemarket-poli-SocLab|s|begin;
+ 8 => goto telemarket-poli-SocWork|s|begin;
+ 9 => goto telemarket-political5|s|begin;
+ t => goto telemarket|s|begin;
+ i => goto telemarket|s|begin;
+ o => goto telemarket|s|begin;
+}
+
+
+context telemarket-political5 {
+ s => {
+ begin:
+ Playback(telemark-politx-intro);
+ Playback(telemark-polit5-choices);
+ // if You represent the Southern Party, dial 1.
+ // if You represent the Southern Independence Party, dial 2.
+ // if You represent the US Pacifist Party, dial 3.
+ // if You represent the We the People Party, dial 4.
+ // if You represent the Workers World Party, dial 5.
+ // if You represent the Democratic Party, dial 6.
+ // if You represent the Republican Party, dial 7.
+ // all others, may dial 8.
+ }
+ 1 => goto telemarket-poli-South|s|begin;
+ 2 => goto telemarket-poli-SoInd|s|begin;
+ 3 => goto telemarket-poli-USPac|s|begin;
+ 4 => goto telemarket-poli-WTP|s|begin;
+ 5 => goto telemarket-poli-WWP|s|begin;
+ 6 => goto telemarket-poli-Democrat|s|begin;
+ 7 => goto telemarket-poli-Repub|s|begin;
+ 8 => goto telemarket-poli-other|s|begin;
+ t => goto telemarket|s|begin;
+ i => goto telemarket|s|begin;
+ o => goto telemarket|s|begin;
+}
+
+
+context telemarket-poli-other {
+ s => {
+ begin:
+ goto telemarket-sorry|s|begin;
+ }
+}
+
+context telemarket-poli-Repub {
+ s => {
+ begin:
+ goto telemarket-sorry|s|begin;
+ }
+}
+
+context telemarket-poli-Democrat {
+ s => {
+ begin:
+ goto telemarket-sorry|s|begin;
+ }
+}
+
+context telemarket-poli-WWP {
+ s => {
+ begin:
+ goto telemarket-sorry|s|begin;
+ }
+}
+
+context telemarket-poli-WTP {
+ s => {
+ begin:
+ goto telemarket-sorry|s|begin;
+ }
+}
+
+context telemarket-poli-USPac {
+ s => {
+ begin:
+ goto telemarket-sorry|s|begin;
+ }
+}
+
+context telemarket-poli-SoInd {
+ s => {
+ begin:
+ goto telemarket-sorry|s|begin;
+ }
+}
+
+context telemarket-poli-South {
+ s => {
+ begin:
+ goto telemarket-sorry|s|begin;
+ }
+}
+
+context telemarket-poli-SocWork {
+ s => {
+ begin:
+ goto telemarket-sorry|s|begin;
+ }
+}
+
+context telemarket-poli-SocLab {
+ s => {
+ begin:
+ goto telemarket-sorry|s|begin;
+ }
+}
+
+context telemarket-poli-SocEq {
+ s => {
+ begin:
+ goto telemarket-sorry|s|begin;
+ }
+}
+
+context telemarket-poli-SocAct {
+ s => {
+ begin:
+ goto telemarket-sorry|s|begin;
+ }
+}
+
+context telemarket-poli-SocPart {
+ s => {
+ begin:
+ goto telemarket-sorry|s|begin;
+ }
+}
+
+context telemarket-poli-Revol {
+ s => {
+ begin:
+ goto telemarket-sorry|s|begin;
+ }
+}
+
+context telemarket-poli-Ref {
+ s => {
+ begin:
+ goto telemarket-sorry|s|begin;
+ }
+}
+
+context telemarket-poli-Prohib {
+ s => {
+ begin:
+ goto telemarket-sorry|s|begin;
+ }
+}
+
+context telemarket-poli-PeaceFree {
+ s => {
+ begin:
+ goto telemarket-sorry|s|begin;
+ }
+}
+
+context telemarket-poli-NewUn {
+ s => {
+ begin:
+ goto telemarket-sorry|s|begin;
+ }
+}
+
+context telemarket-poli-New {
+ s => {
+ begin:
+ goto telemarket-sorry|s|begin;
+ }
+}
+
+context telemarket-poli-NatLaw {
+ s => {
+ begin:
+ goto telemarket-sorry|s|begin;
+ }
+}
+
+context telemarket-poli-Light {
+ s => {
+ begin:
+ goto telemarket-sorry|s|begin;
+ }
+}
+
+context telemarket-poli-Liber {
+ s => {
+ begin:
+ goto telemarket-sorry|s|begin;
+ }
+}
+
+context telemarket-poli-Labor {
+ s => {
+ begin:
+ goto telemarket-sorry|s|begin;
+ }
+}
+
+context telemarket-poli-IndAm {
+ s => {
+ begin:
+ goto telemarket-sorry|s|begin;
+ }
+}
+
+context telemarket-poli-Independence {
+ s => {
+ begin:
+ goto telemarket-sorry|s|begin;
+ }
+}
+
+context telemarket-poli-Greens {
+ s => {
+ begin:
+ goto telemarket-sorry|s|begin;
+ }
+}
+
+context telemarket-poli-Green {
+ s => {
+ begin:
+ goto telemarket-sorry|s|begin;
+ }
+}
+
+context telemarket-poli-Grassroot {
+ s => {
+ begin:
+ goto telemarket-sorry|s|begin;
+ }
+}
+
+context telemarket-poli-FreedSoc {
+ s => {
+ begin:
+ goto telemarket-sorry|s|begin;
+ }
+}
+
+context telemarket-poli-FamVal {
+ s => {
+ begin:
+ goto telemarket-sorry|s|begin;
+ }
+}
+
+context telemarket-poli-Constit {
+ s => {
+ begin:
+ goto telemarket-sorry|s|begin;
+ }
+}
+
+context telemarket-poli-Communist {
+ s => {
+ begin:
+ goto telemarket-sorry|s|begin;
+ }
+}
+
+context telemarket-poli-CFP {
+ s => {
+ begin:
+ goto telemarket-sorry|s|begin;
+ }
+}
+
+context telemarket-poli-AmRef {
+ s => {
+ begin:
+ goto telemarket-sorry|s|begin;
+ }
+}
+
+// BAD DESIGN: Putting in infinite loops in the menus, whether by design or mistake is not nice!
+context telemarket-poli-Pot {
+ s => {
+ begin:
+ goto telemarket-political|s|begin; // will the Pot Party Guys even notice an infinite loop?
+ }
+}
+
+context telemarket-poli-AmNaz {
+ s => {
+ begin:
+ goto telemarket-sorry|s|begin;
+ }
+}
+
+context telemarket-poli-AmInd {
+ s => {
+ begin:
+ goto telemarket-sorry|s|begin;
+ }
+}
+
+context telemarket-poli-AmHer {
+ s => {
+ begin:
+ goto telemarket-sorry|s|begin;
+ }
+}
+
+context telemarket-poli-American {
+ s => {
+ begin:
+ goto telemarket-sorry|s|begin;
+ }
+}
+
+context telemarket-poli-Am1st {
+ s => {
+ begin:
+ goto telemarket-sorry|s|begin;
+ }
+}
+
+
+context telemarket-pollster {
+ s => {
+ begin:
+ Playback(telemark-poll-intro);
+ // I'm sorry-- We are just not available for doing any polling at the moment. So,
+ // please remove us from your list.
+ goto telemarket-sorry|s|begin;
+ }
+ t => goto telemarket|s|begin;
+ i => goto telemarket|s|begin;
+ o => goto telemarket|s|begin;
+}
+
+
+context telemarket-research {
+ s => {
+ begin:
+ Playback(telemark-research-intro);
+ // I'd like to say I'd love to help you with your market survey, but that would be a complete
+ // and total lie. I am not interested in helping you with Market Surveys.
+ //
+ // Please remove me from your call list. It just doesn't pay enough. But Thank you.
+ goto telemarket-sorry|s|begin;
+ }
+ t => goto telemarket|s|begin;
+ i => goto telemarket|s|begin;
+ o => goto telemarket|s|begin;
+}
+
+
+context telemarket-magazine {
+ s => {
+ begin:
+ Playback(telemark-mag-choices);
+ // If you are calling to see if I would like a NEW free subscription
+ // to your magazine or newsletter, please dial 1.
+ // If you are calling to see if I want to Renew an existing subscription, please dial 2.
+ // If you are representing some publisher, and want my opinion about something, or are doing
+ // some kind of survey, please dial 3.
+ // If you are calling to verify that some previous caller actually called me, and the
+ // verification information is correct, please dial 4.
+ // and if your call purpose doesn't match any of the above, please dial 5.
+ }
+ 1 => goto telemark-mag-new|s|begin;
+ 2 => goto telemark-mag-renew|s|begin;
+ 3 => goto telemark-mag-survey|s|begin;
+ 4 => goto telemark-mag-verify|s|begin;
+ 5 => goto telemark-mag-other|s|begin;
+ t => goto telemarket|s|begin;
+ i => goto telemarket|s|begin;
+ o => goto telemarket|s|begin;
+}
+
+
+context telemark-mag-new {
+ s => {
+ begin:
+ Playback(telemark-mag-new);
+ // I'm sorry, I'm maxed out, and the answer is NO.
+ // If you really think I'd LOVE to add your publication to the pile I already get,
+ // Send something via the post. Don't call me.
+ // Thank you. bye.
+ Hangup();
+ }
+ t => goto telemarket|s|begin;
+ i => goto telemarket|s|begin;
+ o => goto telemarket|s|begin;
+}
+
+
+context telemark-mag-renew {
+ s => {
+ begin:
+ Playback(telemark-mag-renew);
+ // So, you want to see if I want to Renew, do you? The answer is most likely "YES".
+ //
+ // But, I will not answer a long list of questions over the phone. Send such
+ // categorization info via the post, and stop bothering me over the phone,
+ // if this is what you want.
+ // Do you need verification information? Normally I opt out of such nonsense, if possible.
+ // If not, use whatever of the following you can:
+ // My birth month is October.
+ // My birthplace is Kigali, in Rwanda, in Afica.
+ // My eye color is orange.
+ // All of these are wonderfully false, but I use them regularly for such purposes. Thank you.
+ Hangup();
+ }
+ t => goto telemarket|s|begin;
+ i => goto telemarket|s|begin;
+ o => goto telemarket|s|begin;
+}
+
+
+context telemark-mag-survey {
+ s => {
+ begin:
+ Playback(telemark-mag-survey);
+ // Sorry, I don't have time to answer survey or opinion questions. Find someone
+ // else to help build your marketing database, I guess. Good Luck.
+ Hangup();
+ }
+ t => goto telemarket|s|begin;
+ i => goto telemarket|s|begin;
+ o => goto telemarket|s|begin;
+}
+
+
+context telemark-mag-verify {
+ s => {
+ begin:
+ Playback(telemark-mag-verify);
+ // If you are calling to verify that your own agents aren't ripping you off,
+ // sorry, I can't help you. I opt out whenever I can, mainly because I'm not
+ // paid enough for this kind of thing. I always lie, and I can't remember
+ // what I might have said. Sorry. Goodbye.
+ Hangup();
+ }
+ t => goto telemarket|s|begin;
+ i => goto telemarket|s|begin;
+ o => goto telemarket|s|begin;
+}
+
+
+context telemark-mag-other {
+ s => {
+ begin:
+ goto telemarket-sorry|s|begin;
+ }
+}
+
+
+
+// BAD DESIGN: Is it entrapment, when you lure telemarketers to reveal their contact information,
+// Just so you can report them to the FTC/FCC? If it is, isn't it unethical for them
+// to hide their CID (via Anonymous, usually), to hide their identities from the public?
+
+// BTW -- What telemarketer would be stupid enough to fall for this? I'll bet not a single one!
+// For that matter, what telemarketer will be stupid enough to even enter any of this? I'll bet not a single one!
+// (but it was fun messing around).
+
+context telemarket-commercial {
+ s => {
+ begin:
+ Playback(telemark-comm-intro); // Script: Please leave your name, organization, and phone number, plus
+ // a short description of the purpose of your call, at the prompt.
+ // We will do our best to respond to your call! And, in the mean time,
+ // do not forget to add us to your no-call list!
+ Voicemail(u82);
+ goto telemarket-sorry|s|begin;
+ }
+ t => goto telemarket|s|begin;
+ i => goto telemarket|s|begin;
+ o => goto telemarket|s|begin;
+}
+
+
+context telemarket-other {
+ s => {
+ begin:
+ Playback(telemark-other-intro);
+ // Please review the previous menu options, and see if you really don't
+ // fit in one of the previous categories.
+ // If you do not, go ahead, and call me again, and let me know what category
+ // I should have included in the above list. I appreciate this. Thank you much!
+ Hangup();
+ }
+ t => goto telemarket|s|begin;
+ i => goto telemarket|s|begin;
+ o => goto telemarket|s|begin;
+}
diff --git a/pbx/ael/ael-test/ref.ael-test15 b/pbx/ael/ael-test/ref.ael-test15
new file mode 100644
index 000000000..08244c64c
--- /dev/null
+++ b/pbx/ael/ael-test/ref.ael-test15
@@ -0,0 +1,13 @@
+
+(If you find progress and other non-error messages irritating, you can use -q to suppress them)
+
+(You can use the -w option to dump extensions.conf format to extensions.conf.aeldump)
+LOG: lev:2 file:../pbx/pbx_ael.c line:3797 func: pbx_load_module Starting AEL load process.
+LOG: lev:2 file:../pbx/pbx_ael.c line:3804 func: pbx_load_module AEL load process: calculated config file name './extensions.ael'.
+LOG: lev:2 file:../pbx/pbx_ael.c line:3807 func: pbx_load_module AEL load process: parsed config file name './extensions.ael'.
+LOG: lev:2 file:../pbx/pbx_ael.c line:3810 func: pbx_load_module AEL load process: checked config file name './extensions.ael'.
+LOG: lev:3 file:../pbx/pbx_ael.c line:3700 func: ast_compile_ael2 Warning: file ./extensions.ael, line 8-13: Empty Extension!
+LOG: lev:2 file:../pbx/pbx_ael.c line:3812 func: pbx_load_module AEL load process: compiled config file name './extensions.ael'.
+LOG: lev:2 file:../pbx/pbx_ael.c line:3815 func: pbx_load_module AEL load process: merged config file name './extensions.ael'.
+LOG: lev:2 file:../pbx/pbx_ael.c line:3818 func: pbx_load_module AEL load process: verified config file name './extensions.ael'.
+LOG: lev:4 file:ael2_parse line:479 func: main 1 contexts, 0 extensions, 0 priorities
diff --git a/pbx/ael/ael-test/ref.ael-test3 b/pbx/ael/ael-test/ref.ael-test3
index 4a36336c4..ebdacba5c 100644
--- a/pbx/ael/ael-test/ref.ael-test3
+++ b/pbx/ael/ael-test/ref.ael-test3
@@ -2,17 +2,17 @@
(If you find progress and other non-error messages irritating, you can use -q to suppress them)
(You can use the -w option to dump extensions.conf format to extensions.conf.aeldump)
-LOG: lev:2 file:../pbx/pbx_ael.c line:3747 func: pbx_load_module Starting AEL load process.
-LOG: lev:2 file:../pbx/pbx_ael.c line:3754 func: pbx_load_module AEL load process: calculated config file name './extensions.ael'.
-LOG: lev:2 file:ael.flex line:422 func: ael_yylex --Read in included file ./include1.ael2, 78 chars
-LOG: lev:2 file:ael.flex line:422 func: ael_yylex --Read in included file ./include2.ael2, 98 chars
-LOG: lev:2 file:ael.flex line:422 func: ael_yylex --Read in included file ./include3.ael2, 57 chars
-LOG: lev:2 file:ael.flex line:422 func: ael_yylex --Read in included file ./include5.ael2, 56 chars
-LOG: lev:2 file:ael.flex line:422 func: ael_yylex --Read in included file ./include4.ael2, 87 chars
-LOG: lev:2 file:ael.flex line:422 func: ael_yylex --Read in included file /etc/asterisk/telemarket_torture.ael2, 28036 chars
-LOG: lev:2 file:../pbx/pbx_ael.c line:3757 func: pbx_load_module AEL load process: parsed config file name './extensions.ael'.
-LOG: lev:2 file:../pbx/pbx_ael.c line:3760 func: pbx_load_module AEL load process: checked config file name './extensions.ael'.
-LOG: lev:2 file:../pbx/pbx_ael.c line:3762 func: pbx_load_module AEL load process: compiled config file name './extensions.ael'.
-LOG: lev:2 file:../pbx/pbx_ael.c line:3765 func: pbx_load_module AEL load process: merged config file name './extensions.ael'.
-LOG: lev:2 file:../pbx/pbx_ael.c line:3768 func: pbx_load_module AEL load process: verified config file name './extensions.ael'.
-LOG: lev:4 file:ael2_parse line:458 func: main 172 contexts, 858 extensions, 2326 priorities
+LOG: lev:2 file:../pbx/pbx_ael.c line:3797 func: pbx_load_module Starting AEL load process.
+LOG: lev:2 file:../pbx/pbx_ael.c line:3804 func: pbx_load_module AEL load process: calculated config file name './extensions.ael'.
+LOG: lev:2 file:ael.flex line:431 func: ael_yylex --Read in included file ./include1.ael2, 78 chars
+LOG: lev:2 file:ael.flex line:431 func: ael_yylex --Read in included file ./include2.ael2, 98 chars
+LOG: lev:2 file:ael.flex line:431 func: ael_yylex --Read in included file ./include3.ael2, 57 chars
+LOG: lev:2 file:ael.flex line:431 func: ael_yylex --Read in included file ./include5.ael2, 56 chars
+LOG: lev:2 file:ael.flex line:431 func: ael_yylex --Read in included file ./include4.ael2, 87 chars
+LOG: lev:2 file:ael.flex line:431 func: ael_yylex --Read in included file ./telemarket_torture.ael2, 28036 chars
+LOG: lev:2 file:../pbx/pbx_ael.c line:3807 func: pbx_load_module AEL load process: parsed config file name './extensions.ael'.
+LOG: lev:2 file:../pbx/pbx_ael.c line:3810 func: pbx_load_module AEL load process: checked config file name './extensions.ael'.
+LOG: lev:2 file:../pbx/pbx_ael.c line:3812 func: pbx_load_module AEL load process: compiled config file name './extensions.ael'.
+LOG: lev:2 file:../pbx/pbx_ael.c line:3815 func: pbx_load_module AEL load process: merged config file name './extensions.ael'.
+LOG: lev:2 file:../pbx/pbx_ael.c line:3818 func: pbx_load_module AEL load process: verified config file name './extensions.ael'.
+LOG: lev:4 file:ael2_parse line:479 func: main 172 contexts, 858 extensions, 2326 priorities
diff --git a/pbx/ael/ael.flex b/pbx/ael/ael.flex
index f773dd4e9..1c4722e9b 100644
--- a/pbx/ael/ael.flex
+++ b/pbx/ael/ael.flex
@@ -26,7 +26,7 @@
*
* %x describes the contexts we have: paren, semic and argg, plus INITIAL
*/
-%x paren semic argg
+%x paren semic argg comment
/* prefix used for various globally-visible functions and variables.
* This renames also yywrap, but since we do not use it, we just
@@ -211,6 +211,13 @@ catch { STORE_POS; return KW_CATCH;}
switches { STORE_POS; return KW_SWITCHES;}
eswitches { STORE_POS; return KW_ESWITCHES;}
includes { STORE_POS; return KW_INCLUDES;}
+"/*" { BEGIN(comment); my_col += 2; }
+
+<comment>[^*\n]* { my_col += yyleng; }
+<comment>[^*\n]*\n { ++my_lineno; my_col=1;}
+<comment>"*"+[^*/\n]* { my_col += yyleng; }
+<comment>"*"+[^*/\n]*\n { ++my_lineno; my_col=1;}
+<comment>"*/" { my_col += 2; BEGIN(INITIAL); }
\n { my_lineno++; my_col = 1; }
[ ]+ { my_col += yyleng; }
diff --git a/pbx/ael/ael_lex.c b/pbx/ael/ael_lex.c
index 30dfd539b..e416f6afb 100644
--- a/pbx/ael/ael_lex.c
+++ b/pbx/ael/ael_lex.c
@@ -345,8 +345,8 @@ static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner );
*yy_cp = '\0'; \
yyg->yy_c_buf_p = yy_cp;
-#define YY_NUM_RULES 55
-#define YY_END_OF_BUFFER 56
+#define YY_NUM_RULES 61
+#define YY_END_OF_BUFFER 62
/* This struct is not used in this scanner,
but its presence is necessary. */
struct yy_trans_info
@@ -354,33 +354,34 @@ struct yy_trans_info
flex_int32_t yy_verify;
flex_int32_t yy_nxt;
};
-static yyconst flex_int16_t yy_accept[222] =
+static yyconst flex_int16_t yy_accept[234] =
{ 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 56, 55,
- 42, 40, 41, 43, 43, 9, 3, 4, 7, 43,
- 8, 5, 6, 12, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43, 43, 1,
- 10, 2, 55, 45, 44, 55, 46, 55, 51, 52,
- 53, 55, 55, 47, 48, 49, 55, 50, 42, 41,
- 43, 43, 13, 11, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 20, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 0, 45, 44, 0, 46,
- 45, 44, 46, 0, 51, 52, 53, 0, 51, 52,
-
- 53, 0, 47, 48, 49, 0, 50, 47, 48, 49,
- 50, 43, 13, 13, 43, 43, 43, 43, 43, 43,
- 43, 43, 31, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
- 33, 43, 43, 43, 25, 43, 43, 26, 24, 43,
- 43, 43, 27, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 29, 36, 43, 43, 43, 43, 43, 43,
- 43, 43, 16, 43, 43, 43, 43, 43, 32, 43,
- 43, 43, 43, 43, 43, 43, 21, 43, 43, 43,
- 22, 43, 28, 19, 43, 43, 14, 43, 34, 43,
-
- 17, 43, 43, 35, 43, 43, 43, 15, 30, 43,
- 43, 39, 23, 37, 0, 38, 18, 0, 0, 54,
- 0
+ 0, 0, 0, 0, 0, 0, 0, 0, 41, 41,
+ 62, 61, 48, 46, 47, 49, 49, 9, 3, 4,
+ 7, 49, 8, 5, 6, 12, 49, 49, 49, 49,
+ 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
+ 49, 1, 10, 2, 61, 51, 50, 61, 52, 61,
+ 57, 58, 59, 61, 61, 53, 54, 55, 61, 56,
+ 41, 42, 43, 48, 47, 49, 49, 40, 13, 11,
+ 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
+ 49, 20, 49, 49, 49, 49, 49, 49, 49, 49,
+ 49, 0, 51, 50, 0, 52, 51, 50, 52, 0,
+
+ 57, 58, 59, 0, 57, 58, 59, 0, 53, 54,
+ 55, 0, 56, 53, 54, 55, 56, 41, 42, 43,
+ 44, 43, 45, 49, 13, 13, 49, 49, 49, 49,
+ 49, 49, 49, 49, 31, 49, 49, 49, 49, 49,
+ 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
+ 49, 49, 33, 49, 49, 49, 25, 49, 49, 26,
+ 24, 49, 49, 49, 27, 49, 49, 49, 49, 49,
+ 49, 49, 49, 49, 29, 36, 49, 49, 49, 49,
+ 49, 49, 49, 49, 16, 49, 49, 49, 49, 49,
+ 32, 49, 49, 49, 49, 49, 49, 49, 21, 49,
+
+ 49, 49, 22, 49, 28, 19, 49, 49, 14, 49,
+ 34, 49, 17, 49, 49, 35, 49, 49, 49, 15,
+ 30, 49, 49, 39, 23, 37, 0, 38, 18, 0,
+ 0, 60, 0
} ;
static yyconst flex_int32_t yy_ec[256] =
@@ -389,16 +390,16 @@ static yyconst flex_int32_t yy_ec[256] =
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 4, 5, 6, 7, 5, 1, 8, 5, 9,
- 10, 5, 5, 11, 5, 5, 12, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 13, 14, 5,
- 15, 16, 1, 17, 5, 5, 5, 5, 5, 5,
+ 10, 11, 5, 12, 5, 5, 13, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 14, 15, 5,
+ 16, 17, 1, 18, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 18, 5, 5, 5, 5, 5, 5,
- 19, 20, 21, 1, 5, 1, 22, 23, 24, 25,
+ 5, 5, 5, 19, 5, 5, 5, 5, 5, 5,
+ 20, 21, 22, 1, 5, 1, 23, 24, 25, 26,
- 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
- 36, 37, 5, 38, 39, 40, 41, 5, 42, 43,
- 5, 5, 44, 45, 46, 1, 1, 1, 1, 1,
+ 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
+ 37, 38, 5, 39, 40, 41, 42, 5, 43, 44,
+ 5, 5, 45, 46, 47, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -415,363 +416,311 @@ static yyconst flex_int32_t yy_ec[256] =
1, 1, 1, 1, 1
} ;
-static yyconst flex_int32_t yy_meta[47] =
+static yyconst flex_int32_t yy_meta[48] =
{ 0,
1, 1, 2, 1, 3, 4, 3, 1, 1, 1,
- 1, 3, 1, 1, 1, 3, 1, 3, 3, 1,
+ 5, 1, 3, 1, 1, 1, 3, 1, 3, 3,
+ 1, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 1, 3
+ 3, 3, 3, 3, 3, 1, 3
} ;
-static yyconst flex_int16_t yy_base[232] =
+static yyconst flex_int16_t yy_base[247] =
{ 0,
- 0, 0, 38, 76, 114, 152, 190, 228, 220, 1238,
- 217, 1238, 214, 0, 187, 1238, 1238, 1238, 1238, 204,
- 1238, 1238, 199, 1238, 191, 175, 27, 186, 17, 172,
- 18, 177, 25, 165, 183, 182, 39, 161, 173, 1238,
- 1238, 1238, 266, 1238, 1238, 304, 1238, 342, 1238, 1238,
- 1238, 380, 418, 1238, 1238, 1238, 456, 1238, 195, 191,
- 0, 159, 502, 1238, 154, 166, 27, 156, 163, 150,
- 146, 149, 150, 145, 149, 165, 147, 157, 146, 155,
- 138, 142, 34, 146, 145, 539, 1238, 1238, 577, 1238,
- 615, 653, 691, 729, 1238, 1238, 1238, 767, 805, 843,
-
- 881, 919, 1238, 1238, 1238, 957, 1238, 995, 1033, 1071,
- 1109, 150, 0, 1155, 130, 147, 142, 143, 125, 142,
- 137, 129, 0, 134, 120, 115, 124, 117, 119, 114,
- 112, 109, 123, 121, 105, 105, 111, 110, 104, 109,
- 0, 111, 38, 98, 0, 98, 115, 0, 0, 102,
- 94, 90, 0, 94, 103, 91, 83, 87, 97, 93,
- 77, 95, 0, 0, 73, 80, 81, 89, 79, 85,
- 84, 84, 0, 70, 73, 66, 70, 75, 0, 78,
- 78, 61, 59, 59, 69, 55, 0, 56, 66, 56,
- 0, 64, 0, 63, 62, 47, 0, 57, 0, 55,
-
- 0, 58, 40, 0, 43, 37, 67, 0, 0, 33,
- 30, 0, 0, 0, 71, 0, 0, 0, 49, 1238,
- 1238, 1200, 1204, 1208, 1210, 1214, 1218, 1222, 1226, 1230,
- 1234
+ 0, 0, 39, 42, 81, 120, 159, 198, 47, 54,
+ 310, 985, 307, 985, 304, 0, 276, 985, 985, 985,
+ 985, 42, 985, 985, 289, 985, 281, 265, 31, 276,
+ 32, 265, 33, 270, 45, 258, 276, 272, 48, 251,
+ 263, 985, 985, 985, 73, 985, 985, 89, 985, 237,
+ 985, 985, 985, 276, 315, 985, 985, 985, 354, 985,
+ 289, 985, 66, 288, 285, 0, 252, 0, 401, 985,
+ 247, 256, 64, 245, 252, 239, 235, 238, 239, 234,
+ 238, 254, 236, 246, 235, 244, 227, 231, 47, 235,
+ 234, 103, 985, 985, 137, 985, 142, 176, 181, 439,
+
+ 985, 985, 985, 478, 517, 556, 595, 634, 985, 985,
+ 985, 673, 985, 712, 751, 790, 829, 261, 985, 103,
+ 985, 104, 985, 238, 0, 876, 221, 238, 233, 231,
+ 214, 231, 226, 220, 0, 226, 212, 207, 213, 205,
+ 207, 202, 200, 197, 211, 209, 193, 193, 199, 198,
+ 192, 197, 0, 199, 100, 185, 0, 184, 201, 0,
+ 0, 187, 178, 174, 0, 178, 187, 176, 168, 172,
+ 184, 178, 158, 176, 0, 0, 151, 158, 159, 167,
+ 154, 156, 151, 151, 0, 137, 140, 132, 130, 131,
+ 0, 134, 131, 114, 112, 112, 119, 105, 0, 106,
+
+ 116, 103, 0, 111, 0, 110, 106, 91, 0, 95,
+ 0, 94, 0, 96, 68, 0, 64, 57, 76, 0,
+ 0, 52, 44, 0, 0, 0, 168, 0, 0, 0,
+ 50, 985, 985, 922, 927, 932, 937, 940, 945, 950,
+ 955, 960, 964, 969, 974, 979
} ;
-static yyconst flex_int16_t yy_def[232] =
+static yyconst flex_int16_t yy_def[247] =
{ 0,
- 221, 1, 222, 222, 223, 223, 224, 224, 221, 221,
- 221, 221, 221, 225, 225, 221, 221, 221, 221, 225,
- 221, 221, 221, 221, 225, 225, 225, 225, 225, 225,
- 225, 225, 225, 225, 225, 225, 225, 225, 225, 221,
- 221, 221, 226, 221, 221, 226, 221, 227, 221, 221,
- 221, 227, 228, 221, 221, 221, 228, 221, 221, 221,
- 225, 225, 229, 221, 225, 225, 225, 225, 225, 225,
- 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
- 225, 225, 225, 225, 225, 226, 221, 221, 226, 221,
- 226, 226, 226, 227, 221, 221, 221, 227, 227, 227,
-
- 227, 228, 221, 221, 221, 228, 221, 228, 228, 228,
- 228, 225, 230, 229, 225, 225, 225, 225, 225, 225,
- 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
- 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
- 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
- 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
- 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
- 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
- 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
- 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
-
- 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
- 225, 225, 225, 225, 221, 225, 225, 231, 231, 221,
- 0, 221, 221, 221, 221, 221, 221, 221, 221, 221,
- 221
+ 233, 1, 234, 234, 235, 235, 236, 236, 237, 237,
+ 233, 233, 233, 233, 233, 238, 238, 233, 233, 233,
+ 233, 238, 233, 233, 233, 233, 238, 238, 238, 238,
+ 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
+ 238, 233, 233, 233, 239, 233, 233, 239, 233, 240,
+ 233, 233, 233, 240, 241, 233, 233, 233, 241, 233,
+ 242, 233, 243, 233, 233, 238, 238, 238, 244, 233,
+ 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
+ 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
+ 238, 239, 233, 233, 239, 233, 239, 239, 239, 240,
+
+ 233, 233, 233, 240, 240, 240, 240, 241, 233, 233,
+ 233, 241, 233, 241, 241, 241, 241, 242, 233, 243,
+ 233, 243, 233, 238, 245, 244, 238, 238, 238, 238,
+ 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
+ 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
+ 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
+ 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
+ 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
+ 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
+ 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
+
+ 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
+ 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
+ 238, 238, 238, 238, 238, 238, 233, 238, 238, 246,
+ 246, 233, 0, 233, 233, 233, 233, 233, 233, 233,
+ 233, 233, 233, 233, 233, 233
} ;
-static yyconst flex_int16_t yy_nxt[1285] =
+static yyconst flex_int16_t yy_nxt[1033] =
{ 0,
- 10, 11, 12, 13, 14, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 14, 24, 14, 14, 10,
- 14, 25, 26, 27, 28, 29, 30, 31, 32, 33,
- 34, 14, 14, 35, 14, 14, 36, 37, 38, 14,
- 14, 39, 14, 40, 41, 42, 44, 45, 67, 70,
- 73, 76, 77, 74, 220, 71, 44, 46, 47, 78,
- 82, 134, 68, 165, 83, 117, 118, 166, 215, 217,
- 215, 216, 215, 135, 215, 214, 218, 213, 212, 211,
- 210, 44, 209, 47, 44, 45, 208, 207, 206, 205,
- 204, 203, 202, 201, 44, 46, 47, 200, 199, 198,
-
- 197, 196, 195, 194, 193, 192, 191, 190, 189, 188,
- 187, 186, 185, 184, 183, 182, 181, 180, 179, 44,
- 178, 47, 49, 50, 177, 176, 175, 51, 174, 173,
- 172, 171, 49, 52, 50, 170, 169, 168, 167, 164,
- 163, 162, 161, 160, 159, 158, 157, 156, 155, 154,
- 153, 152, 151, 150, 149, 148, 147, 49, 146, 50,
- 49, 50, 145, 144, 143, 51, 142, 141, 140, 139,
- 49, 52, 50, 138, 137, 136, 133, 132, 131, 130,
- 129, 128, 127, 126, 125, 124, 123, 122, 121, 120,
- 119, 116, 115, 112, 60, 49, 59, 50, 54, 55,
-
- 56, 85, 84, 81, 80, 79, 75, 72, 54, 57,
- 58, 69, 66, 65, 64, 63, 62, 60, 59, 221,
- 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
- 221, 221, 221, 54, 221, 58, 54, 55, 56, 221,
- 221, 221, 221, 221, 221, 221, 54, 57, 58, 221,
- 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
- 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
- 221, 54, 221, 58, 87, 88, 221, 221, 221, 221,
- 221, 221, 221, 221, 87, 89, 90, 221, 221, 221,
- 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
-
- 221, 221, 221, 221, 221, 221, 221, 221, 221, 87,
- 221, 90, 91, 92, 221, 221, 221, 221, 221, 221,
- 221, 221, 91, 89, 93, 221, 221, 221, 221, 221,
- 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
- 221, 221, 221, 221, 221, 221, 221, 91, 221, 93,
- 95, 96, 221, 221, 221, 97, 221, 221, 221, 221,
- 95, 98, 96, 221, 221, 221, 221, 221, 221, 221,
- 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
- 221, 221, 221, 221, 221, 95, 221, 96, 99, 100,
- 221, 221, 221, 101, 221, 221, 221, 221, 99, 98,
-
- 100, 221, 221, 221, 221, 221, 221, 221, 221, 221,
- 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
- 221, 221, 221, 99, 221, 100, 103, 104, 105, 221,
- 221, 221, 221, 221, 221, 221, 103, 106, 107, 221,
- 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
- 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
- 221, 103, 221, 107, 108, 109, 110, 221, 221, 221,
- 221, 221, 221, 221, 108, 106, 111, 221, 221, 221,
- 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
- 221, 221, 221, 221, 221, 221, 221, 221, 221, 108,
-
- 221, 111, 113, 113, 221, 113, 221, 221, 221, 113,
- 113, 113, 113, 221, 113, 113, 113, 221, 113, 221,
- 221, 113, 221, 221, 221, 221, 221, 221, 221, 221,
- 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
- 221, 221, 221, 221, 221, 221, 113, 87, 88, 221,
- 221, 221, 221, 221, 221, 221, 221, 87, 89, 90,
- 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
- 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
- 221, 221, 87, 221, 90, 91, 92, 221, 221, 221,
- 221, 221, 221, 221, 221, 91, 89, 93, 221, 221,
-
- 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
- 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
- 91, 221, 93, 87, 88, 221, 221, 221, 221, 221,
- 221, 221, 221, 87, 89, 90, 221, 221, 221, 221,
- 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
- 221, 221, 221, 221, 221, 221, 221, 221, 87, 221,
- 90, 87, 88, 221, 221, 221, 221, 221, 221, 221,
- 221, 87, 89, 90, 221, 221, 221, 221, 221, 221,
- 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
- 221, 221, 221, 221, 221, 221, 87, 221, 90, 87,
-
- 88, 221, 221, 221, 221, 221, 221, 221, 221, 87,
- 89, 90, 221, 221, 221, 221, 221, 221, 221, 221,
- 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
- 221, 221, 221, 221, 87, 221, 90, 95, 96, 221,
- 221, 221, 97, 221, 221, 221, 221, 95, 98, 96,
- 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
- 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
- 221, 221, 95, 221, 96, 99, 100, 221, 221, 221,
- 101, 221, 221, 221, 221, 99, 98, 100, 221, 221,
- 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
-
- 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
- 99, 221, 100, 95, 96, 221, 221, 221, 97, 221,
- 221, 221, 221, 95, 98, 96, 221, 221, 221, 221,
- 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
- 221, 221, 221, 221, 221, 221, 221, 221, 95, 221,
- 96, 95, 96, 221, 221, 221, 97, 221, 221, 221,
- 221, 95, 98, 96, 221, 221, 221, 221, 221, 221,
- 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
- 221, 221, 221, 221, 221, 221, 95, 221, 96, 95,
- 96, 221, 221, 221, 97, 221, 221, 221, 221, 95,
-
- 98, 96, 221, 221, 221, 221, 221, 221, 221, 221,
- 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
- 221, 221, 221, 221, 95, 221, 96, 103, 104, 105,
- 221, 221, 221, 221, 221, 221, 221, 103, 106, 107,
- 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
- 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
- 221, 221, 103, 221, 107, 108, 109, 110, 221, 221,
- 221, 221, 221, 221, 221, 108, 106, 111, 221, 221,
- 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
- 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
-
- 108, 221, 111, 103, 104, 105, 221, 221, 221, 221,
- 221, 221, 221, 103, 106, 107, 221, 221, 221, 221,
- 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
- 221, 221, 221, 221, 221, 221, 221, 221, 103, 221,
- 107, 103, 104, 105, 221, 221, 221, 221, 221, 221,
- 221, 103, 106, 107, 221, 221, 221, 221, 221, 221,
- 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
- 221, 221, 221, 221, 221, 221, 103, 221, 107, 103,
- 104, 105, 221, 221, 221, 221, 221, 221, 221, 103,
- 106, 107, 221, 221, 221, 221, 221, 221, 221, 221,
-
- 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
- 221, 221, 221, 221, 103, 221, 107, 103, 104, 105,
- 221, 221, 221, 221, 221, 221, 221, 103, 106, 107,
- 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
- 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
- 221, 221, 103, 221, 107, 113, 113, 221, 113, 221,
- 221, 221, 113, 113, 113, 113, 221, 113, 113, 113,
- 221, 113, 221, 221, 113, 221, 221, 221, 221, 221,
- 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
- 221, 221, 221, 221, 221, 221, 221, 221, 221, 113,
-
- 43, 43, 43, 43, 48, 48, 48, 48, 53, 53,
- 53, 53, 61, 61, 86, 86, 86, 86, 94, 94,
- 94, 94, 102, 102, 102, 102, 114, 221, 114, 114,
- 113, 221, 113, 113, 219, 219, 219, 9, 221, 221,
- 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
- 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
- 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
- 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
- 221, 221, 221, 221
+ 12, 13, 14, 15, 16, 16, 17, 18, 19, 20,
+ 16, 21, 22, 23, 24, 25, 16, 26, 16, 16,
+ 12, 16, 27, 28, 29, 30, 31, 32, 33, 34,
+ 35, 36, 16, 16, 37, 16, 16, 38, 39, 40,
+ 16, 16, 41, 16, 42, 43, 44, 46, 47, 62,
+ 46, 47, 68, 73, 69, 232, 62, 63, 46, 48,
+ 49, 46, 48, 49, 63, 76, 79, 74, 121, 80,
+ 88, 77, 82, 83, 89, 146, 122, 227, 123, 227,
+ 84, 93, 94, 46, 229, 49, 46, 147, 49, 51,
+ 52, 228, 93, 95, 96, 53, 226, 97, 98, 225,
+
+ 51, 54, 52, 129, 130, 121, 121, 224, 97, 95,
+ 99, 93, 94, 233, 122, 233, 233, 93, 223, 96,
+ 222, 221, 93, 95, 96, 51, 177, 52, 51, 52,
+ 178, 220, 219, 97, 53, 99, 218, 217, 216, 51,
+ 54, 52, 215, 214, 213, 97, 98, 93, 212, 96,
+ 93, 94, 211, 210, 209, 208, 97, 95, 99, 207,
+ 206, 93, 95, 96, 51, 205, 52, 56, 57, 227,
+ 58, 227, 204, 230, 203, 202, 201, 200, 56, 59,
+ 60, 97, 199, 99, 93, 94, 93, 198, 96, 93,
+ 94, 197, 196, 195, 194, 93, 95, 96, 193, 192,
+
+ 93, 95, 96, 56, 191, 60, 56, 57, 190, 58,
+ 189, 188, 187, 186, 185, 184, 183, 56, 59, 60,
+ 93, 182, 96, 181, 180, 93, 179, 96, 176, 175,
+ 174, 173, 172, 171, 170, 169, 168, 167, 166, 165,
+ 164, 163, 56, 162, 60, 101, 102, 161, 160, 159,
+ 158, 103, 157, 156, 155, 154, 101, 104, 102, 153,
+ 152, 151, 150, 119, 149, 148, 145, 144, 143, 142,
+ 141, 140, 139, 138, 137, 136, 135, 134, 133, 132,
+ 131, 101, 128, 102, 105, 106, 127, 124, 65, 64,
+ 107, 119, 91, 90, 87, 105, 104, 106, 86, 85,
+
+ 81, 78, 75, 72, 71, 70, 67, 65, 64, 233,
+ 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
+ 105, 233, 106, 109, 110, 233, 111, 233, 233, 233,
+ 233, 233, 233, 233, 109, 112, 113, 233, 233, 233,
+ 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
+ 233, 233, 233, 233, 233, 233, 233, 233, 233, 109,
+ 233, 113, 114, 115, 233, 116, 233, 233, 233, 233,
+ 233, 233, 233, 114, 112, 117, 233, 233, 233, 233,
+ 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
+ 233, 233, 233, 233, 233, 233, 233, 233, 114, 233,
+
+ 117, 125, 125, 233, 125, 233, 233, 233, 125, 125,
+ 125, 233, 125, 233, 125, 125, 125, 233, 125, 233,
+ 233, 125, 233, 233, 233, 233, 233, 233, 233, 233,
+ 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
+ 233, 233, 233, 233, 233, 233, 125, 101, 102, 233,
+ 233, 233, 233, 103, 233, 233, 233, 233, 101, 104,
+ 102, 233, 233, 233, 233, 233, 233, 233, 233, 233,
+ 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
+ 233, 233, 233, 101, 233, 102, 105, 106, 233, 233,
+ 233, 233, 107, 233, 233, 233, 233, 105, 104, 106,
+
+ 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
+ 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
+ 233, 233, 105, 233, 106, 101, 102, 233, 233, 233,
+ 233, 103, 233, 233, 233, 233, 101, 104, 102, 233,
+ 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
+ 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
+ 233, 101, 233, 102, 101, 102, 233, 233, 233, 233,
+ 103, 233, 233, 233, 233, 101, 104, 102, 233, 233,
+ 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
+ 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
+
+ 101, 233, 102, 101, 102, 233, 233, 233, 233, 103,
+ 233, 233, 233, 233, 101, 104, 102, 233, 233, 233,
+ 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
+ 233, 233, 233, 233, 233, 233, 233, 233, 233, 101,
+ 233, 102, 109, 110, 233, 111, 233, 233, 233, 233,
+ 233, 233, 233, 109, 112, 113, 233, 233, 233, 233,
+ 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
+ 233, 233, 233, 233, 233, 233, 233, 233, 109, 233,
+ 113, 114, 115, 233, 116, 233, 233, 233, 233, 233,
+ 233, 233, 114, 112, 117, 233, 233, 233, 233, 233,
+
+ 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
+ 233, 233, 233, 233, 233, 233, 233, 114, 233, 117,
+ 109, 110, 233, 111, 233, 233, 233, 233, 233, 233,
+ 233, 109, 112, 113, 233, 233, 233, 233, 233, 233,
+ 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
+ 233, 233, 233, 233, 233, 233, 109, 233, 113, 109,
+ 110, 233, 111, 233, 233, 233, 233, 233, 233, 233,
+ 109, 112, 113, 233, 233, 233, 233, 233, 233, 233,
+ 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
+ 233, 233, 233, 233, 233, 109, 233, 113, 109, 110,
+
+ 233, 111, 233, 233, 233, 233, 233, 233, 233, 109,
+ 112, 113, 233, 233, 233, 233, 233, 233, 233, 233,
+ 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
+ 233, 233, 233, 233, 109, 233, 113, 109, 110, 233,
+ 111, 233, 233, 233, 233, 233, 233, 233, 109, 112,
+ 113, 233, 233, 233, 233, 233, 233, 233, 233, 233,
+ 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
+ 233, 233, 233, 109, 233, 113, 125, 125, 233, 125,
+ 233, 233, 233, 125, 125, 125, 233, 125, 233, 125,
+ 125, 125, 233, 125, 233, 233, 125, 233, 233, 233,
+
+ 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
+ 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
+ 233, 125, 45, 45, 45, 45, 45, 50, 50, 50,
+ 50, 50, 55, 55, 55, 55, 55, 61, 61, 61,
+ 61, 61, 66, 66, 66, 92, 92, 92, 92, 92,
+ 100, 100, 100, 100, 100, 108, 108, 108, 108, 108,
+ 118, 118, 118, 118, 120, 120, 120, 120, 120, 126,
+ 233, 126, 126, 126, 125, 233, 125, 125, 125, 231,
+ 231, 231, 233, 231, 11, 233, 233, 233, 233, 233,
+ 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
+
+ 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
+ 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
+ 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
+ 233, 233
} ;
-static yyconst flex_int16_t yy_chk[1285] =
+static yyconst flex_int16_t yy_chk[1033] =
{ 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 3, 3, 27, 29,
- 31, 33, 33, 31, 219, 29, 3, 3, 3, 33,
- 37, 83, 27, 143, 37, 67, 67, 143, 207, 211,
- 207, 210, 215, 83, 215, 206, 215, 205, 203, 202,
- 200, 3, 198, 3, 4, 4, 196, 195, 194, 192,
- 190, 189, 188, 186, 4, 4, 4, 185, 184, 183,
-
- 182, 181, 180, 178, 177, 176, 175, 174, 172, 171,
- 170, 169, 168, 167, 166, 165, 162, 161, 160, 4,
- 159, 4, 5, 5, 158, 157, 156, 5, 155, 154,
- 152, 151, 5, 5, 5, 150, 147, 146, 144, 142,
- 140, 139, 138, 137, 136, 135, 134, 133, 132, 131,
- 130, 129, 128, 127, 126, 125, 124, 5, 122, 5,
- 6, 6, 121, 120, 119, 6, 118, 117, 116, 115,
- 6, 6, 6, 112, 85, 84, 82, 81, 80, 79,
- 78, 77, 76, 75, 74, 73, 72, 71, 70, 69,
- 68, 66, 65, 62, 60, 6, 59, 6, 7, 7,
-
- 7, 39, 38, 36, 35, 34, 32, 30, 7, 7,
- 7, 28, 26, 25, 23, 20, 15, 13, 11, 9,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 7, 0, 7, 8, 8, 8, 0,
- 0, 0, 0, 0, 0, 0, 8, 8, 8, 0,
+ 1, 1, 1, 1, 1, 1, 1, 3, 3, 9,
+ 4, 4, 22, 29, 22, 231, 10, 9, 3, 3,
+ 3, 4, 4, 4, 10, 31, 33, 29, 63, 33,
+ 39, 31, 35, 35, 39, 89, 63, 219, 63, 219,
+ 35, 45, 45, 3, 223, 3, 4, 89, 4, 5,
+ 5, 222, 45, 45, 45, 5, 218, 48, 48, 217,
+
+ 5, 5, 5, 73, 73, 120, 122, 215, 48, 48,
+ 48, 92, 92, 120, 122, 120, 122, 45, 214, 45,
+ 212, 210, 92, 92, 92, 5, 155, 5, 6, 6,
+ 155, 208, 207, 48, 6, 48, 206, 204, 202, 6,
+ 6, 6, 201, 200, 198, 95, 95, 92, 197, 92,
+ 97, 97, 196, 195, 194, 193, 95, 95, 95, 192,
+ 190, 97, 97, 97, 6, 189, 6, 7, 7, 227,
+ 7, 227, 188, 227, 187, 186, 184, 183, 7, 7,
+ 7, 95, 182, 95, 98, 98, 97, 181, 97, 99,
+ 99, 180, 179, 178, 177, 98, 98, 98, 174, 173,
+
+ 99, 99, 99, 7, 172, 7, 8, 8, 171, 8,
+ 170, 169, 168, 167, 166, 164, 163, 8, 8, 8,
+ 98, 162, 98, 159, 158, 99, 156, 99, 154, 152,
+ 151, 150, 149, 148, 147, 146, 145, 144, 143, 142,
+ 141, 140, 8, 139, 8, 50, 50, 138, 137, 136,
+ 134, 50, 133, 132, 131, 130, 50, 50, 50, 129,
+ 128, 127, 124, 118, 91, 90, 88, 87, 86, 85,
+ 84, 83, 82, 81, 80, 79, 78, 77, 76, 75,
+ 74, 50, 72, 50, 54, 54, 71, 67, 65, 64,
+ 54, 61, 41, 40, 38, 54, 54, 54, 37, 36,
+
+ 34, 32, 30, 28, 27, 25, 17, 15, 13, 11,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 54, 0, 54, 55, 55, 0, 55, 0, 0, 0,
+ 0, 0, 0, 0, 55, 55, 55, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 8, 0, 8, 43, 43, 0, 0, 0, 0,
- 0, 0, 0, 0, 43, 43, 43, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 55,
+ 0, 55, 59, 59, 0, 59, 0, 0, 0, 0,
+ 0, 0, 0, 59, 59, 59, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 59, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 43,
- 0, 43, 46, 46, 0, 0, 0, 0, 0, 0,
- 0, 0, 46, 46, 46, 0, 0, 0, 0, 0,
+ 59, 69, 69, 0, 69, 0, 0, 0, 69, 69,
+ 69, 0, 69, 0, 69, 69, 69, 0, 69, 0,
+ 0, 69, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 46, 0, 46,
- 48, 48, 0, 0, 0, 48, 0, 0, 0, 0,
- 48, 48, 48, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 69, 100, 100, 0,
+ 0, 0, 0, 100, 0, 0, 0, 0, 100, 100,
+ 100, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 48, 0, 48, 52, 52,
- 0, 0, 0, 52, 0, 0, 0, 0, 52, 52,
+ 0, 0, 0, 100, 0, 100, 104, 104, 0, 0,
+ 0, 0, 104, 0, 0, 0, 0, 104, 104, 104,
- 52, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 52, 0, 52, 53, 53, 53, 0,
- 0, 0, 0, 0, 0, 0, 53, 53, 53, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 53, 0, 53, 57, 57, 57, 0, 0, 0,
- 0, 0, 0, 0, 57, 57, 57, 0, 0, 0,
+ 0, 0, 104, 0, 104, 105, 105, 0, 0, 0,
+ 0, 105, 0, 0, 0, 0, 105, 105, 105, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 57,
-
- 0, 57, 63, 63, 0, 63, 0, 0, 0, 63,
- 63, 63, 63, 0, 63, 63, 63, 0, 63, 0,
- 0, 63, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 63, 86, 86, 0,
- 0, 0, 0, 0, 0, 0, 0, 86, 86, 86,
+ 0, 105, 0, 105, 106, 106, 0, 0, 0, 0,
+ 106, 0, 0, 0, 0, 106, 106, 106, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 86, 0, 86, 89, 89, 0, 0, 0,
- 0, 0, 0, 0, 0, 89, 89, 89, 0, 0,
+ 106, 0, 106, 107, 107, 0, 0, 0, 0, 107,
+ 0, 0, 0, 0, 107, 107, 107, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 107,
+ 0, 107, 108, 108, 0, 108, 0, 0, 0, 0,
+ 0, 0, 0, 108, 108, 108, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 89, 0, 89, 91, 91, 0, 0, 0, 0, 0,
- 0, 0, 0, 91, 91, 91, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 91, 0,
- 91, 92, 92, 0, 0, 0, 0, 0, 0, 0,
- 0, 92, 92, 92, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 92, 0, 92, 93,
-
- 93, 0, 0, 0, 0, 0, 0, 0, 0, 93,
- 93, 93, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 93, 0, 93, 94, 94, 0,
- 0, 0, 94, 0, 0, 0, 0, 94, 94, 94,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 94, 0, 94, 98, 98, 0, 0, 0,
- 98, 0, 0, 0, 0, 98, 98, 98, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 98, 0, 98, 99, 99, 0, 0, 0, 99, 0,
- 0, 0, 0, 99, 99, 99, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 99, 0,
- 99, 100, 100, 0, 0, 0, 100, 0, 0, 0,
- 0, 100, 100, 100, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 100, 0, 100, 101,
- 101, 0, 0, 0, 101, 0, 0, 0, 0, 101,
+ 0, 0, 0, 0, 0, 0, 0, 0, 108, 0,
+ 108, 112, 112, 0, 112, 0, 0, 0, 0, 0,
+ 0, 0, 112, 112, 112, 0, 0, 0, 0, 0,
- 101, 101, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 101, 0, 101, 102, 102, 102,
- 0, 0, 0, 0, 0, 0, 0, 102, 102, 102,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 102, 0, 102, 106, 106, 106, 0, 0,
- 0, 0, 0, 0, 0, 106, 106, 106, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 112, 0, 112,
+ 114, 114, 0, 114, 0, 0, 0, 0, 0, 0,
+ 0, 114, 114, 114, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 114, 0, 114, 115,
+ 115, 0, 115, 0, 0, 0, 0, 0, 0, 0,
+ 115, 115, 115, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 115, 0, 115, 116, 116,
- 106, 0, 106, 108, 108, 108, 0, 0, 0, 0,
- 0, 0, 0, 108, 108, 108, 0, 0, 0, 0,
+ 0, 116, 0, 0, 0, 0, 0, 0, 0, 116,
+ 116, 116, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 108, 0,
- 108, 109, 109, 109, 0, 0, 0, 0, 0, 0,
- 0, 109, 109, 109, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 116, 0, 116, 117, 117, 0,
+ 117, 0, 0, 0, 0, 0, 0, 0, 117, 117,
+ 117, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 109, 0, 109, 110,
- 110, 110, 0, 0, 0, 0, 0, 0, 0, 110,
- 110, 110, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 117, 0, 117, 126, 126, 0, 126,
+ 0, 0, 0, 126, 126, 126, 0, 126, 0, 126,
+ 126, 126, 0, 126, 0, 0, 126, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 110, 0, 110, 111, 111, 111,
- 0, 0, 0, 0, 0, 0, 0, 111, 111, 111,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 111, 0, 111, 114, 114, 0, 114, 0,
- 0, 0, 114, 114, 114, 114, 0, 114, 114, 114,
- 0, 114, 0, 0, 114, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 114,
-
- 222, 222, 222, 222, 223, 223, 223, 223, 224, 224,
- 224, 224, 225, 225, 226, 226, 226, 226, 227, 227,
- 227, 227, 228, 228, 228, 228, 229, 0, 229, 229,
- 230, 0, 230, 230, 231, 231, 231, 221, 221, 221,
- 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
- 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
- 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
- 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
- 221, 221, 221, 221
+ 0, 126, 234, 234, 234, 234, 234, 235, 235, 235,
+ 235, 235, 236, 236, 236, 236, 236, 237, 237, 237,
+ 237, 237, 238, 238, 238, 239, 239, 239, 239, 239,
+ 240, 240, 240, 240, 240, 241, 241, 241, 241, 241,
+ 242, 242, 242, 242, 243, 243, 243, 243, 243, 244,
+ 0, 244, 244, 244, 245, 0, 245, 245, 245, 246,
+ 246, 246, 0, 246, 233, 233, 233, 233, 233, 233,
+ 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
+
+ 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
+ 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
+ 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
+ 233, 233
} ;
/* The intent behind this definition is that it'll catch
@@ -932,18 +881,21 @@ static void pbcwhere(const char *text, int *line, int *col )
#define STORE_POS
#define STORE_LOC
#endif
-#line 935 "ael_lex.c"
+#line 884 "ael_lex.c"
#define INITIAL 0
#define paren 1
#define semic 2
#define argg 3
+#define comment 4
+#ifndef YY_NO_UNISTD_H
/* Special case for "unistd.h", since it is non-ANSI. We include it way
* down here because we want the user's section 1 to have been scanned first.
* The user has a chance to override it with an option.
*/
#include <unistd.h>
+#endif
#ifndef YY_EXTRA_TYPE
#define YY_EXTRA_TYPE void *
@@ -987,6 +939,8 @@ struct yyguts_t
}; /* end struct yyguts_t */
+static int yy_init_globals (yyscan_t yyscanner );
+
/* This must go here because YYSTYPE and YYLTYPE are included
* from bison output in section 1.*/
# define yylval yyg->yylval_r
@@ -1137,9 +1091,11 @@ static int input (yyscan_t yyscanner );
#ifndef YY_DECL
#define YY_DECL_IS_OURS 1
-extern int ael_yylex (YYSTYPE * yylval_param,YYLTYPE * yylloc_param ,yyscan_t yyscanner);
+extern int ael_yylex \
+ (YYSTYPE * yylval_param,YYLTYPE * yylloc_param ,yyscan_t yyscanner);
-#define YY_DECL int ael_yylex (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner)
+#define YY_DECL int ael_yylex \
+ (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner)
#endif /* !YY_DECL */
/* Code executed at the beginning of each rule, after yytext and yyleng
@@ -1169,7 +1125,7 @@ YY_DECL
#line 173 "ael.flex"
-#line 1172 "ael_lex.c"
+#line 1128 "ael_lex.c"
yylval = yylval_param;
@@ -1232,13 +1188,13 @@ yy_match:
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 222 )
+ if ( yy_current_state >= 234 )
yy_c = yy_meta[(unsigned int) yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
++yy_cp;
}
- while ( yy_current_state != 221 );
+ while ( yy_current_state != 233 );
yy_cp = yyg->yy_last_accepting_cpos;
yy_current_state = yyg->yy_last_accepting_state;
@@ -1454,10 +1410,9 @@ YY_RULE_SETUP
{ STORE_POS; return KW_INCLUDES;}
YY_BREAK
case 40:
-/* rule 40 can match eol */
YY_RULE_SETUP
-#line 215 "ael.flex"
-{ my_lineno++; my_col = 1; }
+#line 214 "ael.flex"
+{ BEGIN(comment); my_col += 2; }
YY_BREAK
case 41:
YY_RULE_SETUP
@@ -1465,13 +1420,46 @@ YY_RULE_SETUP
{ my_col += yyleng; }
YY_BREAK
case 42:
+/* rule 42 can match eol */
YY_RULE_SETUP
#line 217 "ael.flex"
-{ my_col += (yyleng*8)-(my_col%8); }
+{ ++my_lineno; my_col=1;}
YY_BREAK
case 43:
YY_RULE_SETUP
+#line 218 "ael.flex"
+{ my_col += yyleng; }
+ YY_BREAK
+case 44:
+/* rule 44 can match eol */
+YY_RULE_SETUP
#line 219 "ael.flex"
+{ ++my_lineno; my_col=1;}
+ YY_BREAK
+case 45:
+YY_RULE_SETUP
+#line 220 "ael.flex"
+{ my_col += 2; BEGIN(INITIAL); }
+ YY_BREAK
+case 46:
+/* rule 46 can match eol */
+YY_RULE_SETUP
+#line 222 "ael.flex"
+{ my_lineno++; my_col = 1; }
+ YY_BREAK
+case 47:
+YY_RULE_SETUP
+#line 223 "ael.flex"
+{ my_col += yyleng; }
+ YY_BREAK
+case 48:
+YY_RULE_SETUP
+#line 224 "ael.flex"
+{ my_col += (yyleng*8)-(my_col%8); }
+ YY_BREAK
+case 49:
+YY_RULE_SETUP
+#line 226 "ael.flex"
{
STORE_POS;
yylval->str = strdup(yytext);
@@ -1486,10 +1474,10 @@ YY_RULE_SETUP
* A comma at the top level is valid here, unlike in argg where it
* is an argument separator so it must be returned as a token.
*/
-case 44:
-/* rule 44 can match eol */
+case 50:
+/* rule 50 can match eol */
YY_RULE_SETUP
-#line 235 "ael.flex"
+#line 242 "ael.flex"
{
if ( pbcpop(')') ) { /* error */
STORE_LOC;
@@ -1512,10 +1500,10 @@ YY_RULE_SETUP
}
}
YY_BREAK
-case 45:
-/* rule 45 can match eol */
+case 51:
+/* rule 51 can match eol */
YY_RULE_SETUP
-#line 257 "ael.flex"
+#line 264 "ael.flex"
{
char c = yytext[yyleng-1];
if (c == '(')
@@ -1524,10 +1512,10 @@ YY_RULE_SETUP
yymore();
}
YY_BREAK
-case 46:
-/* rule 46 can match eol */
+case 52:
+/* rule 52 can match eol */
YY_RULE_SETUP
-#line 265 "ael.flex"
+#line 272 "ael.flex"
{
char c = yytext[yyleng-1];
if ( pbcpop(c)) { /* error */
@@ -1549,10 +1537,10 @@ YY_RULE_SETUP
* of the (external) call, which happens when parencount == 0
* before the decrement.
*/
-case 47:
-/* rule 47 can match eol */
+case 53:
+/* rule 53 can match eol */
YY_RULE_SETUP
-#line 287 "ael.flex"
+#line 294 "ael.flex"
{
char c = yytext[yyleng-1];
if (c == '(')
@@ -1561,10 +1549,10 @@ YY_RULE_SETUP
yymore();
}
YY_BREAK
-case 48:
-/* rule 48 can match eol */
+case 54:
+/* rule 54 can match eol */
YY_RULE_SETUP
-#line 295 "ael.flex"
+#line 302 "ael.flex"
{
if ( pbcpop(')') ) { /* error */
STORE_LOC;
@@ -1589,10 +1577,10 @@ YY_RULE_SETUP
}
}
YY_BREAK
-case 49:
-/* rule 49 can match eol */
+case 55:
+/* rule 55 can match eol */
YY_RULE_SETUP
-#line 319 "ael.flex"
+#line 326 "ael.flex"
{
if( parencount != 0) { /* printf("Folding in a comma!\n"); */
yymore();
@@ -1607,10 +1595,10 @@ YY_RULE_SETUP
}
}
YY_BREAK
-case 50:
-/* rule 50 can match eol */
+case 56:
+/* rule 56 can match eol */
YY_RULE_SETUP
-#line 333 "ael.flex"
+#line 340 "ael.flex"
{
char c = yytext[yyleng-1];
if ( pbcpop(c) ) { /* error */
@@ -1628,20 +1616,20 @@ YY_RULE_SETUP
* or in the first and second operand of a 'for'. As above, match
* commas and use ';' as a separator (hence return it as a separate token).
*/
-case 51:
-/* rule 51 can match eol */
+case 57:
+/* rule 57 can match eol */
YY_RULE_SETUP
-#line 350 "ael.flex"
+#line 357 "ael.flex"
{
char c = yytext[yyleng-1];
yymore();
pbcpush(c);
}
YY_BREAK
-case 52:
-/* rule 52 can match eol */
+case 58:
+/* rule 58 can match eol */
YY_RULE_SETUP
-#line 356 "ael.flex"
+#line 363 "ael.flex"
{
char c = yytext[yyleng-1];
if ( pbcpop(c) ) { /* error */
@@ -1654,10 +1642,10 @@ YY_RULE_SETUP
yymore();
}
YY_BREAK
-case 53:
-/* rule 53 can match eol */
+case 59:
+/* rule 59 can match eol */
YY_RULE_SETUP
-#line 368 "ael.flex"
+#line 375 "ael.flex"
{
STORE_LOC;
yylval->str = strdup(yytext);
@@ -1667,10 +1655,10 @@ YY_RULE_SETUP
return word;
}
YY_BREAK
-case 54:
-/* rule 54 can match eol */
+case 60:
+/* rule 60 can match eol */
YY_RULE_SETUP
-#line 377 "ael.flex"
+#line 384 "ael.flex"
{
FILE *in1;
char fnamebuf[1024],*p1,*p2;
@@ -1738,7 +1726,8 @@ case YY_STATE_EOF(INITIAL):
case YY_STATE_EOF(paren):
case YY_STATE_EOF(semic):
case YY_STATE_EOF(argg):
-#line 440 "ael.flex"
+case YY_STATE_EOF(comment):
+#line 447 "ael.flex"
{
if ( --include_stack_index < 0 ) {
yyterminate();
@@ -1752,12 +1741,12 @@ case YY_STATE_EOF(argg):
}
}
YY_BREAK
-case 55:
+case 61:
YY_RULE_SETUP
-#line 453 "ael.flex"
+#line 460 "ael.flex"
ECHO;
YY_BREAK
-#line 1760 "ael_lex.c"
+#line 1749 "ael_lex.c"
case YY_END_OF_BUFFER:
{
@@ -1943,7 +1932,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
else
{
- size_t num_to_read =
+ int num_to_read =
YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
while ( num_to_read <= 0 )
@@ -2042,7 +2031,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 222 )
+ if ( yy_current_state >= 234 )
yy_c = yy_meta[(unsigned int) yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -2071,11 +2060,11 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 222 )
+ if ( yy_current_state >= 234 )
yy_c = yy_meta[(unsigned int) yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
- yy_is_jam = (yy_current_state == 221);
+ yy_is_jam = (yy_current_state == 233);
return yy_is_jam ? 0 : yy_current_state;
}
@@ -2508,10 +2497,10 @@ YY_BUFFER_STATE ael_yy_scan_buffer (char * base, yy_size_t size , yyscan_t yys
* @note If you want to scan bytes that may contain NUL values, then use
* ael_yy_scan_bytes() instead.
*/
-YY_BUFFER_STATE ael_yy_scan_string (yyconst char * str , yyscan_t yyscanner)
+YY_BUFFER_STATE ael_yy_scan_string (yyconst char * yy_str , yyscan_t yyscanner)
{
- return ael_yy_scan_bytes(str,strlen(str) ,yyscanner);
+ return ael_yy_scan_bytes(yy_str,strlen(yy_str) ,yyscanner);
}
/** Setup the input buffer state to scan the given bytes. The next call to ael_yylex() will
@@ -2893,7 +2882,7 @@ void ael_yyfree (void * ptr , yyscan_t yyscanner)
#undef YY_DECL_IS_OURS
#undef YY_DECL
#endif
-#line 453 "ael.flex"
+#line 460 "ael.flex"