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

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

Helmut Veith Stipend 2017

Outstanding female students in the field of computer science who pursue (or plan to pursue) one of the master‘s programs in Computer Science at TU Wien taught in English are invited to apply for the Helmut Veith Stipend

Continue reading

Full news archive