Plov : test1

PROGRAM test1

BEGIN
END test1
   
Compiles in Plov004

Plov : test2

PROGRAM test2

CONSTANTS  pi = 314
	   ee =	272
	   END
BEGIN
END test2
   
Compiles in Plov004

Plov : test3

PROGRAM test3

CONSTANTS  pi = 314
	   ee =	272
	   END

VARIABLES  A 
	   B 
	   C 
	   Def 
	   GhYh 
	   J123
	   NH4NO3
	   END

BEGIN
END test3
   
Compiles in Plov004

Plov : test4

PROGRAM test4

CONSTANTS  pi = 314
	   ee =	272
	   END

VARIABLES  A 
	   B 
	   C 
	   Def 
	   GhYh 
	   J123
	   NH4NO3
	   END

PROCEDURE  AddItUp

BEGIN
END AddItUp

BEGIN
   AddItUp
END test4
   
Compiles in Plov004

Plov : test5

PROGRAM test5

CONSTANTS  pi = 314
	   ee =	272
	   END

VARIABLES  A 
	   B 
	   C 
	   Def 
	   GhYh 
	   J123
	   NH4NO3
	   END

BEGIN

END test5
   
Compiles in Plov004

Plov : test6

PROGRAM test6

CONSTANTS pi = 314159
	  ee = 271828
	  years = 2007
	  days = 31
	  END

VARIABLES temp 
	  press 
	  NH3
	  H2SO4
	  nitrogen
	  END

PROCEDURE Measure

BEGIN
END Measure

PROCEDURE Blow

BEGIN
END Blow

BEGIN
   LOOP
      Measure
      Blow
      EXIT
   END
END test6
   
Compiles in Plov004

Plov : test7

PROGRAM test7

CONSTANTS nrOf = 12
	  PINcode = 1153
	  ZIPcode = 5012
	  END

VARIABLES aantal sum avg END

BEGIN

END test7
   
Compiles in Plov004

Plov : test8

PROGRAM test8

CONSTANTS nrOf = 12
	  PINcode = 1153
	  ZIPcode = 5012
	  END

VARIABLES aantal sum avg END

BEGIN
   LOOP
      IF  sum < avg  THEN  EXIT  END
   END
END test8
   
Compiles in Plov004

Plov : test9

PROGRAM test9

CONSTANTS nrOf = 12
	  PINcode = 1153
	  ZIPcode = 5012
	  END

VARIABLES aantal sum avg END

BEGIN
   sum := sum + nrOf
   aantal := sum + avg
END test9
   
Compiles in Plov004

Plov : test10

PROGRAM test10

CONSTANTS  pi = 314159625
	   ee = 271828182
	   END

VARIABLES  temp
	   Fahr
	   press
	   time
	   result
	   END

BEGIN
   temp := temp + 273
   Fahr := 32 + temp x 5 : 4
END test10
   
Compiles in Plov004

Notice the multiply operator! And division as well!

Plov : test 11

PROGRAM test11

CONSTANTS  pi = 314159625
	   ee = 271828182
	   END

VARIABLES  temp
	   Fahr
	   press
	   time
	   result
	   END

PROCEDURE Blow

BEGIN
   temp := temp + 273
   Fahr := 32 + temp x 5 : 4
END Blow

BEGIN
   LOOP
      Blow
      EXIT
   END
   temp := temp + 273
   Fahr := 32 + temp x 5 : 4
END test11
   

Plov : test 12

PROGRAM test12

CONSTANTS  pi = 314159625
	   ee = 271828182
	   END

VARIABLES  temp
	   Fahr
	   Kelvin
	   result
	   END

PROCEDURE Blow

BEGIN
   temp := temp + 273
   Fahr := 32 + temp x 5 : 4
END Blow

BEGIN
   Kelvin := temp + 273
   Fahr := 32 + temp x 5 : 4
   result := ( Fahr - 32 ) x 4 / 5
END test12
   

Plov : test 13

PROGRAM test13

CONSTANTS  pi = 314159625
	   ee = 271828182
	   END

VARIABLES  temp
	   Fahr
	   Kelvin
	   result
	   END

PROCEDURE Blow

BEGIN
   temp := temp + 273
   Fahr := 32 + temp x 5 : 4
END Blow

BEGIN
   result := ( Fahr - 32 )
END test13
   

Plov : test 14

PROGRAM test14

CONSTANTS  pi = 314159625
	   ee = 271828182
	   END

VARIABLES  temp
	   x
	   Fahr
	   Kelvin
	   result
	   END

PROCEDURE Blow

BEGIN
   temp := temp + 273
   Fahr := 32 + temp x 5 : 4
END Blow

BEGIN
   Kelvin := temp + 273
   Fahr := 32 + temp x 5 : 4
   result := ( Fahr - 32 ) . x / 5
END test14
   

Plov : test 15

PROGRAM test15

CONSTANTS  pi = 314159625
	   ee = 271828182
	   offset = 273
	   END

VARIABLES  temp
	   x
	   Fahr
	   Kelvin
	   result
	   END

PROCEDURE Blow

BEGIN
   IF  temp < Kelvin - offset  THEN  temp := temp + 273  END
   Fahr := 32 + temp x 5 : 4
END Blow

BEGIN
   Kelvin := temp + 273
   Fahr := 32 + temp x 5 : 4
   result := ( Fahr - 32 ) . x / 5
END test15
   

Plov : test 16

PROGRAM test16

CONSTANTS  pi = 314159625
	   ee = 271828182
	   END

VARIABLES  temp
	   x
	   Fahr
	   Kelvin
	   result
	   END

PROCEDURE Blow

BEGIN
   temp := temp + 273
   Fahr := 32 + temp x 5 : 4
END Blow

BEGIN
   Kelvin := temp + 273
   IF  Kelvin = 300  THEN  Kelvin := 10  END
   Fahr := 32 + temp x 5 : 4
   result := ( Fahr - 32 ) . x / 5
END test16
   

Plov : test 17

PROGRAM test17

CONSTANTS  pi = 314159625
	   ee = 271828182
	   END

VARIABLES  temp
	   x
	   Fahr
	   Kelvin
	   result
	   END

PROCEDURE Blow

BEGIN
   temp := temp + 273
   LOOP
      Fahr := 32 + temp x 5 : 4
      IF  Fahr < 0  THEN  EXIT  END
      x := x + 1
   END
   IF result > 0 THEN RETURN END
   RETURN
END Blow

PROCEDURE rewind

BEGIN
   REPEAT
      x := x + ee
   UNTIL x > 0
END rewind

BEGIN
   Kelvin := temp + 273
   LOOP
      Kelvin := Kelvin + ee
      LOOP
         Fahr := ee + x
	 IF  Fahr > 12  THEN  EXIT  END
	 Fahr := Fahr - 1
      END
      IF  Kelvin = 10000  THEN  EXIT  END
      Kelvin := ee
   END
   IF  Kelvin = 300  THEN  Kelvin := 10  END
   Fahr := 32 + temp x 5 : 4
   result := ( Fahr - 32 ) . x / 5
END test17
   
Compiles well in Plov006

Plov : test18

PROGRAM test18

CONSTANTS  pi = 314159625
	   ee = 271828182
	   END

VARIABLES  temp
	   x
	   Fahr
	   Kelvin
	   result
	   END

PROCEDURE Blow

BEGIN
   temp := temp + 273
   LOOP
      Fahr := 32 + temp x 5 : 4
      IF  Fahr < 0  THEN  EXIT  END
      x := x + 1
   END
   IF result > 0 THEN RETURN END
   RETURN
END Blow


PROCEDURE rewind

LOCAL aap noot mies END

BEGIN
   x := 1
   REPEAT
      x := x + ee
   UNTIL x > 0
END rewind


BEGIN
   Kelvin := temp + 273
   LOOP
      Kelvin := Kelvin + ee
      LOOP
         Fahr := ee + x
	 IF  Fahr > 12  THEN  EXIT  END
	 Fahr := Fahr - 1
      END
      IF  Kelvin = 10000  THEN  EXIT  END
      Kelvin := ee
   END
   IF  Kelvin = 300  THEN  Kelvin := 10  END
   Fahr := 32 + temp x 5 : 4
   result := ( Fahr - 32 ) . x / 5
END test18
   

Plov : test18a

PROGRAM test18a

CONSTANTS  pi = 314159625
	   ee = 271828182
	   END

VARIABLES  temp
	   x
	   Fahr
	   Kelvin
	   result
	   END

PROCEDURE Blow

BEGIN
   temp := temp + 273
   LOOP
      Fahr := 32 + temp x 5 : 4
      IF  Fahr < 0  THEN  EXIT  END
      x := x + 1
   END
   IF result > 0 THEN RETURN END
   RETURN
END Blow


PROCEDURE rewind

LOCAL aap noot mies END

BEGIN
   x := 1
   REPEAT
      x := x + ee
      aap := noot - mies
   UNTIL x > 0
END rewind


BEGIN
   Kelvin := temp + 273
   LOOP
      Kelvin := Kelvin + ee
      LOOP
         Fahr := ee + x
	 IF  Fahr > 12  THEN  EXIT  END
	 Fahr := Fahr - 1
      END
      IF  Kelvin = 10000  THEN  EXIT  END
      Kelvin := ee
   END
   IF  Kelvin = 300  THEN  Kelvin := 10  END
   rewind
   Fahr := 32 + temp x 5 : 4
   result := ( Fahr - 32 ) . x / 5
END test18a
   

Plov : test19

PROGRAM test19

VARIABLES	a b c d END

BEGIN
  IF  a < 10  THEN
     b := 12
  ELSIF  a < 20  THEN
     IF  a < c  THEN
        a := b - c
     ELSIF a > b  THEN
        a := a : 2
     ELSIF d = 12  THEN
        d := d x 1
     ELSE
        a := c
     END
  ELSIF  a > 40  THEN
     d := 0
  ELSE
     a := b + c x d
  END
END test19
   
Nested IF. And it compiles fine with Plov007!

Plov : Test from Wikipedia

Wikipedis have an article about PL/0: http://en.wikipedia.org/wiki/PL/0 and there is a test program for the PL/0 compiler. I adapted the source to suit PLOV:

PROGRAM wikitest

CONSTANTS	m =  7
		n = 85
END

VARIABLES	x 
		y 
		z 
		q
		r
END


PROCEDURE MULTIPLY

LOCAL 	a b	END

BEGIN
  a := x
  b := y
  z := 0
  WHILE b > 0 DO 
    IF ODD b THEN z := z + a END
    a := 2 * a
    b := b / 2
  END
END MULTIPLY


PROCEDURE DIVIDE

LOCAL 	w	END

BEGIN
  r := x
  q := 0
  w := y
  WHILE w <= r DO w := 2 * w END
  WHILE w > y DO 
    q := 2 * q
    w := w / 2
    IF w <= r THEN 
      r := r - w
      q := q + 1
    END
  END
END DIVIDE


PROCEDURE Gcd

LOCAL	 f g	END

BEGIN
  f := x
  g := y
  WHILE f # g DO 
    IF f < g THEN g := g - f END
    IF g < f THEN f := f - g END
  END;
  z := f
END Gcd

BEGIN
  x := m
  y := n
  CALL MULTIPLY
  x := 25
  y :=  3
  CALL DIVIDE
  x := 84
  y := 36
  CALL Gcd
END wikitest
   
Compiles.

Plov : test20

PROGRAM test20

VARIABLES a b c d e f g h i j k END

BEGIN
   LOOP
      REPEAT
      a := a + 1
      UNTIL  a = 20
      b := a
      IF  b = 12  THEN  EXIT  END
      c := a + b x c - d
      k := a - j x 2
   END
END test20
   

Plov : test21

PROGRAM test21

VARIABLES a b c d e f g h i j k END

BEGIN
   LOOP
      REPEAT
      a := a + 1
      UNTIL  a = 20
      b := a
      IF  b = 12  THEN  EXIT  END
      c := a + b x c - d
      k := a - j x 2
   END
   PALO
      Ik ben een dwaze ui
      The second InLine line
      The third
      If only this was PALO!
   END
END test21
   

Plov : test22

PROGRAM test22

CONSTANTS	m =  7
		n = 85
END

VARIABLES	x 
		y 
		z 
		q
		r
END


PROCEDURE MULTIPLY

LOCAL 	a b	END
      
BEGIN
  a := x
  b := y
  z := 0
  WHILE b MOD 2 = 1 DO 
    IF b = 1 THEN 
      z := z + a 
      a := a - n
    END
    a := a + a
    b := b / 2
  END
END MULTIPLY


PROCEDURE DIVIDE

LOCAL 	w	END

BEGIN
  r := x
  q := 0
  w := y
  WHILE w <= r DO 
    w := w + w
    z := y + 1
  END
  WHILE w > y DO 
    q := q + q
    w := w / 2
    IF w <= r THEN 
      r := r - w
      q := q + 1
    END
  END
END DIVIDE


PROCEDURE Gcd

LOCAL	 f g	END

BEGIN
  f := x
  g := y
  WHILE f # g DO 
    IF f < g THEN 
      g := g - f
      q := f + g
    END
    IF g < f THEN
      f := f - g
      r := m . x
    END
  END
  z := f
END Gcd

BEGIN
  x := m
  y := n
  MULTIPLY
  x := 25
  y :=  3
  DIVIDE
  x := 84
  y := 36
  Gcd
END test22
   

Plov : test23

PROGRAM test23

CONSTANTS	m =  7
		n = 85
END

VARIABLES	x 
		y 
		z 
		q
		r
END


PROCEDURE 1MULTIPLY

LOCAL 	a b	END

BEGIN
  a := x
  b := y
  z := 0
  WHILE b MOD 2 = 1 DO 
    IF b = 1 THEN 
      z := z + a 
      a := a - n
    END
    a := a + a
    b := b / 2
  END
END MULTIPLY


PROCEDURE DIVIDE

LOCAL 	w	END

BEGIN
  r := x
  q := 0
  w := y
  WHILE w <= r DO 
    w := w + w
    z := y + 1
  END
  WHILE w > y DO 
    q := q + q
    w := w / 2
    IF w <= r THEN 
      r := r - w
      q := q + 1
    END
  END
END DIVIDE


PROCEDURE Gcd

LOCAL	 f g	END

BEGIN
  f := x
  g := y
  WHILE f # g DO 
    IF f < g THEN 
      g := g - f
      q := f + g
    END
    IF g < f THEN
      f := f - g
      r := m . x
    END
  END
  z := f
END Gcd

BEGIN
  x := m
  y := n
  MULTIPLY
  x := 25
  y :=  3
  DIVIDE
  x := 84
  y := 36
  Gcd
END test23
   

Plov : test24

PROGRAM testt

CONSTANTS a = 1 END

VARIABLES  ab END

PROCEDURE hhhhhhh

LOCAL aa ss END

BEGIN
  aa := ss + 22
  aa := 0
END hhhhhhh

BEGIN
  ab := a + 1
END testt
   

Plov : test25

PROGRAM test25

PROCESSOR ATmega8535

CONSTANTS a = 1 END

VARIABLES  ab END

PROCEDURE hhhhhhh var1 var2

LOCAL aa ss END

BEGIN
  aa := ss + 22
  INC ab
  ss := var1 * var2
END hhhhhhh

BEGIN
  ab := a + 1
  hhhhhhh ab 2
END test25
   

Plov : test26

PROGRAM test26

PROCESSOR ATmega8515

CONSTANTS	m =  7
		n = b1001,0101
END

VARIABLES	x 
		y 
		z 
		q
		r
END


PROCEDURE MULTIPLY p q

BEGIN
  z := 0
  WHILE q MOD 2 = 1 DO 
    IF q = 1 THEN z := z + p END
    p := p SHL 1
    q := q SHR 1
  END
END MULTIPLY


PROCEDURE DIVIDE t n

LOCAL 	w	END

BEGIN
  t := x
  q := 0
  n := y
  WHILE n <= t DO n := n SHL 1 END
  WHILE n > y DO 
    q := q SHL 1
    n := n SHR 1
    IF n <= t THEN 
      t := t - n
      INC q
    END
  END
END DIVIDE


PROCEDURE Gcd

LOCAL	 f g	END

BEGIN
  f := x
  g := y
  WHILE f # g DO 
    IF f < g THEN 
      g := g - f
      q := f + g
    END
    IF g < f THEN
      f := f - g
      r := m . x
    END
  END
  z := f
END Gcd

IRQ 1 = Gcd

BEGIN
  MULTIPLY m n
  DIVIDE x y
  x := 84
  y := 36
  Gcd
END test26
   

Plov : test27

PROGRAM test27

PROCESSOR ATmega8535

VARIABLES AAA a b c d e f g h i j k END

PROCEDURE gobble a b c

BEGIN
   IF  a < b  THEN
      c := d
      b := a - 1
      e := f . g
      i := 1
   ELSIF  a = b  THEN
      d := c
      g := f . i
      k := j MOD d
   ELSIF  b > a  THEN
      h := 2
      k := i - 1
   ELSE
      d := 0
   END
END gobble

BEGIN
   gobble 1 2 3
END test27
   

Plov : test28

PROGRAM test28

PROCESSOR ATmega8515

CONSTANTS	aa = 12		END

VARIABLES	a aaa b bab	END

BEGIN
   a := aaa SHL aa
   bab := 1 SHR a
   b := aa MOD 3
   aaa := aaa + 1
   a := aa DIV b
END test28
   

Plov : test29

PROGAM test29

CONSTANTS	zz = 12		END

VARIABLES a b c d e f g h i j k END

PROCEDURE gobble a 
		 b 
		 c

BEGIN
   IF  a @ b  THEN
      c := d
      e := f . g
      i := 1
   ELSIF  a MOD b  THEN
      d := c
      g := f . i
      k := j % d
   ELSIF  b > a  THEN
      h := 2
      k := i - 1
   ELSE
      d := 0
   END
END goble

BEGIN
   gobble 1 
   	  2 k
END test2
   

Plov : test30

PROGRAM test30

PROCESSOR  ATmega8515

CONSTANTS  Ser0 = 101
	   Ser1 = 105
	   DTR0 = 102
	   DTR1 = 118
END

VARIABLES  a b cc ddd  END

BEGIN
   a := UCSRA
   b := PORTD
   cc := EEARL
   INC PORTA
   DEC PORTB
   EEARL := DTR0
   RXCIE := 1
END test30
   

Plov : testIRQ

PROGRAM testIRQ

PROCESSOR AT90S8515

VARIABLES  a x y z END

PROCEDURE OpenGate

BEGIN
   a := x + y
END OpenGate

PROCEDURE CloseGate

BEGIN
   x := y - a
END CloseGate

IRQ 0 = OpenGate
IRQ 1 = CloseGate

BEGIN
   OpenGate
END testIRQ
   

Page created on 12 October 2007 and

Page equipped with FroogleBuster technology