From 05b1d9e89a94ee5594168073b8dc363fada987f1 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Fri, 11 Nov 2016 14:35:00 +0200 Subject: Clean up testscript grammar and parser --- doc/testscript.cli | 55 +++++++++++++++++++++++++++++------------------------- 1 file changed, 30 insertions(+), 25 deletions(-) (limited to 'doc/testscript.cli') diff --git a/doc/testscript.cli b/doc/testscript.cli index 123846f..1ba9a4b 100644 --- a/doc/testscript.cli +++ b/doc/testscript.cli @@ -708,14 +708,13 @@ script: scope-body: *setup - *(scope|test|include) - *teardown + *(directive|scope|test) + *tdown -setup: - variable-line|setup-line +directive: + include -teardown: - variable-line|teardown-line +include: '.include' (' '+'--once')*(' '+)* scope: ?description @@ -726,54 +725,60 @@ scope-block: scope-body '}' -scope-if: ('if'|'if!') command-expr +scope-if: ('if'|'if!') command-line scope-block *scope-elif ?scope-else -scope-elif: ('elif'|'elif!') command-expr +scope-elif: ('elif'|'elif!') command-line scope-block scope-else: 'else' scope-block -test: - ?description - *((variable-line|test-line) ';') - test-line (':' )? - -include: '.include' (' '+'--once')*(' '+)* - description: +(':' ) +setup: + variable-line|setup-line + +tdown: + variable-line|tdown-line + +setup-line: '+' command-like +tdown-line: '-' command-like + +test: + ?description + +(variable-line|command-like) + variable-line: ('='|'+='|'=+') value-attributes? value-attributes: '[' ']' -setup-line: '+' command-line -teardown-line: '-' command-line -test-line: command-line +command-like: + command-line|command-if -command-line: - command-expr|command-if +# Note: ':' and ';' only valid directly in test. +# +command-line: command-expr (';'|(':' ))? + *here-document -command-if: ('if'|'if!') command-expr +command-if: ('if'|'if!') command-line command-if-body *command-elif ?command-else - 'end' + 'end' (';'|(':' ))? -command-elif: ('elif'|'elif!') command-expr +command-elif: ('elif'|'elif!') command-line command-if-body command-else: 'else' command-if-body command-if-body: - *(variable-line|command-line) + *(variable-line|command-like) command-expr: command-pipe (('||'|'&&') command-pipe)* - *here-document command-pipe: command ('|' command)* -- cgit v1.1