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

diff --git a/testcpp/2/test.g b/testcpp/2/test.g
new file mode 100755 (executable)
index 0000000..6a86c29
--- /dev/null
@@ -0,0 +1,45 @@
+/* Ariel Tamches (tamches@cs.wisc.edu):
+ * This tests linking in a simple non-DLG scanner
+ */
+
+/* We assume that #tokdefs is not employed for this example; i.e.,
+ * ANTLR assigns token numbers.
+ *
+ * ANTLR option -gx must be used to turn off generation of DLG crud (when you
+ * want to define your own token stream).
+ */
+
+/* user must define ANTLRToken outside of #header */
+<<
+typedef ANTLRCommonToken ANTLRToken;   /* use a predefined Token class */
+>>
+
+/* At this point, ANTLRToken and ANTLRTokenStream are defined, user must now
+ * derive a class from ANTLRTokenStream (which embodies the user's scanner)
+ */
+<<#include "MyLexer.h">>
+
+<<
+int main()
+{
+       /* create one of my scanners */
+       MyLexer scan;
+       ANTLRTokenBuffer pipe(&scan);
+       /* create a parser of type Expr hooked to my scanner */
+       Expr parser(&pipe);
+       parser.init();
+       parser.setEofToken(Eof);
+
+       parser.e();                             /* start parsing at rule 'e' of that parser */
+       return 0;
+}
+>>
+
+class Expr {                           /* Define a grammar class */
+
+e      :       IDENTIFIER NUMBER
+               <<fprintf(stderr, "text is %s,%s\n", $1->getText(), $2->getText());>>
+               Eof
+       ;
+
+}