Print this page
4474 DTrace Userland CTF Support
4475 DTrace userland Keyword
4476 DTrace tests should be better citizens
4479 pid provider types
4480 dof emulation missing checks
Reviewed by: Bryan Cantrill <bryan@joyent.com>

@@ -21,10 +21,14 @@
  */
 
 /*
  * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
  */
+/*
+ * Copyright (c) 2013 by Delphix. All rights reserved.
+ * Copyright (c) 2013, Joyent, Inc. All rights reserved.
+ */
 
 #include <string.h>
 #include <stdlib.h>
 #include <stdio.h>
 #include <assert.h>

@@ -58,17 +62,21 @@
  * S4 - D control line scan (locate control directives only and invoke S3)
  */
 %}
 
 %e 1500         /* maximum nodes */
-%p 3700         /* maximum positions */
+%p 4900         /* maximum positions */
 %n 600          /* maximum states */
+%a 3000         /* maximum transitions */
 
 %s S0 S1 S2 S3 S4
 
 RGX_AGG         "@"[a-zA-Z_][0-9a-zA-Z_]*
 RGX_PSPEC       [-$:a-zA-Z_.?*\\\[\]!][-$:0-9a-zA-Z_.`?*\\\[\]!]*
+RGX_ALTIDENT    [a-zA-Z_][0-9a-zA-Z_]*
+RGX_LMID        LM[0-9a-fA-F]+`
+RGX_MOD_IDENT   [a-zA-Z_`][0-9a-z.A-Z_`]*`
 RGX_IDENT       [a-zA-Z_`][0-9a-zA-Z_`]*
 RGX_INT         ([0-9]+|0[xX][0-9A-Fa-f]+)[uU]?[lL]?[lL]?
 RGX_FP          ([0-9]+("."?)[0-9]*|"."[0-9]+)((e|E)("+"|-)?[0-9]+)?[fFlL]?
 RGX_WS          [\f\n\r\t\v ]
 RGX_STR         ([^"\\\n]|\\[^"\n]|\\\")*

@@ -134,10 +142,11 @@
 <S0>this        return (DT_KEY_THIS);
 <S0>translator  return (DT_KEY_XLATOR);
 <S0>typedef     return (DT_KEY_TYPEDEF);
 <S0>union       return (DT_KEY_UNION);
 <S0>unsigned    return (DT_KEY_UNSIGNED);
+<S0>userland    return (DT_KEY_USERLAND);
 <S0>void        return (DT_KEY_VOID);
 <S0>volatile    return (DT_KEY_VOLATILE);
 <S0>while       return (DT_KEY_WHILE);
 <S0>xlate       return (DT_TOK_XLATE);
 

@@ -312,11 +321,13 @@
                         yyintdecimal = 1;
 
                         return (DT_TOK_INT);
                 }
 
-<S0>{RGX_IDENT} {
+<S0>{RGX_IDENT} |
+<S0>{RGX_MOD_IDENT}{RGX_IDENT} |
+<S0>{RGX_MOD_IDENT} {
                         return (id_or_type(yytext));
                 }
 
 <S0>{RGX_AGG}   {
                         if ((yylval.l_str = strdup(yytext)) == NULL)