diff options
author | Adrian Thurston <thurston@colm.net> | 2018-05-23 10:15:10 +0200 |
---|---|---|
committer | Adrian Thurston <thurston@colm.net> | 2018-05-23 10:15:10 +0200 |
commit | 75ea06cbf7c922c0bdbc717c2bb7882f06e7ac68 (patch) | |
tree | 2918ff41fa378b9ab06d67477824e5ec1e7e0668 /test/rlhc.d/rlhc-csharp.lm | |
parent | b5e6ba2c784d818c53c2a64af64a466865174c81 (diff) | |
download | colm-75ea06cbf7c922c0bdbc717c2bb7882f06e7ac68.tar.gz |
removed test case directory
tests now maintained outside of code repository
Diffstat (limited to 'test/rlhc.d/rlhc-csharp.lm')
-rw-r--r-- | test/rlhc.d/rlhc-csharp.lm | 473 |
1 files changed, 0 insertions, 473 deletions
diff --git a/test/rlhc.d/rlhc-csharp.lm b/test/rlhc.d/rlhc-csharp.lm deleted file mode 100644 index 1ae36af2..00000000 --- a/test/rlhc.d/rlhc-csharp.lm +++ /dev/null @@ -1,473 +0,0 @@ - -namespace csharp_out - token _IN_ /''/ - token _EX_ /''/ - - lex - token comment / - '//' any* :> '\n' | - '/*' any* :>> '*/' - / - - token id - /[a-zA-Z_][a-zA-Z_0-9]*/ - - token number / - [0-9]+ - / - - token symbol / - '!' | '#' | '$' | '%' | '&' | '(' | ')' | '*' | - '+' | ',' | '-' | '.' | '/' | ':' | ';' | '<' | - '=' | '>' | '?' | '@' | '[' | ']' | '^' | '|' | - '~' / - - literal `{ `} - - token string / - '"' ( [^"\\] | '\\' any ) * '"' | - "'" ( [^'\\] | '\\' any ) * "'" - / - - ignore - /[ \t\v\r\n]+/ - end - - def item - [comment] - | [id] - | [number] - | [symbol] - | [string] - | [`{ _IN_ item* _EX_ `} ] - - def csharp_out - [_IN_ _EX_ item*] -end - -namespace csharp_gen - - global Parser: parser<csharp_out::csharp_out> - - void tok_list( TL: host::tok* ) - { - for Tok: host::tok in repeat(TL) { - switch Tok - case [host::`${ StmtList: stmt* host::`}$] - send Parser "{[stmt_list( StmtList )]}" - case [host::`={ Expr: expr host::`}=] - send Parser "([expr( Expr )])" - case [E: escape] { - Str: str = $E - send Parser - "[Str.suffix( 1 )]" - } - default { - send Parser [Tok] - } - } - } - - void embedded_host( EH: embedded_host ) - { - switch EH - case [`host `( string `, uint `) `={ TL: host::tok* host::`}=] - { - send Parser - "([tok_list( TL )])" - } - case [`host `( string `, uint `) `${ TL: host::tok* host::`}$] - { - send Parser - "{[tok_list( TL )]} - } - case [`host `( string `, uint `) `@{ TL: host::tok* host::`}@] - { - send Parser - [tok_list( TL )] - } - } - - void expr_factor( ExprFactor: expr_factor ) - { - switch ExprFactor - case - [EH: embedded_host] - { - send Parser - [embedded_host( EH )] - } - case [O:`( TL: expr C: `)] - { - send Parser - [O expr(TL) C] - } - case [ident O: `[ TL: expr C: `]] - { - send Parser - [ExprFactor.ident O expr( TL ) C] - } - case ['offset' '(' ident ',' expr ')'] - { - send Parser - [expr( ExprFactor.expr )] - } - case ['deref' '(' ident ',' expr ')'] - { - send Parser - [ ExprFactor.ident '[' expr( ExprFactor.expr ) ']'] - } - case [T: `TRUE] - { - T.data = 'true' - send Parser [T] - } - case [F: `FALSE] - { - F.data = 'false' - send Parser [F] - } - case [N: `nil] - { - N.data = '0' - send Parser [N] - } - case [Number: number] - { - number( Number ) - } - case [E1: embedded_host `-> E2: expr_factor] - { - embedded_host( E1 ) - expr_factor( E2 ) - } - case [`cast Open: `( Type: type Close: `) expr_factor] - { - send Parser [Open] - type( Type ) - send Parser [Close] - expr_factor( ExprFactor._expr_factor ) - } - default { - # Catches cases not specified - send Parser [ExprFactor] - } - } - - void lvalue( ExprFactor: lvalue ) - { - switch ExprFactor - case [EH: embedded_host] - { - send Parser - [embedded_host( EH )] - } - case [ident O: `[ TL: expr C: `]] - { - send Parser - [ExprFactor.ident O expr( TL ) C] - } - case [E1: embedded_host `-> E2: lvalue] - { - embedded_host( E1 ) - lvalue( E2 ) - } - default { - # Catches cases not specified - send Parser [ExprFactor] - } - } - - void expr_factor_op( ExprFactorOp: expr_factor_op ) - { - switch ExprFactorOp - case [B: `! expr_factor_op] - { - send Parser [B] - expr_factor_op( ExprFactorOp._expr_factor_op ) - } - case [T: `~ expr_factor_op] - { - send Parser [T] - expr_factor_op( ExprFactorOp._expr_factor_op ) - } - case [expr_factor] - { - expr_factor( ExprFactorOp.expr_factor ) - } - } - - void expr_bitwise( ExprBitwise: expr_bitwise ) - { - switch ExprBitwise - case [expr_bitwise A: `& expr_factor_op] - { - expr_bitwise( ExprBitwise._expr_bitwise ) - send Parser [A] - expr_factor_op( ExprBitwise.expr_factor_op ) - } - case [expr_factor_op] - { - expr_factor_op( ExprBitwise.expr_factor_op ) - } - } - - void expr_mult( ExprMult: expr_mult ) - { - switch ExprMult - case [expr_mult T: `* expr_bitwise] - { - expr_mult( ExprMult._expr_mult ) - send Parser [T] - expr_bitwise( ExprMult.expr_bitwise ) - } - case [expr_bitwise] - { - expr_bitwise( ExprMult.expr_bitwise ) - } - } - - void expr_add( ExprAdd: expr_add ) - { - switch ExprAdd - case [expr_add Op: add_op expr_mult] - { - expr_add( ExprAdd._expr_add ) - send Parser [Op] - expr_mult( ExprAdd.expr_mult ) - } - case [expr_mult] - { - expr_mult( ExprAdd.expr_mult ) - } - } - - void expr_shift( ExprShift: expr_shift ) - { - switch ExprShift - case [expr_shift Op: shift_op expr_add] - { - expr_shift( ExprShift._expr_shift ) - send Parser [Op] - expr_add( ExprShift.expr_add ) - } - case [expr_add] - { - expr_add( ExprShift.expr_add ) - } - } - - void expr_test( ExprTest: expr_test ) - { - switch ExprTest - case [expr_test Op: test_op expr_shift] - { - expr_test( ExprTest._expr_test ) - send Parser [Op] - expr_shift( ExprTest.expr_shift ) - } - case [expr_shift] - { - expr_shift( ExprTest.expr_shift ) - } - } - - void expr( Expr: expr ) - { - expr_test( Expr.expr_test ) - } - - void type( Type: type ) - { - switch Type - case "s8" - send Parser ['sbyte '] - case "s16" - send Parser ['short '] - case "s32" - send Parser ['int '] - case "s64" - send Parser ['long '] - case "s128" - send Parser ['long long '] - case "uint" - send Parser ['uint '] - default - send Parser [Type] - } - - void number( Number: number ) - { - switch Number - case [`c `( uint `) ] { - Str: str = $Number.uint - send Parser "'\\u[sprintf( "%04x", Str.atoi() )]'" - } - case [`u `( uint `) ] { - send Parser [$Number.uint] - } - default { - send Parser [$Number.sint] - } - } - - void num_list( NumList: num_list ) - { - for Number: number in NumList - send Parser "[number( Number )], " - } - - void stmt( Stmt: stmt ) - { - switch Stmt - case [EH: embedded_host] - { - send Parser - [embedded_host( EH )] - } - case [A: static_array] { - send Parser - "static readonly [type(A.type)] \[\]" - "[A.ident] = { [num_list( A.num_list )] }; - } - case [V: static_value] { - send Parser - "static readonly [V.type] [V.ident] = [V.number]; - } - case [ - 'if' O: `( IfExpr: expr C: `) IfStmt: stmt - ElseIfClauseList: else_if_clause* ElseClauseOpt: else_clause? - ] { - send Parser - "if ( [expr(IfExpr)] ) - " [stmt(IfStmt)] - - for ElseIfClause: else_if_clause in repeat( ElseIfClauseList ) { - match ElseIfClause - ['else if (' ElseIfExpr: expr ')' ElseIfStmt: stmt] - - send Parser - "else if ( [expr(ElseIfExpr)] ) - " [stmt(ElseIfStmt)] - } - - if ( match ElseClauseOpt ['else' ElseStmt: stmt] ) { - send Parser - "else - " [stmt(ElseStmt)] - } - } - case ['while' '(' WhileExpr: expr ')' WhileStmt: stmt] { - send Parser - "while ( [expr(WhileExpr)] ) - " [stmt(WhileStmt)] - } - case ['switch' '(' SwitchExpr: expr ')' '{' StmtList: stmt* '}'] { - send Parser - "switch ( [expr(SwitchExpr)] ) { - " [stmt_list(StmtList)] - "} - } - case [ExprExpr: expr Semi: `;] { - send Parser - [expr(ExprExpr) Semi] - } - case [L: `{ TL: stmt* R: `}] { - send Parser - [L stmt_list(TL) R] - } - case [ - TypeList: opt_const Type: type Ident: ident - OptInit: opt_init Semi: `; - ] - { - send Parser - [TypeList type(Type) Ident] - - if match OptInit [E: `= expr] { - send Parser - [E expr(OptInit.expr)] - } - - send Parser - [Semi] - } - case [Export: export_stmt] - { - send Parser - "#define [Export.ident] [Export.number] - } - case ['fallthrough' ';'] - { - # Nothing needed here. - } - case [index_stmt] - { - send Parser - "int [Stmt.index_stmt.ident]; - } - case [case_block] - { - send Parser - "case [expr( Stmt.case_block.expr )]: - "[stmt_list( Stmt.case_block._repeat_stmt )] - "break; - } - case [default_block] - { - send Parser - "default: - "[stmt_list( Stmt.default_block._repeat_stmt )] - "break; - } - case [case_label] - { - send Parser - "case [expr( Stmt.case_label.expr )]: - } - case [label_stmt] - { - send Parser - "[Stmt.label_stmt.ident]: - "[stmt_list( Stmt.label_stmt._repeat_stmt )] - } - case [entry_loop] - { - send Parser - [stmt_list( Stmt.entry_loop._repeat_stmt )] - } - case [AS: assign_stmt] - { - send Parser - "[lvalue(AS.LValue) AS.assign_op expr(AS.expr)]; - } - default { - # catches unspecified cases - send Parser [Stmt] - } - } - - void stmt_list( StmtList: stmt* ) - { - for Stmt: stmt in repeat( StmtList ) - stmt( Stmt ) - } - - void trans( Output: stream, Start: start ) - { - Parser = new parser<csharp_out::csharp_out>() - - stmt_list( Start._repeat_stmt ) - - CSO: csharp_out::csharp_out = Parser->finish() - - if CSO { - send Output - [@CSO] - } - else { - send stderr - "failed to parse output: [Parser->error] - } - } -end |