X-Git-Url: https://git.hcoop.net/bpt/coccinelle.git/blobdiff_plain/88e711986b3855c3d5ecf43845f20e0fafef4e5c..3a31414346dd7d7e8baa4cb8b804a2d5e1797962:/parsing_cocci/ast_cocci.mli diff --git a/parsing_cocci/ast_cocci.mli b/parsing_cocci/ast_cocci.mli index 200e6d4..55021b4 100644 --- a/parsing_cocci/ast_cocci.mli +++ b/parsing_cocci/ast_cocci.mli @@ -43,6 +43,8 @@ type 'a wrap = bef_aft : dots_bef_aft; pos_info : meta_name mcode option; (* pos info, try not to duplicate *) true_if_test_exp : bool;(* true if "test_exp from iso", only for exprs *) + (* the following is only for declarations *) + safe_for_multi_decls : bool; (* isos relevant to the term; ultimately only used for rule_elems *) iso_info : (string*anything) list } @@ -100,6 +102,8 @@ and metavar = | MetaLocalIdExpDecl of arity * meta_name (* name *) * Type_cocci.typeC list option | MetaExpListDecl of arity * meta_name (*name*) * list_len (*len*) + | MetaDeclDecl of arity * meta_name (* name *) + | MetaFieldDecl of arity * meta_name (* name *) | MetaStmDecl of arity * meta_name (* name *) | MetaStmListDecl of arity * meta_name (* name *) | MetaFuncDecl of arity * meta_name (* name *) @@ -256,7 +260,9 @@ and base_typeC = string mcode (* ) *) | Array of fullType * string mcode (* [ *) * expression option * string mcode (* ] *) - | EnumName of string mcode (*enum*) * ident (* name *) + | EnumName of string mcode (*enum*) * ident option (* name *) + | EnumDef of fullType (* either EnumName or metavar *) * + string mcode (* { *) * expression dots * string mcode (* } *) | StructUnionName of structUnion mcode * ident option (* name *) | StructUnionDef of fullType (* either StructUnionName or metavar *) * string mcode (* { *) * declaration dots * string mcode (* } *) @@ -268,7 +274,7 @@ and fullType = base_fullType wrap and typeC = base_typeC wrap and baseType = VoidType | CharType | ShortType | IntType | DoubleType - | FloatType | LongType | LongLongType + | FloatType | LongType | LongLongType | SizeType | SSizeType | PtrDiffType and structUnion = Struct | Union @@ -293,6 +299,7 @@ and base_declaration = | Ddots of string mcode (* ... *) * declaration option (* whencode *) | MetaDecl of meta_name mcode * keep_binding * inherited + | MetaField of meta_name mcode * keep_binding * inherited | OptDecl of declaration | UniqueDecl of declaration @@ -305,7 +312,8 @@ and declaration = base_declaration wrap and base_initialiser = MetaInit of meta_name mcode * keep_binding * inherited | InitExpr of expression - | InitList of bool (* true if all are - *) * + | ArInitList of string mcode (*{*) * initialiser dots * string mcode (*}*) + | StrInitList of bool (* true if all are - *) * string mcode (*{*) * initialiser list * string mcode (*}*) * initialiser list (* whencode: elements that shouldn't appear in init *) | InitGccExt of @@ -314,6 +322,7 @@ and base_initialiser = | InitGccName of ident (* name *) * string mcode (*:*) * initialiser | IComma of string mcode (* , *) + | Idots of string mcode (* ... *) * initialiser option (* whencode *) | OptIni of initialiser | UniqueIni of initialiser @@ -434,6 +443,7 @@ and base_rule_elem = | Ty of fullType (* only at top level *) | TopInit of initialiser (* only at top level *) | Include of string mcode (*#include*) * inc_file mcode (*file *) + | Undef of string mcode (* #define *) * ident (* name *) | DefineHeader of string mcode (* #define *) * ident (* name *) * define_parameters (*params*) | Case of string mcode (* case *) * expression * string mcode (*:*) @@ -548,7 +558,8 @@ and rule = top_level list * bool list (* true if generates an exp *) * ruletype | ScriptRule of string (* name *) * string * dependency * - (script_meta_name * meta_name * metavar) list * string + (script_meta_name * meta_name * metavar) list * + meta_name list (*script vars*) * string | InitialScriptRule of string (* name *) * string * dependency * string | FinalScriptRule of string (* name *) * @@ -637,6 +648,7 @@ val get_pos : 'a wrap -> meta_name mcode option val set_pos : 'a wrap -> meta_name mcode option -> 'a wrap val get_test_exp : 'a wrap -> bool val set_test_exp : expression -> expression +val get_safe_decl : 'a wrap -> bool val get_isos : 'a wrap -> (string*anything) list val set_isos : 'a wrap -> (string*anything) list -> 'a wrap val get_pos_var : 'a mcode -> meta_pos