1 Syntax
The following describers RAWK language syntax, how to write conditions and differences between RAWK and AWK.
1.1 Conditions
| condition | = | import-expression | ||
| | | begin-expression | |||
| | | end-expression | |||
| | | matchall-expression | |||
| | | match-expression | |||
| | | ... | |||
| import-expression | = | (~seq IMPORT import-body) | ||
| begin-expression | = | (~seq BEGIN expression-body) | ||
| end-expression | = | (~seq END expression-body) | ||
| matchall-expression | = | expression-body | ||
| match-expression | = | (~seq symbol-regexp expression-body) | ||
| import-body | = | (import-mod ...) | ||
| expression-body | = | (body ...) | 
- ~seq means that the inside identifiers appear as a sequence and they are not surrounded by parentheses, 
- import-name and import-statement are identifiers referring to a identifier imported from a module and the module the identifier should be imported from, 
- symbol-regexp is a symbol treated as a regexp, for example .* will become #rx".*", 
- body is any racket expression. 
1.2 RAWK vs AWK
- condition actions (bodys) are pure Racket syntax 
- conditions are surrounded by "||" rather than "//", - In RAWK: - |a.*l| { - (print "!") - } - In AWK: - /a.*l/ { - print "!"; - } - "||" is also optional, it encapsulates the symbol-regexp similarly to how it can encapsulate symbols in Racket, so if there are no characters that are specially treated in the symbol-regexp, then "||" can be omitted, 
- there is no function statement, custom functions used inside condition bodys should be instead defined inside BEGIN pseudo-condition, - BEGIN { - (define (smile) - (displayln ":-)")) - } - { - (smile) - } 
- IMPORT can be used to import Racket code defined elsewhere.