A generic version of scanf programmed in C5
Resumen:
In this paper we present a generic version of \{\\tt scanf\} the standard library function of the C language programmed in C5. C5 is a superset of the C programming language. The main difference between C and C5 is that the type system of C5 supports the definition of types of dependent pairs, i.e., the type of the second member of the pair depends on the value of the first member (which is a type). Another C5 extension is the type initialization expression which is a sequence of C constant expressions that can be attached to type expressions in a type declaration. These extensions make C5 powerful enough to express in a generic form functions with dependent type arguments like and \{\\tt printf\} and \{\\tt scanf\}. The resulting version of \{\\tt scanf\} is a parser generator based on the Earley algorithm that for a given type constructs an object of such type according to the input string.
2004 | |
Dynamic Typing Dependent Pair Type Generic Programming Earley algorithm |
|
Universidad de la República | |
COLIBRI | |
http://hdl.handle.net/20.500.12008/3501 | |
Acceso abierto | |
Licencia Creative Commons Atribución – No Comercial – Sin Derivadas (CC BY-NC-ND 4.0) |
Sumario: | In this paper we present a generic version of \{\\tt scanf\} the standard library function of the C language programmed in C5. C5 is a superset of the C programming language. The main difference between C and C5 is that the type system of C5 supports the definition of types of dependent pairs, i.e., the type of the second member of the pair depends on the value of the first member (which is a type). Another C5 extension is the type initialization expression which is a sequence of C constant expressions that can be attached to type expressions in a type declaration. These extensions make C5 powerful enough to express in a generic form functions with dependent type arguments like and \{\\tt printf\} and \{\\tt scanf\}. The resulting version of \{\\tt scanf\} is a parser generator based on the Earley algorithm that for a given type constructs an object of such type according to the input string. |
---|