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 0000000000000000000000000000000000000000..c9cfdab960f410c5a4f5c1048ac0e214ee145c00 --- /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 ae3b4bedfba29ef75f6eba1c97dbdb49d3aa6d4c..dd77c05311fb3f445430c40315e8ccebb20b7663 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 0000000000000000000000000000000000000000..ebd8e9f2fb9c350f998043c5977ef20650bdcd1c --- /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 0000000000000000000000000000000000000000..08244c64c82c4297b3558f9e9e46817731816d9f --- /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 4a36336c45466ac3b7d3de15b87b58f4c87875b3..ebdacba5cc9172959ba87e0f014ecbb5aea89960 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 f773dd4e9cf98cd294c61fbfc236e59ce1e22720..1c4722e9b7d8ce6121b3eba0b6e6c3b87c2cd425 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 30dfd539b7c755cc11240c666f7ef344dac950b3..e416f6afbdefda7f99eacf38e79597d708da7c72 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"