Warning, /frameworks/syntax-highlighting/autotests/reference/highlight.exu.ref is written in an unsupported language. File is not indexed.

0001 <Comment>-- Test file for Kate's Euphoria syntax highlighting/code folding.</Comment><br/>
0002 <Region Marker>-- BEGIN region marker test</Region Marker><br/>
0003 <Normal Text></Normal Text><br/>
0004 <Comment>-- code here</Comment><br/>
0005 <Normal Text></Normal Text><br/>
0006 <Region Marker>-- END region marker test</Region Marker><br/>
0007 <Normal Text></Normal Text><br/>
0008 <Comment>-- The N Queens Problem:</Comment><br/>
0009 <Comment>-- Place N Queens on an NxN chess board</Comment><br/>
0010 <Comment>-- such that they don't threaten each other.</Comment><br/>
0011 <Type>constant</Type><Normal Text> N = </Normal Text><Number>8</Number><Normal Text> </Normal Text><Comment>-- try some other sizes</Comment><br/>
0012 <Type>constant</Type><Normal Text> ROW = </Normal Text><Number>1</Number><Normal Text>, COLUMN = </Normal Text><Number>2</Number><br/>
0013 <Type>constant</Type><Normal Text> </Normal Text><GtkKeyword>TRUE</GtkKeyword><Normal Text> = </Normal Text><Number>1</Number><Normal Text>, </Normal Text><GtkKeyword>FALSE</GtkKeyword><Normal Text> = </Normal Text><Number>0</Number><br/>
0014 <Keyword>type</Keyword><Normal Text> square(</Normal Text><Type>sequence</Type><Normal Text> x)</Normal Text><br/>
0015 <Comment>-- a square on the board</Comment><br/>
0016 <Normal Text>    </Normal Text><Keyword>return</Keyword><Normal Text> </Normal Text><Keyword>length</Keyword><Normal Text>(x) = </Normal Text><Number>2</Number><br/>
0017 <Keyword>end type</Keyword><br/>
0018 <Keyword>type</Keyword><Normal Text> row(</Normal Text><Type>integer</Type><Normal Text> x)</Normal Text><br/>
0019 <Comment>-- a row on the board</Comment><br/>
0020 <Normal Text>    </Normal Text><Keyword>return</Keyword><Normal Text> x >= </Normal Text><Number>1</Number><Normal Text> </Normal Text><Keyword>and</Keyword><Normal Text> x <= N</Normal Text><br/>
0021 <Keyword>end type</Keyword><br/>
0022 <Normal Text></Normal Text><br/>
0023 <Keyword>function</Keyword><Normal Text> threat(square q1, square q2)</Normal Text><br/>
0024 <Comment>-- do two queens threaten each other?</Comment><br/>
0025 <Normal Text>    </Normal Text><Keyword>if</Keyword><Normal Text> q1[COLUMN] = q2[COLUMN] </Normal Text><Keyword>then</Keyword><br/>
0026 <Normal Text> </Normal Text><Keyword>return</Keyword><Normal Text> </Normal Text><GtkKeyword>TRUE</GtkKeyword><br/>
0027 <Normal Text>    </Normal Text><Keyword>elsif</Keyword><Normal Text> q1[ROW] - q1[COLUMN] = q2[ROW] - q2[COLUMN] </Normal Text><Keyword>then</Keyword><br/>
0028 <Normal Text> </Normal Text><Keyword>return</Keyword><Normal Text> </Normal Text><GtkKeyword>TRUE</GtkKeyword><br/>
0029 <Normal Text>    </Normal Text><Keyword>elsif</Keyword><Normal Text> q1[ROW] + q1[COLUMN] = q2[ROW] + q2[COLUMN] </Normal Text><Keyword>then</Keyword><br/>
0030 <Normal Text> </Normal Text><Keyword>return</Keyword><Normal Text> </Normal Text><GtkKeyword>TRUE</GtkKeyword><br/>
0031 <Normal Text>    </Normal Text><Keyword>elsif</Keyword><Normal Text> q1[ROW] = q2[ROW] </Normal Text><Keyword>then</Keyword><br/>
0032 <Normal Text> </Normal Text><Keyword>return</Keyword><Normal Text> </Normal Text><GtkKeyword>TRUE</GtkKeyword><br/>
0033 <Normal Text>    </Normal Text><Keyword>else</Keyword><br/>
0034 <Normal Text> </Normal Text><Keyword>return</Keyword><Normal Text> </Normal Text><GtkKeyword>FALSE</GtkKeyword><br/>
0035 <Normal Text>    </Normal Text><Keyword>end if</Keyword><br/>
0036 <Keyword>end function</Keyword><br/>
0037 <Normal Text></Normal Text><br/>
0038 <Keyword>function</Keyword><Normal Text> conflict(square q, </Normal Text><Type>sequence</Type><Normal Text> queens)</Normal Text><br/>
0039 <Comment>-- Would square p cause a conflict with other queens on board so far?</Comment><br/>
0040 <Normal Text>    </Normal Text><Keyword>for</Keyword><Normal Text> i = </Normal Text><Number>1</Number><Normal Text> </Normal Text><Keyword>to</Keyword><Normal Text> </Normal Text><Keyword>length</Keyword><Normal Text>(queens) </Normal Text><Keyword>do</Keyword><br/>
0041 <Normal Text> </Normal Text><Keyword>if</Keyword><Normal Text> threat(q, queens[i]) </Normal Text><Keyword>then</Keyword><br/>
0042 <Normal Text>     </Normal Text><Keyword>return</Keyword><Normal Text> </Normal Text><GtkKeyword>TRUE</GtkKeyword><br/>
0043 <Normal Text> </Normal Text><Keyword>end if</Keyword><br/>
0044 <Normal Text>    </Normal Text><Keyword>end for</Keyword><br/>
0045 <Normal Text>    </Normal Text><Keyword>return</Keyword><Normal Text> </Normal Text><GtkKeyword>FALSE</GtkKeyword><br/>
0046 <Keyword>end function</Keyword><br/>
0047 <Normal Text></Normal Text><br/>
0048 <Type>integer</Type><Normal Text> soln</Normal Text><br/>
0049 <Normal Text>soln = </Normal Text><Number>0</Number><Normal Text> </Normal Text><Comment>-- solution number</Comment><br/>
0050 <Normal Text></Normal Text><br/>
0051 <Keyword>procedure</Keyword><Normal Text> print_board(</Normal Text><Type>sequence</Type><Normal Text> queens)</Normal Text><br/>
0052 <Comment>-- print a solution, showing the Queens on the board</Comment><br/>
0053 <Normal Text>    </Normal Text><Type>integer</Type><Normal Text> k</Normal Text><br/>
0054 <Normal Text>    </Normal Text><Keyword>position</Keyword><Normal Text>(</Normal Text><Number>1</Number><Normal Text>, </Normal Text><Number>1</Number><Normal Text>)</Normal Text><br/>
0055 <Normal Text>    </Normal Text><Keyword>printf</Keyword><Normal Text>(</Normal Text><Number>1</Number><Normal Text>, </Normal Text><String>"Solution #%d\n\n  "</String><Normal Text>, soln)</Normal Text><br/>
0056 <Normal Text>    </Normal Text><Keyword>for</Keyword><Normal Text> c = 'a' </Normal Text><Keyword>to</Keyword><Normal Text> 'a' + N - </Normal Text><Number>1</Number><Normal Text> </Normal Text><Keyword>do</Keyword><br/>
0057 <Normal Text> </Normal Text><Keyword>printf</Keyword><Normal Text>(</Normal Text><Number>1</Number><Normal Text>, </Normal Text><String>"%2s"</String><Normal Text>, c)</Normal Text><br/>
0058 <Normal Text>    </Normal Text><Keyword>end for</Keyword><br/>
0059 <Normal Text>    </Normal Text><Keyword>puts</Keyword><Normal Text>(</Normal Text><Number>1</Number><Normal Text>, </Normal Text><String>"\n"</String><Normal Text>)</Normal Text><br/>
0060 <Normal Text>    </Normal Text><Keyword>for</Keyword><Normal Text> r = </Normal Text><Number>1</Number><Normal Text> </Normal Text><Keyword>to</Keyword><Normal Text> N </Normal Text><Keyword>do</Keyword><br/>
0061 <Normal Text> </Normal Text><Keyword>printf</Keyword><Normal Text>(</Normal Text><Number>1</Number><Normal Text>, </Normal Text><String>"%2d "</String><Normal Text>, r)</Normal Text><br/>
0062 <Normal Text> </Normal Text><Keyword>for</Keyword><Normal Text> c = </Normal Text><Number>1</Number><Normal Text> </Normal Text><Keyword>to</Keyword><Normal Text> N </Normal Text><Keyword>do</Keyword><br/>
0063 <Normal Text>     </Normal Text><Keyword>if</Keyword><Normal Text> </Normal Text><Keyword>find</Keyword><Normal Text>({r,c}, queens) </Normal Text><Keyword>then</Keyword><br/>
0064 <Normal Text>  </Normal Text><Keyword>puts</Keyword><Normal Text>(</Normal Text><Number>1</Number><Normal Text>, </Normal Text><String>"Q "</String><Normal Text>)</Normal Text><br/>
0065 <Normal Text>     </Normal Text><Keyword>else</Keyword><br/>
0066 <Normal Text>  </Normal Text><Keyword>puts</Keyword><Normal Text>(</Normal Text><Number>1</Number><Normal Text>, </Normal Text><String>". "</String><Normal Text>)</Normal Text><br/>
0067 <Normal Text>     </Normal Text><Keyword>end if</Keyword><br/>
0068 <Normal Text> </Normal Text><Keyword>end for</Keyword><br/>
0069 <Normal Text> </Normal Text><Keyword>puts</Keyword><Normal Text>(</Normal Text><Number>1</Number><Normal Text>, </Normal Text><String>"\n"</String><Normal Text>)</Normal Text><br/>
0070 <Normal Text>    </Normal Text><Keyword>end for</Keyword><br/>
0071 <Normal Text>    </Normal Text><Keyword>puts</Keyword><Normal Text>(</Normal Text><Number>1</Number><Normal Text>, </Normal Text><String>"\nPress Enter. (q to quit) "</String><Normal Text>)</Normal Text><br/>
0072 <Normal Text>    </Normal Text><Keyword>while</Keyword><Normal Text> </Normal Text><GtkKeyword>TRUE</GtkKeyword><Normal Text> </Normal Text><Keyword>do</Keyword><br/>
0073 <Normal Text> k = </Normal Text><Keyword>get_key</Keyword><Normal Text>()</Normal Text><br/>
0074 <Normal Text> </Normal Text><Keyword>if</Keyword><Normal Text> k = 'q' </Normal Text><Keyword>then</Keyword><br/>
0075 <Normal Text>     </Normal Text><Keyword>abort</Keyword><Normal Text>(</Normal Text><Number>0</Number><Normal Text>)</Normal Text><br/>
0076 <Normal Text> </Normal Text><Keyword>elsif</Keyword><Normal Text> k != -</Normal Text><Number>1</Number><Normal Text> </Normal Text><Keyword>then</Keyword><br/>
0077 <Normal Text>     </Normal Text><Keyword>exit</Keyword><br/>
0078 <Normal Text> </Normal Text><Keyword>end if</Keyword><br/>
0079 <Normal Text>    </Normal Text><Keyword>end while</Keyword><br/>
0080 <Keyword>end procedure</Keyword><br/>
0081 <Normal Text></Normal Text><br/>
0082 <Keyword>procedure</Keyword><Normal Text> place_queen(</Normal Text><Type>sequence</Type><Normal Text> queens)</Normal Text><br/>
0083 <Comment>-- place queens on a NxN chess board</Comment><br/>
0084 <Comment>-- (recursive procedure)</Comment><br/>
0085 <Normal Text>    row r </Normal Text><Comment>-- only need to consider one row for each queen</Comment><br/>
0086 <Normal Text>    </Normal Text><Keyword>if</Keyword><Normal Text> </Normal Text><Keyword>length</Keyword><Normal Text>(queens) = N </Normal Text><Keyword>then</Keyword><br/>
0087 <Normal Text> soln += </Normal Text><Number>1</Number><br/>
0088 <Normal Text> print_board(queens)</Normal Text><br/>
0089 <Normal Text> </Normal Text><Keyword>return</Keyword><br/>
0090 <Normal Text>    </Normal Text><Keyword>end if</Keyword><br/>
0091 <Normal Text>    r = </Normal Text><Keyword>length</Keyword><Normal Text>(queens)+</Normal Text><Number>1</Number><br/>
0092 <Normal Text>    </Normal Text><Keyword>for</Keyword><Normal Text> c = </Normal Text><Number>1</Number><Normal Text> </Normal Text><Keyword>to</Keyword><Normal Text> N </Normal Text><Keyword>do</Keyword><br/>
0093 <Normal Text> </Normal Text><Keyword>if</Keyword><Normal Text> </Normal Text><Keyword>not</Keyword><Normal Text> conflict({r,c}, queens) </Normal Text><Keyword>then</Keyword><br/>
0094 <Normal Text>     place_queen(</Normal Text><Keyword>append</Keyword><Normal Text>(queens, {r,c}))</Normal Text><br/>
0095 <Normal Text> </Normal Text><Keyword>end if</Keyword><br/>
0096 <Normal Text>    </Normal Text><Keyword>end for</Keyword><br/>
0097 <Keyword>end procedure</Keyword><br/>