Skip to content

Instantly share code, notes, and snippets.


Christopher Ross-Gill rgchris

View GitHub Profile
View sql-lexer.bnf
Statement ::= (Newline | Whitespace | '(' | ')' | ',' | '.' | Value | ';')*
Value ::= Comment-Line | Comment | String-Single | String-Double | Literal | Variable | Word | Number | Misc
Comment-Line ::= ('--' | '#') [^#xA#xD]*
Comment ::= '/*' ( [^*] | '*'+ [^*/] )* '*'* '*/'
String-Single ::= "'" ([^'\]+ | '\\' | "\'" | "''")* "'"
rgchris / octals.r
Last active Jun 17, 2020
Counting Octal Numbers
View octals.r
Rebol [
Title: "Octal Notation"
Date: 16-Jun-2020
Author: "Christopher Ross-Gill"
octal-tables: collect [
foreach suffix [
"" "ty" "der" "tyder" "sen" "tysen" "dersen" "tydersen" "kaly"
rgchris / clean-script.r
Last active May 22, 2020
Clean Script for Rebol 2
View clean-script.r
Rebol [
Title: "Rebol Script Cleaner (Pretty Printer)"
Date: 5-Jan-2020
File: %clean-script.r
Author: "Christopher Ross-Gill"
Purpose: {
Cleans (pretty prints) Rebol scripts by parsing the Rebol code
and supplying standard indentation and spacing.
History: [
rgchris /
Last active Jan 25, 2020
Red SVG loader/converter
Red [
Title: "SVG Tools"
Date: 24-Jan-2020
Author: "Christopher Ross-Gill"
Version: 0.3.1
History: [
0.3.1 24-Jan-2020 "PATH model rewrite; VIEW wrapper to view an SVG"
0.3.0 23-Jan-2020 "Reorganise PATH handling; render whole/partial object; further refactoring"
0.2.2 13-Sep-2019 "Some functions for manipulating paths; refactoring"
Red [
Title: "Walk through a VID tree (non-recursive)"
Author: "Christopher Ross-Gill"
Date: 18-Aug-2019
Comment: "Goes backwards - most prominent faces first"
Rebol [
Comment: "Works in Rebol 2 as well"
rgchris / make-scorecard.r
Last active Jul 1, 2019
Softball Scorecard Generator
View make-scorecard.r
#!/usr/local/bin/rebol -qs
Rebol [
Title: "Generate a Softball Scorecard"
Date: 30-Jun-2019
Author: "Christopher Ross-Gill"
Target: %Softball%20Scorecard.pdf
Notes: {
This was needed for some back-pocket scoring for an
rgchris / rebol.svg
Last active Jul 3, 2019
Rebol (and family) logos as a small set of SVG shapes.
View rebol.svg
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View rebolsays.html
<!DOCTYPE html>
<title>Rebol says Hello</title>
<link rel="shortcut icon" href="">
<link href="" rel="stylesheet">
<!-- %load-r3.js looks for all "text/rebol" <script> tags and runs them -->
<script src=""></script>
rgchris /
Last active Apr 26, 2019
Find whole words in a string

This was my response to a question Explaining Parse Rules on RebolForum wrt. matching whole words in a string.

"The input string can contain any number of delimiters, followed by the word we are searching for, and then any delimiter or else the end of the string. If we find the word, return ??? what exactly? Or, if we don't find the word, then there can be any characters or delimiters to the end. (And then what does the "end skip" do?)

I should start by saying that I don't normally use return in this way: I don't much for return at all, rather let all the branches play out to their conclusion. I used it here for expediency.

The problem here is defined as 'whole words'--we need to discern what a whole word is. In Regex, you might write /\bWordToMatch\b/ with that handy little \b shorthand which is a zero-width match between a stream of \w (word) chara

rgchris / minimal-epub.reb
Last active Feb 6, 2019
Build a minimal EPUB in Ren-C
View minimal-epub.reb
Rebol [
Title: "Package a Minimal eBook"
Date: 5-Feb-2019
Author: "Christopher Ross-Gill"
Notes: [
{Source of Minimal eBook}
You can’t perform that action at this time.