diff options
Diffstat (limited to 'test/ragel.d/gotocallret1.rl')
-rw-r--r-- | test/ragel.d/gotocallret1.rl | 117 |
1 files changed, 0 insertions, 117 deletions
diff --git a/test/ragel.d/gotocallret1.rl b/test/ragel.d/gotocallret1.rl deleted file mode 100644 index 92ebb983..00000000 --- a/test/ragel.d/gotocallret1.rl +++ /dev/null @@ -1,117 +0,0 @@ -/* - * @LANG: indep - * @PROHIBIT_LANGUAGES: cv ruby ocaml rust crack - * @PROHIBIT_FLAGS: --var-backend - * @NEEDS_EOF: yes - */ - -/* - * Demonstrate the use of goto, call and return. This machine expects either a - * lower case char or a digit as a command then a space followed by the command - * arg. If the command is a char, then the arg must be an a string of chars. - * If the command is a digit, then the arg must be a string of digits. This - * choice is determined by action code, rather than though transition - * desitinations. - */ - -char comm; -int top; -int stack[32]; - -%%{ - machine GotoCallRet; - - # A reference to a state in an unused action caused a segfault in 5.8. */ - action unusedAction { fentry(garble_line); } - - action err_garbling_line { print_str "error: garbling line\n"; } - action goto_main { fgoto main; } - action recovery_failed { print_str "error: failed to recover\n"; } - - # Error machine, consumes to end of - # line, then starts the main line over. - garble_line := ( (any-'\n')*'\n') - >err_garbling_line - @goto_main - $/recovery_failed; - - action hold_and_return {fhold; fret;} - - # Look for a string of alphas or of digits, - # on anything else, hold the character and return. - alp_comm := alpha+ $!hold_and_return; - dig_comm := digit+ $!hold_and_return; - - # Choose which to machine to call into based on the command. - action comm_arg { - if ( comm >= 97 ) { - fcall alp_comm; - } else { - fcall dig_comm; - } - } - - # Specifies command string. Note that the arg is left out. - command = ( - [a-z0-9] @{comm = fc;} ' ' @comm_arg '\n' - ) @{print_str "correct command\n";}; - - # Any number of commands. If there is an - # error anywhere, garble the line. - main := command* $!{fhold;fgoto garble_line;}; -}%% - -##### INPUT ##### -"lkajsdf\n" -"2134\n" -"(\n" -"\n" -"*234234()0909 092 -234aslkf09`1 11\n" -"1\n" -"909\n" -"1 a\n" -"11 1\n" -"a 1\n" -"aa a\n" -"1 1\n" -"1 123456\n" -"a a\n" -"a abcdef\n" -"h" -"a aa1" -##### OUTPUT ##### -error: garbling line -ACCEPT -error: garbling line -ACCEPT -error: garbling line -ACCEPT -error: garbling line -ACCEPT -error: garbling line -ACCEPT -error: garbling line -ACCEPT -error: garbling line -ACCEPT -error: garbling line -ACCEPT -error: garbling line -ACCEPT -error: garbling line -ACCEPT -error: garbling line -ACCEPT -correct command -ACCEPT -correct command -ACCEPT -correct command -ACCEPT -correct command -ACCEPT -error: failed to recover -FAIL -error: garbling line -error: failed to recover -FAIL |