summaryrefslogtreecommitdiff
path: root/test/ragel.d/union.rl
diff options
context:
space:
mode:
Diffstat (limited to 'test/ragel.d/union.rl')
-rw-r--r--test/ragel.d/union.rl196
1 files changed, 0 insertions, 196 deletions
diff --git a/test/ragel.d/union.rl b/test/ragel.d/union.rl
deleted file mode 100644
index c5596399..00000000
--- a/test/ragel.d/union.rl
+++ /dev/null
@@ -1,196 +0,0 @@
-/*
- * @LANG: c++
- * Show off concurrent abilities.
- */
-
-#include <iostream>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
-using namespace std;
-
-#define BUFSIZE 2048
-
-struct Concurrent
-{
- Concurrent() :
- cur_char(0),
- start_word(0),
- start_comment(0),
- start_literal(0)
- {}
-
- int cur_char;
- int start_word;
- int start_comment;
- int start_literal;
-
- int cs;
-
- // Initialize the machine. Invokes any init statement blocks. Returns 0
- // if the machine begins in a non-accepting state and 1 if the machine
- // begins in an accepting state.
- void init( );
-
- // Execute the machine on a block of data. Returns -1 if after processing
- // the data, the machine is in the error state and can never accept, 0 if
- // the machine is in a non-accepting state and 1 if the machine is in an
- // accepting state.
- void execute( const char *data, int len );
-
- // Indicate that there is no more data. Returns -1 if the machine finishes
- // in the error state and does not accept, 0 if the machine finishes
- // in any other non-accepting state and 1 if the machine finishes in an
- // accepting state.
- int finish( );
-};
-
-%%{
- machine Concurrent;
-
- action next_char {
- cur_char += 1;
- }
-
- action start_word {
- start_word = cur_char;
- }
- action end_word {
- cout << "word: " << start_word <<
- " " << cur_char-1 << endl;
- }
-
- action start_comment {
- start_comment = cur_char;
- }
- action end_comment {
- cout << "comment: " << start_comment <<
- " " << cur_char-1 << endl;
- }
-
- action start_literal {
- start_literal = cur_char;
- }
- action end_literal {
- cout << "literal: " << start_literal <<
- " " << cur_char-1 << endl;
- }
-
- # Count characters.
- chars = ( any @next_char )*;
-
- # Words are non-whitespace.
- word = ( any-space )+ >start_word %end_word;
- words = ( ( word | space ) $1 %0 )*;
-
- # Finds C style comments.
- comment = ( '/*' any* $0 '*/'@1 ) >start_comment %end_comment;
- comments = ( ( comment | any ) $1 %0 )*;
-
- # Finds single quoted strings.
- literalChar = ( any - ['\\] ) | ( '\\' . any );
- literal = ('\'' literalChar* '\'' ) >start_literal %end_literal;
- literals = ( ( literal | (any-'\'') ) $1 %0 )*;
-
- main := chars | words | comments | literals;
-}%%
-
-%% write data;
-
-void Concurrent::init( )
-{
- cur_char = 0;
- %% write init;
-}
-
-void Concurrent::execute( const char *data, int len )
-{
- const char *p = data;
- const char *pe = data + len;
- const char *eof = pe;
-
- %% write exec;
-}
-
-int Concurrent::finish( )
-{
- if ( cs == Concurrent_error )
- return -1;
- if ( cs >= Concurrent_first_final )
- return 1;
- return 0;
-}
-
-void test( const char *buf )
-{
- Concurrent concurrent;
- concurrent.init();
- concurrent.execute( buf, strlen(buf) );
- if ( concurrent.finish() > 0 )
- cout << "ACCEPT" << endl;
- else
- cout << "FAIL" << endl;
-}
-
-int main()
-{
- test(
- "/* in a comment,\n"
- " * ' and now in a literal string\n"
- " */ \n"
- " \n"
- "the comment has now ended but the literal string lives on\n"
- "\n"
- "' comment closed\n" );
- test( "/* * ' \\' */ \\' '\n" );
- test( "/**/'\\''/*/*/\n" );
- return 0;
-}
-
-##### OUTPUT #####
-word: 1 2
-word: 4 5
-word: 7 7
-word: 9 16
-word: 19 19
-word: 21 21
-word: 23 25
-word: 27 29
-word: 31 32
-word: 34 34
-word: 36 42
-word: 44 49
-word: 52 53
-comment: 1 53
-word: 58 60
-word: 62 68
-word: 70 72
-word: 74 76
-word: 78 82
-word: 84 86
-word: 88 90
-word: 92 98
-word: 100 105
-word: 107 111
-word: 113 114
-word: 117 117
-literal: 21 117
-word: 119 125
-word: 127 132
-ACCEPT
-word: 1 2
-word: 4 4
-word: 6 6
-word: 8 9
-word: 11 12
-comment: 1 12
-word: 14 15
-word: 17 17
-literal: 6 17
-ACCEPT
-comment: 1 4
-literal: 5 8
-word: 1 13
-comment: 9 13
-ACCEPT