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 1971-2016

It is with the deepest sadness that we announce Helmut Veith’s passing on March 12, 2016. Helmut was a brilliant researcher, an inspiring collaborator, a stimulating teacher, a generous friend, and a wonderful father and husband. He leaves a void that will be impossible to fill. Our thoughts are with his family and friends.

Continue reading

Profil article on women in logic

A recent article in the Austrian weekly Profil about female logicians in Austria is featuring Agata Ciabattoni, Martina Seidl, Laura Kovacs, Magdalena Ortiz, Marijana Lazic, Shqiponja Ahmetaj, and Neha Lodha. All women are affiliated with the Doctoral College Logical Methods in Computer Science.  

Continue reading

Full news archive