summaryrefslogtreecommitdiffstats
path: root/tcllib/modules/pt/pt_peg_container_peg.tcl
diff options
context:
space:
mode:
authorWilliam Joye <wjoye@cfa.harvard.edu>2016-10-27 19:39:39 (GMT)
committerWilliam Joye <wjoye@cfa.harvard.edu>2016-10-27 19:39:39 (GMT)
commitea28451286d3ea4a772fa174483f9a7a66bb1ab3 (patch)
tree6ee9d8a7848333a7ceeee3b13d492e40225f8b86 /tcllib/modules/pt/pt_peg_container_peg.tcl
parentb5ca09bae0d6a1edce939eea03594dd56383f2c8 (diff)
parent7c621da28f07e449ad90c387344f07a453927569 (diff)
downloadblt-ea28451286d3ea4a772fa174483f9a7a66bb1ab3.zip
blt-ea28451286d3ea4a772fa174483f9a7a66bb1ab3.tar.gz
blt-ea28451286d3ea4a772fa174483f9a7a66bb1ab3.tar.bz2
Merge commit '7c621da28f07e449ad90c387344f07a453927569' as 'tcllib'
Diffstat (limited to 'tcllib/modules/pt/pt_peg_container_peg.tcl')
-rw-r--r--tcllib/modules/pt/pt_peg_container_peg.tcl146
1 files changed, 146 insertions, 0 deletions
diff --git a/tcllib/modules/pt/pt_peg_container_peg.tcl b/tcllib/modules/pt/pt_peg_container_peg.tcl
new file mode 100644
index 0000000..8e03618
--- /dev/null
+++ b/tcllib/modules/pt/pt_peg_container_peg.tcl
@@ -0,0 +1,146 @@
+# -*- tcl -*-
+# Parsing Expression Grammar 'PEG'.
+# Definition of a human-readable form of parsing expression grammar specification.
+
+package require Tcl 8.5
+package require snit
+package require pt::peg::container
+
+snit::type pt::peg::container::peg {
+ constructor {} {
+ install myg using pt::peg::container ${selfns}::G
+ $myg start {n Grammar}
+ $myg add ALNUM ALPHA AND APOSTROPH ASCII Attribute Char CharOctalFull CharOctalPart CharSpecial CharUnescaped CharUnicode Class CLOSE CLOSEB COLON COMMENT DAPOSTROPH DDIGIT Definition DIGIT DOT END EOF EOL Expression Final Grammar GRAPH Header Ident Identifier IS LEAF Literal LOWER NOT OPEN OPENB PEG PLUS Prefix Primary PRINTABLE PUNCT QUESTION Range SEMICOLON Sequence SLASH SPACE STAR StartExpr Suffix TO UPPER VOID WHITESPACE WORDCHAR XDIGIT
+ $myg modes {
+ ALNUM leaf
+ ALPHA leaf
+ AND leaf
+ APOSTROPH void
+ ASCII leaf
+ Attribute value
+ Char value
+ CharOctalFull leaf
+ CharOctalPart leaf
+ CharSpecial leaf
+ CharUnescaped leaf
+ CharUnicode leaf
+ Class value
+ CLOSE void
+ CLOSEB void
+ COLON void
+ COMMENT void
+ DAPOSTROPH void
+ DDIGIT leaf
+ Definition value
+ DIGIT leaf
+ DOT leaf
+ END void
+ EOF void
+ EOL void
+ Expression value
+ Final void
+ Grammar value
+ GRAPH leaf
+ Header value
+ Ident leaf
+ Identifier value
+ IS void
+ LEAF leaf
+ Literal value
+ LOWER leaf
+ NOT leaf
+ OPEN void
+ OPENB void
+ PEG void
+ PLUS leaf
+ Prefix value
+ Primary value
+ PRINTABLE leaf
+ PUNCT leaf
+ QUESTION leaf
+ Range value
+ SEMICOLON void
+ Sequence value
+ SLASH void
+ SPACE leaf
+ STAR leaf
+ StartExpr value
+ Suffix value
+ TO void
+ UPPER leaf
+ VOID leaf
+ WHITESPACE void
+ WORDCHAR leaf
+ XDIGIT leaf
+ }
+ $myg rules {
+ ALNUM {x {t <} {t a} {t l} {t n} {t u} {t m} {t >} {n WHITESPACE}}
+ ALPHA {x {t <} {t a} {t l} {t p} {t h} {t a} {t >} {n WHITESPACE}}
+ AND {x {t &} {n WHITESPACE}}
+ APOSTROPH {t '}
+ ASCII {x {t <} {t a} {t s} {t c} {t i} {t i} {t >} {n WHITESPACE}}
+ Attribute {x {/ {n VOID} {n LEAF}} {n COLON}}
+ Char {/ {n CharSpecial} {n CharOctalFull} {n CharOctalPart} {n CharUnicode} {n CharUnescaped}}
+ CharOctalFull {x {t \134} {.. 0 2} {.. 0 7} {.. 0 7}}
+ CharOctalPart {x {t \134} {.. 0 7} {? {.. 0 7}}}
+ CharSpecial {x {t \134} {/ {t n} {t r} {t t} {t '} {t \42} {t \133} {t \135} {t \134}}}
+ CharUnescaped {x {! {t \134}} dot}
+ CharUnicode {x {t \134} {t u} xdigit {? {x xdigit {? {x xdigit {? xdigit}}}}}}
+ Class {x {n OPENB} {* {x {! {n CLOSEB}} {n Range}}} {n CLOSEB} {n WHITESPACE}}
+ CLOSE {x {t \51} {n WHITESPACE}}
+ CLOSEB {t \135}
+ COLON {x {t :} {n WHITESPACE}}
+ COMMENT {x {t #} {* {x {! {n EOL}} dot}} {n EOL}}
+ DAPOSTROPH {t \42}
+ DDIGIT {x {t <} {t d} {t d} {t i} {t g} {t i} {t t} {t >} {n WHITESPACE}}
+ Definition {x {? {n Attribute}} {n Identifier} {n IS} {n Expression} {n SEMICOLON}}
+ DIGIT {x {t <} {t d} {t i} {t g} {t i} {t t} {t >} {n WHITESPACE}}
+ DOT {x {t .} {n WHITESPACE}}
+ END {x {t E} {t N} {t D} {n WHITESPACE}}
+ EOF {! dot}
+ EOL {/ {x {t \r} {t \n}} {t \n} {t \r}}
+ Expression {x {n Sequence} {* {x {n SLASH} {n Sequence}}}}
+ Final {x {n END} {n SEMICOLON} {n WHITESPACE}}
+ Grammar {x {n WHITESPACE} {n Header} {* {n Definition}} {n Final} {n EOF}}
+ GRAPH {x {t <} {t g} {t r} {t a} {t p} {t h} {t >} {n WHITESPACE}}
+ Header {x {n PEG} {n Identifier} {n StartExpr}}
+ Ident {x {/ {t _} {t :} alpha} {* {/ {t _} {t :} alnum}}}
+ Identifier {x {n Ident} {n WHITESPACE}}
+ IS {x {t <} {t -} {n WHITESPACE}}
+ LEAF {x {t l} {t e} {t a} {t f} {n WHITESPACE}}
+ Literal {/ {x {n APOSTROPH} {* {x {! {n APOSTROPH}} {n Char}}} {n APOSTROPH} {n WHITESPACE}} {x {n DAPOSTROPH} {* {x {! {n DAPOSTROPH}} {n Char}}} {n DAPOSTROPH} {n WHITESPACE}}}
+ LOWER {x {t <} {t l} {t o} {t w} {t e} {t r} {t >} {n WHITESPACE}}
+ NOT {x {t !} {n WHITESPACE}}
+ OPEN {x {t \50} {n WHITESPACE}}
+ OPENB {t \133}
+ PEG {x {t P} {t E} {t G} {n WHITESPACE}}
+ PLUS {x {t +} {n WHITESPACE}}
+ Prefix {x {? {/ {n AND} {n NOT}}} {n Suffix}}
+ Primary {/ {n ALNUM} {n ALPHA} {n ASCII} {n DDIGIT} {n DIGIT} {n GRAPH} {n LOWER} {n PRINTABLE} {n PUNCT} {n SPACE} {n UPPER} {n WORDCHAR} {n XDIGIT} {n Identifier} {x {n OPEN} {n Expression} {n CLOSE}} {n Literal} {n Class} {n DOT}}
+ PRINTABLE {x {t <} {t p} {t r} {t i} {t n} {t t} {t >} {n WHITESPACE}}
+ PUNCT {x {t <} {t p} {t u} {t n} {t c} {t t} {t >} {n WHITESPACE}}
+ QUESTION {x {t ?} {n WHITESPACE}}
+ Range {/ {x {n Char} {n TO} {n Char}} {n Char}}
+ SEMICOLON {x {t \73} {n WHITESPACE}}
+ Sequence {+ {n Prefix}}
+ SLASH {x {t /} {n WHITESPACE}}
+ SPACE {x {t <} {t s} {t p} {t a} {t c} {t e} {t >} {n WHITESPACE}}
+ STAR {x {t *} {n WHITESPACE}}
+ StartExpr {x {n OPEN} {n Expression} {n CLOSE}}
+ Suffix {x {n Primary} {? {/ {n QUESTION} {n STAR} {n PLUS}}}}
+ TO {t -}
+ UPPER {x {t <} {t u} {t p} {t p} {t e} {t r} {t >} {n WHITESPACE}}
+ VOID {x {t v} {t o} {t i} {t d} {n WHITESPACE}}
+ WHITESPACE {* {/ {t \40} {t \t} {n EOL} {n COMMENT}}}
+ WORDCHAR {x {t <} {t w} {t o} {t r} {t d} {t c} {t h} {t a} {t r} {t >} {n WHITESPACE}}
+ XDIGIT {x {t <} {t x} {t d} {t i} {t g} {t i} {t t} {t >} {n WHITESPACE}}
+ }
+ return
+ }
+
+ component myg
+ delegate method * to myg
+}
+
+package provide pt::peg::container::peg 1
+return