File: stratego.str

package info (click to toggle)
ohcount 4.0.0-5
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 8,580 kB
  • sloc: ansic: 7,584; javascript: 3,300; ruby: 2,363; perl: 2,065; objc: 1,325; python: 445; pascal: 398; erlang: 350; sh: 275; lisp: 272; vhdl: 150; haskell: 149; asm: 127; cs: 124; awk: 98; java: 92; php: 77; tcl: 58; xml: 57; fortran: 54; modula3: 32; makefile: 30; ada: 30; jsp: 28; sql: 18; cobol: 13; ml: 9
file content (25 lines) | stat: -rw-r--r-- 535 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/** 
 * Sample code from Stratego XT Manual
 */

rules
  InlineF :
    |[ let f(xs) = e in e'[f(es)] ]| ->
    |[ let f(xs) = e in e'[e[es/xs]] ]|

  InlineV :
    |[ let x = e in e'[x] ]| -> |[ let x = e in e'[e] ]|

  Dead :
    |[ let x = e in e' ]| -> |[ e' ]|
    where <not(in)> (x,e')

  Extract(f,xs) :
    |[ e ]| -> |[ let f(xs) = e in f(xs) ]|

  Hoist :
    |[ let x = e1 in let f(xs) = e2 in e3 ]| ->
    |[ let f(xs) = e2 in let x = e1 in e3 ]|
    where <not(in)> (x, <free-vars> e2)

// better watch those apostrophes!