]> pd.if.org Git - pccts/commitdiff
auto commit for import
authorTerence Parr <>
Thu, 14 Sep 1995 00:21:00 +0000 (19:21 -0500)
committerNathan Wagner <nw@hydaspes.if.org>
Sun, 26 Feb 2017 02:16:51 +0000 (20:16 -0600)
testcpp/4/test.g [new file with mode: 0755]

diff --git a/testcpp/4/test.g b/testcpp/4/test.g
new file mode 100755 (executable)
index 0000000..8d71839
--- /dev/null
@@ -0,0 +1,45 @@
+/* This is test.g which tests a simple DLG-based scanner
+ * with user-defined tokens
+ */
+
+/* Here, we use #tokdefs to define token types, but still let DLG do the
+ * lexing. ANTLR will not create a tokens.h file.
+ */
+#tokdefs "mytokens.h"
+
+<<
+#include "DLGLexer.h"          /* include definition of DLGLexer.
+                                                        * This cannot be generated automatically because
+                                                        * ANTLR has no idea what you will call this file
+                                                        * with the DLG command-line options.
+                                                        */
+
+typedef ANTLRCommonToken ANTLRToken;
+
+int main()
+{
+       ANTLRTokenPtr aToken = new ANTLRToken;
+       DLGFileInput in(stdin);
+       DLGLexer scan(&in);
+       ANTLRTokenBuffer pipe(&scan);
+       scan.setToken(mytoken(aToken));
+       Expr parser(&pipe);
+       parser.init();
+
+       parser.e();
+       return 0;
+}
+>>
+
+#token "[\ \t\n]+"     <<skip();>>
+
+class Expr {                           /* Define a grammar class */
+
+e      :       IDENTIFIER NUMBER "@"
+               <<fprintf(stderr, "text is %s,%s\n", $1->getText(), $2->getText());>>
+       ;
+
+}
+
+#token IDENTIFIER      "[a-z]+"
+#token NUMBER          "[0-9]+"