Work on PL/0 Grammar as a PEG example

release
Chris Double 2007-11-27 15:56:26 +13:00
parent 5fb6af754b
commit ea2d4ea261
4 changed files with 29 additions and 0 deletions

View File

@ -0,0 +1 @@
Chris Double

View File

@ -0,0 +1,13 @@
! Copyright (C) 2007 Chris Double.
! See http://factorcode.org/license.txt for BSD license.
!
USING: kernel tools.test peg peg.pl0 ;
IN: temporary
{ "abc" } [
"abc" 'ident' parse parse-result-ast
] unit-test
{ 55 } [
"55abc" 'number' parse parse-result-ast
] unit-test

14
extra/peg/pl0/pl0.factor Normal file
View File

@ -0,0 +1,14 @@
! Copyright (C) 2007 Chris Double.
! See http://factorcode.org/license.txt for BSD license.
USING: kernel arrays strings math.parser peg ;
IN: peg.pl0
#! Grammar for PL/0 based on http://en.wikipedia.org/wiki/PL/0
: 'ident' ( -- parser )
CHAR: a CHAR: z range
CHAR: A CHAR: Z range 2array choice repeat1
[ >string ] action ;
: 'number' ( -- parser )
CHAR: 0 CHAR: 9 range repeat1 [ string>number ] action ;

View File

@ -0,0 +1 @@
Grammar for PL/0 Language