File: test.g

package info (click to toggle)
pccts 1.33MR33-3
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 3,212 kB
  • ctags: 5,280
  • sloc: ansic: 46,051; cpp: 3,234; makefile: 957
file content (45 lines) | stat: -rw-r--r-- 1,085 bytes parent folder | download | duplicates (19)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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
	;

}