From 542eecab1c9a3e4c47dadef6d5407e5412df4ee5 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Wed, 22 Jun 2016 17:40:56 -0700 Subject: [PATCH] factor: fix EBNF: syntax. --- .../arithmetic-evaluation/arithmetic-evaluation.factor | 4 ++-- demos/smalltalk/parser/parser.factor | 4 ++-- frameworks/db/postgresql/errors/errors.factor | 4 ++-- frameworks/db/sqlite/errors/errors.factor | 4 ++-- language/compiler/tests/peg-regression-2.factor | 4 ++-- language/peg/ebnf/ebnf.factor | 4 ++-- libs/brainfuck/brainfuck.factor | 4 ++-- libs/formatting/formatting.factor | 4 ++-- libs/globs/globs.factor | 4 ++-- libs/gml/parser/parser.factor | 4 ++-- libs/infix/parser/parser.factor | 4 ++-- libs/infix/tokenizer/tokenizer.factor | 4 ++-- libs/peg/expr/expr.factor | 4 ++-- libs/peg/javascript/parser/parser.factor | 4 ++-- libs/peg/javascript/tokenizer/tokenizer.factor | 4 ++-- libs/peg/pl0/pl0.factor | 4 ++-- libs/regexp/parser/parser.factor | 4 ++-- libs/shell/parser/parser.factor | 4 ++-- libs/simple-tokenizer/simple-tokenizer.factor | 4 ++-- libs/svg/svg.factor | 9 ++++----- libs/urls/urls.factor | 4 ++-- 21 files changed, 44 insertions(+), 45 deletions(-) diff --git a/demos/rosetta-code/arithmetic-evaluation/arithmetic-evaluation.factor b/demos/rosetta-code/arithmetic-evaluation/arithmetic-evaluation.factor index b355c91610..91bb54645b 100644 --- a/demos/rosetta-code/arithmetic-evaluation/arithmetic-evaluation.factor +++ b/demos/rosetta-code/arithmetic-evaluation/arithmetic-evaluation.factor @@ -34,7 +34,7 @@ TUPLE: sub < operator ; C: sub ; TUPLE: mul < operator ; C: mul ; TUPLE: div < operator ; C:
div ; -: expr-ast ( string -- obj ) EBNF{{ +EBNF: expr-ast [=[ spaces = [\n\t ]* digit = [0-9] number = (digit)+ => [[ string>number ]] @@ -51,7 +51,7 @@ exp = exp:a spaces "+" fac:b => [[ a b ]] | fac main = exp:e spaces !(.) => [[ e ]] -}} ; +]=] ; GENERIC: eval-ast ( ast -- result ) ; diff --git a/demos/smalltalk/parser/parser.factor b/demos/smalltalk/parser/parser.factor index c8d61eaa48..7aab5804fa 100644 --- a/demos/smalltalk/parser/parser.factor +++ b/demos/smalltalk/parser/parser.factor @@ -13,7 +13,7 @@ ERROR: bad-number str ; : check-number ( str -- n ) >string dup string>number [ ] [ bad-number ] ?if ; -: parse-smalltalk ( string -- obj ) EBNF{{ +EBNF: parse-smalltalk [=[ Character = . WhitespaceCharacter = [ \t\n\r] @@ -225,4 +225,4 @@ End = !(.) Program = TopLevelForm End -}} ; +]=] ; diff --git a/frameworks/db/postgresql/errors/errors.factor b/frameworks/db/postgresql/errors/errors.factor index f89cf82320..bc98fd230d 100644 --- a/frameworks/db/postgresql/errors/errors.factor +++ b/frameworks/db/postgresql/errors/errors.factor @@ -5,7 +5,7 @@ combinators.short-circuit accessors math.parser quoting locals ; IN: db.postgresql.errors -: parse-postgresql-sql-error ( string -- obj ) EBNF{{ +EBNF: parse-postgresql-sql-error [=[ Error = "ERROR:" [ ]+ @@ -35,7 +35,7 @@ UnknownError = .* => [[ >string ]] PostgresqlSqlError = (TableError | DatabaseError | FunctionError | SyntaxError | UnknownError) -}} ; +]=] ; TUPLE: parse-postgresql-location column line text ; diff --git a/frameworks/db/sqlite/errors/errors.factor b/frameworks/db/sqlite/errors/errors.factor index e3e2838f5e..3c9f7a42c3 100644 --- a/frameworks/db/sqlite/errors/errors.factor +++ b/frameworks/db/sqlite/errors/errors.factor @@ -14,7 +14,7 @@ SINGLETONS: table-exists table-missing ; { table-exists [ ] } } case ; -: parse-sqlite-sql-error ( string -- obj ) EBNF{{ +EBNF: parse-sqlite-sql-error [=[ TableMessage = " already exists" => [[ table-exists ]] @@ -25,4 +25,4 @@ SqliteError = => [[ table >string ]] | .*:error => [[ error >string ]] -}} ; +]=] ; diff --git a/language/compiler/tests/peg-regression-2.factor b/language/compiler/tests/peg-regression-2.factor index 5d9bb2f26c..cd1bce2816 100644 --- a/language/compiler/tests/peg-regression-2.factor +++ b/language/compiler/tests/peg-regression-2.factor @@ -4,12 +4,12 @@ IN: compiler.tests.peg-regression-2 GENERIC: ( times -- term' ) ; M: string ; -: parse-regexp ( string -- obj ) EBNF{{ +EBNF: parse-regexp [=[ Times = .* => [[ "foo" ]] Regexp = Times:t => [[ t ]] -}} ; +]=] ; [ "foo" ] [ "a" parse-regexp ] unit-test diff --git a/language/peg/ebnf/ebnf.factor b/language/peg/ebnf/ebnf.factor index 8abd6760e0..4442e75c54 100644 --- a/language/peg/ebnf/ebnf.factor +++ b/language/peg/ebnf/ebnf.factor @@ -4,7 +4,7 @@ USING: accessors assocs combinators combinators.short-circuit effects kernel make math math.parser multiline namespaces parser peg peg.parsers quotations sequences sequences.deep splitting stack-checker strings strings.parser summary unicode -vocabs.parser words ; +vocabs.parser words lexer ; FROM: vocabs.parser => search ; FROM: peg.search => replace ; IN: peg.ebnf @@ -558,7 +558,7 @@ SYNTAX: \ EBNF(( suffix! \ call suffix! reset-tokenizer ; SYNTAX: \ EBNF: - reset-tokenizer scan-new-word dup "EBNF;" parse-multiline-string + reset-tokenizer scan-new-word dup scan-object ";" expect ebnf>quot swapd ( input -- ast ) define-declared "ebnf-parser" set-word-prop reset-tokenizer ; diff --git a/libs/brainfuck/brainfuck.factor b/libs/brainfuck/brainfuck.factor index 90e156c7d6..58274be5ac 100644 --- a/libs/brainfuck/brainfuck.factor +++ b/libs/brainfuck/brainfuck.factor @@ -49,7 +49,7 @@ TUPLE: brainfuck pointer memory ; : compose-all ( seq -- quot ) [ ] [ compose ] reduce ; -: parse-brainfuck ( string -- obj ) EBNF{{ +EBNF: parse-brainfuck [=[ inc-ptr = (">")+ => [[ length '[ _ (>) ] ]] dec-ptr = ("<")+ => [[ length '[ _ (<) ] ]] @@ -66,7 +66,7 @@ loop = "[" {loop|ops}+ "]" => [[ second compose-all '[ [ (?) ] _ while ] ]] code = (loop|ops|unknown)* => [[ compose-all ]] -}} ; +]=] ; PRIVATE> diff --git a/libs/formatting/formatting.factor b/libs/formatting/formatting.factor index 59e8778326..69b283b80d 100644 --- a/libs/formatting/formatting.factor +++ b/libs/formatting/formatting.factor @@ -37,7 +37,7 @@ PRIVATE< ERROR: unknown-printf-directive ; -: parse-printf ( string -- obj ) EBNF{{ +EBNF: parse-printf [=[ zero = "0" => [[ char: 0 ]] char = "'" (.) => [[ second ]] @@ -90,7 +90,7 @@ plain-text = (!("%").)+ => [[ >string ]] text = (formats|plain-text)* => [[ ]] -}} ; +]=] ; : printf-quot ( format-string -- format-quot n ) parse-printf [ [ callable? ] count ] keep [ diff --git a/libs/globs/globs.factor b/libs/globs/globs.factor index 5a7f45a40d..d64fc61ce7 100644 --- a/libs/globs/globs.factor +++ b/libs/globs/globs.factor @@ -12,7 +12,7 @@ IN: globs : wild-path-separator ( -- sep ) os windows? R{{ [^\\/\\][\\/\\]|[^\\/\\]}} R{{ [^\\/][\\/]|[^\\/]}} ? ; foldable -: ( string -- obj ) EBNF{{ +EBNF: [=[ Character = "\\" .:c => [[ c 1string ]] | !(","|"}") . => [[ 1string ]] @@ -45,7 +45,7 @@ End = !(.) Main = Concatenation End -}} ; +]=] ; : glob-matches? ( input glob -- ? ) [ >case-fold ] bi@ matches? ; diff --git a/libs/gml/parser/parser.factor b/libs/gml/parser/parser.factor index 5434c3b340..f70a02ee59 100644 --- a/libs/gml/parser/parser.factor +++ b/libs/gml/parser/parser.factor @@ -52,7 +52,7 @@ ERROR: bad-vector-length seq n ; [ bad-vector-length ] } case ; -: parse-gml ( string -- obj ) EBNF{{ +EBNF: parse-gml [=[ Letter = [a-zA-Z] Digit = [0-9] @@ -124,4 +124,4 @@ Tokens = Token* => [[ [ comment? ] reject ]] Program = Tokens Spaces !(.) => [[ parse-proc ]] -}} ; +]=] ; diff --git a/libs/infix/parser/parser.factor b/libs/infix/parser/parser.factor index bf804c0644..42efbafd56 100644 --- a/libs/infix/parser/parser.factor +++ b/libs/infix/parser/parser.factor @@ -4,7 +4,7 @@ USING: infix.ast infix.tokenizer kernel math peg.ebnf sequences strings vectors ; IN: infix.parser -: parse-infix ( string -- obj ) EBNF{{ +EBNF: parse-infix [=[ Number = . ?[ ast-number? ]? Identifier = . ?[ string? ]? Array = Identifier:i "[" Sum:s "]" => [[ i s ast-array boa ]] @@ -29,7 +29,7 @@ Sum = Sum:s ("+"|"-"):op Product:p => [[ s p op ast-op boa ]] End = !(.) Expression = Sum End -}} ; +]=] ; : build-infix-ast ( string -- ast ) tokenize-infix parse-infix ; diff --git a/libs/infix/tokenizer/tokenizer.factor b/libs/infix/tokenizer/tokenizer.factor index a90c13d3fc..22681c4daa 100644 --- a/libs/infix/tokenizer/tokenizer.factor +++ b/libs/infix/tokenizer/tokenizer.factor @@ -4,7 +4,7 @@ USING: infix.ast kernel peg peg.ebnf math.parser sequences strings ; IN: infix.tokenizer -: tokenize-infix ( string -- obj ) EBNF{{ +EBNF: tokenize-infix [=[ Letter = [a-zA-Z] Digit = [0-9] Digits = Digit+ @@ -21,4 +21,4 @@ Special = [+*/%(),] | "-" => [[ char: - ]] Tok = Spaces (Name | Number | Special ) End = !(.) Toks = Tok* Spaces End -}} ; +]=] ; diff --git a/libs/peg/expr/expr.factor b/libs/peg/expr/expr.factor index 10070e2d38..f0ebe98a84 100644 --- a/libs/peg/expr/expr.factor +++ b/libs/peg/expr/expr.factor @@ -4,7 +4,7 @@ USING: kernel arrays strings math.parser sequences peg peg.ebnf peg.parsers memoize math accessors ; IN: peg.expr -: expr ( string -- obj ) EBNF{{ +EBNF: expr [=[ number = ([0-9])+ => [[ string>number ]] value = number | ("(" exp ")") => [[ second ]] @@ -16,4 +16,4 @@ fac = fac "*" value => [[ first3 nip * ]] exp = exp "+" fac => [[ first3 nip + ]] | exp "-" fac => [[ first3 nip - ]] | fac -}} ; +]=] ; diff --git a/libs/peg/javascript/parser/parser.factor b/libs/peg/javascript/parser/parser.factor index 3ac7a8066b..4ec97827a3 100644 --- a/libs/peg/javascript/parser/parser.factor +++ b/libs/peg/javascript/parser/parser.factor @@ -18,7 +18,7 @@ IN: peg.javascript.parser ! This operates a character at a time. Using this 'nl' in the parser ! allows us to detect newlines when we need to for the semicolon ! insertion rule, but ignore it in all other places. -: javascript ( string -- obj ) EBNF{{ +EBNF: javascript [=[ tokenizer = default nl = "\r\n" | "\n" @@ -197,4 +197,4 @@ SrcElem = "function" Name:n FuncRest:f => [[ n f a | Stmt SrcElems = SrcElem* => [[ ast-begin boa ]] TopLevel = SrcElems Spaces -}} ; +]=] ; diff --git a/libs/peg/javascript/tokenizer/tokenizer.factor b/libs/peg/javascript/tokenizer/tokenizer.factor index 26b5782fe6..2142a80b00 100644 --- a/libs/peg/javascript/tokenizer/tokenizer.factor +++ b/libs/peg/javascript/tokenizer/tokenizer.factor @@ -8,7 +8,7 @@ IN: peg.javascript.tokenizer USE: prettyprint -: tokenize-javascript ( string -- obj ) EBNF{{ +EBNF: tokenize-javascript [=[ Letter = [a-zA-Z] Digit = [0-9] Digits = Digit+ @@ -87,4 +87,4 @@ Special = "(" | ")" | "{" | "}" | "[" | "]" | "," | | "^" Tok = Spaces (Name | Keyword | Number | Str | RegExp | Special ) Toks = Tok* Spaces -}} ; +]=] ; diff --git a/libs/peg/pl0/pl0.factor b/libs/peg/pl0/pl0.factor index f96da799b6..681a2f7d8f 100644 --- a/libs/peg/pl0/pl0.factor +++ b/libs/peg/pl0/pl0.factor @@ -6,7 +6,7 @@ IN: peg.pl0 ! Grammar for PL/0 based on http://en.wikipedia.org/wiki/PL/0 -: pl0 ( string -- obj ) EBNF{{ +EBNF: pl0 [=[ block = { "CONST" ident "=" number { "," ident "=" number }* ";" }? { "VAR" ident { "," ident }* ";" }? @@ -24,4 +24,4 @@ factor = ident | number | "(" expression ")" ident = (([a-zA-Z])+) => [[ >string ]] number = ([0-9])+ => [[ string>number ]] program = { block "." } -}} ; +]=] ; diff --git a/libs/regexp/parser/parser.factor b/libs/regexp/parser/parser.factor index a073d57f15..64f29ccd31 100644 --- a/libs/regexp/parser/parser.factor +++ b/libs/regexp/parser/parser.factor @@ -126,7 +126,7 @@ ERROR: nonexistent-option name ; ! add greedy and nongreedy forms of matching ! (once it's all implemented) -: parse-regexp ( string -- obj ) EBNF{{ +EBNF: parse-regexp [=[ CharacterInBracket = !("}") Character @@ -217,4 +217,4 @@ Alternation = Concatenation:c ("|" Concatenation)*:a End = !(.) Main = Alternation End -}} ; +]=] ; diff --git a/libs/shell/parser/parser.factor b/libs/shell/parser/parser.factor index db031137bb..5eed5b1e93 100644 --- a/libs/shell/parser/parser.factor +++ b/libs/shell/parser/parser.factor @@ -41,7 +41,7 @@ TUPLE: factor-expr expr ; : ast>factor-expr ( ast -- obj ) second >string factor-expr boa ; -: expr ( string -- obj ) EBNF{{ +EBNF: expr [=[ space = " " @@ -89,4 +89,4 @@ pipeline = _ command _ (in-file)? _ "|" _ (command _ "|" _)* command _ (to-file submission = (pipeline | basic) -}} ; +]=] ; diff --git a/libs/simple-tokenizer/simple-tokenizer.factor b/libs/simple-tokenizer/simple-tokenizer.factor index b0b9868c67..ada53f6412 100644 --- a/libs/simple-tokenizer/simple-tokenizer.factor +++ b/libs/simple-tokenizer/simple-tokenizer.factor @@ -3,11 +3,11 @@ USING: peg.ebnf strings ; IN: simple-tokenizer -: tokenize ( string -- obj ) EBNF{{ +EBNF: tokenize [=[ space = [ \t\n\r] escaped-char = "\\" .:ch => [[ ch ]] quoted = '"' (escaped-char | [^"])*:a '"' => [[ a ]] unquoted = (escaped-char | [^ \t\n\r"])+ argument = (quoted | unquoted) => [[ >string ]] command = space* (argument:a space* => [[ a ]])+:c !(.) => [[ c ]] -}} ; +]=] ; diff --git a/libs/svg/svg.factor b/libs/svg/svg.factor index 03bb70367f..1d00ff0401 100644 --- a/libs/svg/svg.factor +++ b/libs/svg/svg.factor @@ -16,8 +16,7 @@ XML-NS: inkscape-name http://www.inkscape.org/namespaces/inkscape ; : degrees ( deg -- rad ) pi * 180.0 / ; -: svg-transform>affine-transform ( string -- obj ) - EBNF{{ +EBNF: svg-transform>affine-transform [=[ transforms = transform:m comma-wsp+ transforms:n => [[ m n a. ]] @@ -77,7 +76,7 @@ wsp = [ \t\r\n] transform-list = wsp* transforms?:t wsp* => [[ t [ identity-transform ] unless* ]] -}} ; +]=] ; : tag-transform ( tag -- transform ) "transform" svg-name attr svg-transform>affine-transform ; @@ -96,7 +95,7 @@ TUPLE: elliptical-arc radii x-axis-rotation large-arc? sweep? p relative? ; : (set-relative) ( args rel -- args ) '[ [ _ >>relative? drop ] each ] keep ; -: svg-path>array ( string -- obj ) EBNF{{ +EBNF: svg-path>array [=[ moveto-drawto-command-groups = moveto-drawto-command-group:first wsp* moveto-drawto-command-groups:rest @@ -219,7 +218,7 @@ wsp = [ \t\r\n] svg-path = wsp* moveto-drawto-command-groups?:x wsp* => [[ x ]] -}} ; +]=] ; : tag-d ( tag -- d ) "d" svg-name attr svg-path>array ; diff --git a/libs/urls/urls.factor b/libs/urls/urls.factor index 7cdd2dff4b..81c52ab259 100644 --- a/libs/urls/urls.factor +++ b/libs/urls/urls.factor @@ -35,7 +35,7 @@ M: url >url ; PRIVATE< -: parse-url ( string -- obj ) EBNF{{ +EBNF: parse-url [=[ protocol = [a-z+]+ => [[ url-decode ]] username = [^/:@#?]+ => [[ url-decode ]] @@ -57,7 +57,7 @@ url = (((protocol "://") => [[ first ]] auth hostname) ("?" query => [[ second ]])? ("#" anchor => [[ second ]])? -}} ; +]=] ; PRIVATE>