@@ -58,14 +58,17 @@ private Node Program() {
5858 // Add main function
5959 if ( IsAtEnd ( ) )
6060 {
61- Error ( PreviousToken ( ) , "Expected main function. " ) ;
61+ Error ( PreviousToken ( ) , "expected main function" ) ;
6262 }
6363 else
6464 {
6565 n . Children . Add ( Func ( ) ) ;
6666 }
6767 }
68- catch ( ParseError ) { }
68+ catch ( ParseError )
69+ {
70+ Errors . ReportError ( "parser: found fatal error... stopping" ) ;
71+ }
6972
7073 return n ;
7174 }
@@ -84,7 +87,7 @@ private Node FuncDecl() {
8487
8588 n . Children . Add ( Datatype ( ) ) ;
8689 n . Children . Add ( Consume ( TokenClass . Identifier ) ) ;
87- n . Children . Add ( Consume ( TokenClass . LeftParen , "Expect '(' after function name. " ) ) ;
90+ n . Children . Add ( Consume ( TokenClass . LeftParen , "expected '(' after function name" ) ) ;
8891
8992 Node parameters = new Node ( "Parameters" ) ;
9093 while ( ! Check ( TokenClass . RightParen ) )
@@ -93,12 +96,12 @@ private Node FuncDecl() {
9396
9497 if ( ! Check ( TokenClass . RightParen ) )
9598 {
96- parameters . Children . Add ( Consume ( TokenClass . Comma , "Expect ',' between parameters. " ) ) ;
99+ parameters . Children . Add ( Consume ( TokenClass . Comma , "expected ',' between parameters" ) ) ;
97100 }
98101 }
99102 n . Children . Add ( parameters ) ;
100103
101- n . Children . Add ( Consume ( TokenClass . RightParen , "Expect ')' after parameters. " ) ) ;
104+ n . Children . Add ( Consume ( TokenClass . RightParen , "expected ')' after parameters" ) ) ;
102105
103106 return n ;
104107 }
@@ -107,27 +110,27 @@ private Node Param() {
107110 Node n = new Node ( "Parameter" ) ;
108111
109112 n . Children . Add ( Datatype ( ) ) ;
110- n . Children . Add ( Consume ( TokenClass . Identifier , "Expect parameter name. " ) ) ;
113+ n . Children . Add ( Consume ( TokenClass . Identifier , "expected parameter name" ) ) ;
111114
112115 return n ;
113116 }
114117
115118 private Node FuncBody ( ) {
116119 Node n = new Node ( "Function Body" ) ;
117120
118- n . Children . Add ( Consume ( TokenClass . LeftBrace , "Expect '{' before function body. " ) ) ;
121+ n . Children . Add ( Consume ( TokenClass . LeftBrace , "expected '{' before function body" ) ) ;
119122 n . Children . Add ( Stmts ( ) ) ;
120123 n . Children . Add ( RetStmt ( ) ) ;
121- n . Children . Add ( Consume ( TokenClass . RightBrace , "Expect '}' after function body. " ) ) ;
124+ n . Children . Add ( Consume ( TokenClass . RightBrace , "expected '}' after function body" ) ) ;
122125
123126 return n ;
124127 }
125128
126129 private Node FuncCall ( ) {
127130 Node n = new Node ( "Function Call" ) ;
128131
129- n . Children . Add ( Consume ( TokenClass . Identifier , "Expect function name. " ) ) ;
130- n . Children . Add ( Consume ( TokenClass . LeftParen , "Expect '(' after function name. " ) ) ;
132+ n . Children . Add ( Consume ( TokenClass . Identifier , "expected function name" ) ) ;
133+ n . Children . Add ( Consume ( TokenClass . LeftParen , "expected '(' after function name" ) ) ;
131134
132135 Node args = new Node ( "Arguments" ) ;
133136 while ( ! Check ( TokenClass . RightParen ) )
@@ -136,12 +139,12 @@ private Node FuncCall() {
136139
137140 if ( ! Check ( TokenClass . RightParen ) )
138141 {
139- args . Children . Add ( Consume ( TokenClass . Comma , "Expect ',' between arguments. " ) ) ;
142+ args . Children . Add ( Consume ( TokenClass . Comma , "expected ',' between arguments" ) ) ;
140143 }
141144 }
142145 n . Children . Add ( args ) ;
143146
144- n . Children . Add ( Consume ( TokenClass . RightParen , "Expect ')' after arguments. " ) ) ;
147+ n . Children . Add ( Consume ( TokenClass . RightParen , "expected ')' after arguments" ) ) ;
145148
146149 return n ;
147150 }
@@ -161,7 +164,7 @@ private Node Datatype() {
161164 return n ;
162165 }
163166
164- throw Error ( Peek ( ) , "Expected 'int', 'float', or 'string'. " ) ;
167+ throw Error ( Peek ( ) , "expected 'int', 'float', or 'string'" ) ;
165168 }
166169
167170 private Node Stmt ( ) {
@@ -198,7 +201,7 @@ private Node Stmt() {
198201 n . Children . Add ( Consume ( TokenClass . Semicolon ) ) ;
199202 break ;
200203 default :
201- throw Error ( Peek ( ) , "Expect statement. " ) ;
204+ throw Error ( Peek ( ) , "expected statement" ) ;
202205 break ;
203206 }
204207
@@ -358,7 +361,7 @@ private Node Cond() {
358361 }
359362 else
360363 {
361- Error ( Peek ( ) , "Expected conditional operator. " ) ;
364+ Error ( Peek ( ) , "expected '<', '>', '<>', or '=' operator" ) ;
362365 }
363366 n . Children . Add ( Expr ( ) ) ;
364367
@@ -470,7 +473,7 @@ private Node Factor()
470473 }
471474 else
472475 {
473- Error ( Peek ( ) , "Expected number, string, identifier, or (expression). " ) ;
476+ Error ( Peek ( ) , "expected number, string, identifier, or (expression)" ) ;
474477 }
475478
476479 return n ;
@@ -595,18 +598,18 @@ private Node Consume(TokenClass type, string message)
595598
596599 private Node Consume ( TokenClass type )
597600 {
598- return Consume ( type , $ "Expected '{ type . ToString ( ) . ToLowerInvariant ( ) } '. ") ;
601+ return Consume ( type , $ "expected '{ type . ToString ( ) . ToLowerInvariant ( ) } '") ;
599602 }
600603
601604 private ParseError Error ( Token token , string message )
602605 {
603606 if ( IsAtEnd ( ) )
604607 {
605- Errors . Error_List . Add ( $ "[line { token . line } ] Error at end: { message } ") ;
608+ Errors . ReportError ( token . line , $ " at end: { message } ") ;
606609 }
607610 else
608611 {
609- Errors . Error_List . Add ( $ "[line { token . line } ] Error: at '{ token . lex } ': { message } ") ;
612+ Errors . ReportError ( token . line , $ " at '{ token . lex } ': { message } ") ;
610613 }
611614
612615 return new ParseError ( ) ;
0 commit comments