Universität Paderborn - Home Universität Paderborn
Die Universität der Informationsgesellschaft

Generating Software from Specifications WS 2013/14 - File TryScan.fw

@=~
~p maximum_input_line_length = infinity

The concrete grammar specifies a sequence of Elements
separated by commas. The elements are named terminals.
~O~<TryScan.con~>~{
Specification:	Sequence.
Sequence:	Sequence ',' Element / Element.
Element:	Ident / Number.
~}

Two tokens are specified here.
Replace them by your favorite token notations and
test the generated scanner and parser:
~O~<TryScan.gla~>~{
Ident:  $[a-zA-Z][a-zA-Z0-9]* [myToken]
Number: $[0-9]+               [myToken]
~}

The following three macros implement a little C module.
It defines a function to be called as a token encoding function.
In the present state it only prints some information on every
accepted token:
~O~<TryScan.HEAD.phi~>~{
#include "TryScan.h"
~}
~O~<TryScan.h~>~{
extern void myToken (char *start, int length, int *class, int *intrinsic);
~}
~O~<TryScan.c~>~{
#include <stdio.h>
#include "TryScan.h"

int count = 0;

void myToken (char *start, int length, int *class, int *intrinsic)
{
  count++;
  printf ("token %d first char >%c<\n", count, *start);
}
~}

Generiert mit Camelot | Probleme mit Camelot? | Geändert am: 23.10.2013