FShell Query Language (FQL)

For a reference documentation of FQL please see our ASE’10 publication
 
Andreas Holzer, Christian Schallhart, Michael Tautschnig, and Helmut Veith. How did you specify your test suite ? In Proceedings of the 25th IEEE/ACM International Conference on Automated Software Engineering (ASE 2010), September 2010.

FShell accepts the following language, which includes control and macro commands in addition to core FQL statements.

Control commands

<Statement> ::= `QUIT' | `HELP'
              | `ADD' `SOURCECODE' <Defines> <File name>
              | `SHOW' `FILENAMES'
              | `SHOW' `SOURCECODE' <File name>
              | `SHOW' `SOURCECODE' `ALL'
              | `SET' <Options>
<Options> ::= `ENTRY' <Identifier>
            | `LIMIT' `COUNT' <Number>
            | `NO_ZERO_INIT'
            | `ABSTRACT' <Identifier>
<File name> ::= <Singly Quoted String>
<Defines> ::=
            | `-D' <Identifier> <Defines>
            | `-D' <Identifier> `=' <Singly Quoted String> <Defines>
Comments start with `//' and end at the end of the line

Macro definitions

<Macro> ::= `#define' <Macro Decl> <Some Def or Empty>
<Macro Decl> ::= <Identifier>
               | <Identifier> `(' <Macro Args> `)'
<Macro Args> ::= <Identifier>
               | <Macro Args> `,' <Identifier>

FQL

<Query> ::= <Scope> <Cover> <Passing>
<Scope> ::=
          | `IN' <Filter>
<Cover> ::= `COVER' <Start_Anchor> <Coverage_Pattern> <End_Anchor>
<Passing> ::=
            | `PASSING' <Start_Anchor> <Path_Pattern> <End_Anchor>
<Start_Anchor> ::=
                 | `^'
<End_Anchor> ::=
               | `$'
<Coverage_Pattern> ::= <Coverage_Pattern_Term>
                     | <Coverage_Pattern> `+' <Coverage_Pattern_Term>
<Coverage_Pattern_Term> ::= <Coverage_Pattern_Factor>
                          | <Coverage_Pattern_Term> `.' <Coverage_Pattern_Factor>
                          | <Coverage_Pattern_Term> `->' <Coverage_Pattern_Factor>
<Coverage_Pattern_Factor> ::= <ECP_Atom>
                            | `(' <Coverage_Pattern> `)'
                            | `"' <Path_Pattern> `"'
<Path_Pattern> ::= <Path_Pattern_Term>
                 | <Path_Pattern> `+' <Path_Pattern_Term>
<Path_Pattern_Term> ::= <Path_Pattern_Factor>
                      | <Path_Pattern_Term> `.' <Path_Pattern_Factor>
                      | <Path_Pattern_Term> `->' <Path_Pattern_Factor>
<Path_Pattern_Factor> ::= <ECP_Atom>
                        | `(' <Path_Pattern> `)'
                        | <Path_Pattern_Factor> `*'
                        | <Path_Pattern_Factor> `>=' <TOK_NAT_NUMBER>
                        | <Path_Pattern_Factor> `==' <TOK_NAT_NUMBER>
                        | <Path_Pattern_Factor> `<=' <TOK_NAT_NUMBER>
<ECP_Atom> ::= <Predicate>
             | `NODES' `(' <Filter> `)'
             | `EDGES' `(' <Filter> `)'
             | <Filter>
             | `PATHS' `(' <Filter> `,' <TOK_NAT_NUMBER> `)'
<Predicate> ::= `{[^{}]+}'
<Predicates> ::= <Predicate>
               | <Predicates> `,' <Predicate
<Filter> ::= <Filter_Function>
           | `(' <Filter> `)'
           | `NOT' `(' <Filter> `)'
           | <Filter> `|' <Filter>
           | <Filter> `&' <Filter>
           | `SETMINUS' `(' <Filter> `,' <Filter> `)'
           | `COMPOSE' `(' <Filter> `,' <Filter> `)'
<Filter_Function> ::= `ID'
                    | `@FILE' `(' <TOK_QUOTED_STRING> `)'
                    | `@LINE' `(' <TOK_NAT_NUMBER> `)'
                    | `@[0-9]+'
                    | `@COLUMN' `(' <TOK_NAT_NUMBER> `)'
                    | `@FUNC' `(' <TOK_C_IDENT> `)'
                    | `@LABEL' `(' <TOK_C_IDENT> `)'
                    | `@CALL' `(' <TOK_C_IDENT> `)'
                    | `@CALLS'
                    | `@ENTRY' `(' <TOK_C_IDENT> `)'
                    | `@EXIT' `(' <TOK_C_IDENT> `)'
                    | `@BASICBLOCKENTRY'
                    | `@CONDITIONEDGE'
                    | `@DEF' `(' <TOK_C_IDENT> `)'
                    | `@USE' `(' <TOK_C_IDENT> `)'
                    | `@STMTTYPE' `(' <Stmttypes> `)'
<Stmttype> ::= `IF'
             | `FOR'
             | `WHILE'
             | `SWITCH'
             | `?:'
             | `ASSERT'
<Stmttypes> ::= <Stmttype>
              | <Stmttypes> `,' <Stmttype>

Latest News

FORSYTE’s 2018 paper awards

FORSYTE has had a quite successful year: Adrian Rebola Pardo and his co-authors received the IJCAR best paper award for their paper Extended Resolution Simulates DRAT, Mitra Tabaei Befrouei and her co-authors received an OOPSLA 2018 Distinguished Paper award for their paper Randomized Testing of Distributed Systems with Probabilistic Guarantees, and Thomas Pani received the […]

Continue reading

OOPSLA Distinguished Paper Award

Mitra Tabaei Befrouei and her co-authors from MPI-SWS Burcu Kulahcioglu Ozkan, Rupak Majumdar, and Filip Niksic, received an OOPSLA’18 Distinguished Paper Award for their contribution “Randomized Testing of Distributed Systems with Probabilistic Guarantees” (Open Access article). Congratulations!

Continue reading

Zvonimir Rakamiric visiting FORSYTE

Prof. Zvonimir Rakamiric from the School of Computing at the University of Utah is spending his sabbatical with the FORSYTE group at TU Wien. He is generously sponsored by the Wolfgang Pauli Institute and a Pauli Fellow.

Continue reading

Helmut Veith Stipend Award Ceremony

The Vice Rector for Academic Affairs of TU Wien, Kurt Matyas, will award the scholarship recipient of the Helmut Veith Stipend at the award ceremony on Friday, April 06, 2018 in the Kontaktraum, starting at 17:05.

Continue reading

Full news archive